Java 带有xhtmlrenderer(iText)的书签
我正在使用XHTMLender(也称为飞碟)和iText将HTML转换为PDF。我如何用这个创建书签?一个有经验的人有一个小例子吗Java 带有xhtmlrenderer(iText)的书签,java,html,pdf,flying-saucer,xhtmlrenderer,Java,Html,Pdf,Flying Saucer,Xhtmlrenderer,我正在使用XHTMLender(也称为飞碟)和iText将HTML转换为PDF。我如何用这个创建书签?一个有经验的人有一个小例子吗 提前感谢。R6中似乎添加了书签,但《用户指南》只提供了一个简单的参考。向作者发送TODO,以便稍后添加示例 搜索论坛,我发现: 一些文本 一些文本 一些文本 一些文本一些文本一些文本一些文本一些文本一些文本 还有一些文字 ` 因此,添加书签似乎无异于在中声明书签,并在中将它们引用为锚定 这将适用于您现有的XHTML->PDF转换,而无需任何代码更改。上述方法正
提前感谢。R6中似乎添加了书签,但《用户指南》只提供了一个简单的参考。向作者发送TODO,以便稍后添加示例 搜索论坛,我发现:
一些文本
一些文本
一些文本
一些文本一些文本一些文本一些文本一些文本一些文本
还有一些文字
`
因此,添加书签似乎无异于在
中声明书签,并在
中将它们引用为锚定
这将适用于您现有的XHTML->PDF转换,而无需任何代码更改。上述方法正确 FlyingSacer-R8-src中的示例已修改,用于书签演示
公共类PDFRenderToMultiplePages{
公共静态void main(字符串[]args)引发异常{
OutputStream os=null;
试一试{
最终字符串[]输入=新字符串[]{newPageHtml(1,“红色”),
newPageHtml(2,“蓝色”)、newPageHtml(3,“绿色”)};
最终文件outputFile=File.createTempFile(“flyingsacure”,“.pdf”);
os=新文件输出流(outputFile);
ITextRenderer=newitextrenderer();
renderer.setDocumentFromString(输入[0]);
layout();
renderer.createPDF(os,false);
BlockBox rootBox=renderer.getRootBox();
for(int i=1;i
Hi,Book marks有些问题,上面的示例生成了书签1、书签1、书签2、书签1、书签2、书签3,而不是三个书签。这和for循环有关吗?谢谢。谢谢,但我不希望第一页有页眉或页脚,而是希望它从第二页开始计数。我将如何改变你的例子来做到这一点?谢谢。对不起,我不明白。您能告诉我页眉/页脚是如何与书签连接的吗?是否可以在本地pdf文档中创建指向特定页面的超链接
<html>
<head>
<bookmarks>
<bookmark name="A bookmark" href="#bm" />
<bookmark name="A bookmark 2" href="#bm2" />
<bookmark name="A bookmark 3" href="#bm3" />
<bookmark name="A bookmark 4" href="#bm4" />
<bookmark name="A bookmark invalid" href="#bm99" />
</bookmarks>
</head>
<body>
<div style="line-height: 100%; font-size: 12pt; page-break-before: always;">
<a name="bm">some text</a>
</div>
<div style="line-height: 100%; font-size: 12pt; page-break-before: always;">
<a name="bm2">some text</a>
</div>
<div style="line-height: 100%; font-size: 12pt; page-break-before: always;">
<a name="bm3">some text</a>
</div>
<div style="line-height: 100%; font-size: 12pt; page-break-before: always;">
<p>some text</p> <p>some text</p> <p>some text</p> <p>some text</p> <p>some text</p> <p>some text</p>
<p><a name="bm4">and some more text</a></p>
</div>
</body>
</html>`
public class PDFRenderToMultiplePages {
public static void main(String[] args) throws Exception {
OutputStream os = null;
try {
final String[] inputs = new String[] { newPageHtml(1, "red"),
newPageHtml(2, "blue"), newPageHtml(3, "green") };
final File outputFile = File.createTempFile("FlyingSacuer", ".pdf");
os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(inputs[0]);
renderer.layout();
renderer.createPDF(os, false);
BlockBox rootBox = renderer.getRootBox();
for (int i = 1; i < inputs.length; i++) {
renderer.setDocumentFromString(inputs[i]);
renderer.layout();
renderer.writeNextDocument();
}
renderer.finishPDF();
System.out.println("Sample file with " + inputs.length
+ " documents rendered as PDF to " + outputFile);
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) { /* ignore */
}
}
}
}
private static String newPageHtml(int pageNo, String color) {
return "<html><head><bookmarks>"
+ "<bookmark name=\"bookmark"
+ pageNo
+ "\" href=\"#bookMark\"/></bookmarks></head>"
+ "<body><div style=\"color:"
+ color
+ ""
+ ";\"><a name=\"bookMark\">Book Mark Example</a></div></body></html>";
}
}