我生成大量目录(~1500页)作为HTML,并通过Jsoup转换为openhtmltopdf(使用飞碟)转换为PDF。在生成的PDF中,许多链接不可点击,我找不到原因。
考虑以下计划:
import org.jsoup.helper.W3CDom;
import org.w3c.dom.Document;
import org.jsoup.Jsoup;
import com.openhtmltopdf.pdfboxout.PdfRendererBuilder;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws Exception {
PdfRendererBuilder pdfBuilder = new PdfRendererBuilder();
String html = "<html><head></head><body>";
for (Integer i = 0; i < 10000; i++) {
html += "<a href='http://www.google.de?q=" + i + "'>blabla</a> <br>";
}
html += "</body></html>";
File file = new File("/tmp/tmp.pdf");
FileOutputStream fop = new FileOutputStream(file);
W3CDom w3cDom = new W3CDom();
Document w3cDoc = w3cDom.fromJsoup(Jsoup.parse(html));
pdfBuilder.withW3cDocument(w3cDoc, "/");
pdfBuilder.toStream(fop);
try {
pdfBuilder.run();
} catch (Exception e) {
e.printStackTrace();
}
}
}
它创建一个包含176页和10.000个链接的PDF。在第1页到第3页,它们是可点击的,之后它们不是,虽然相同。最后一个可点击的链接是数字112,在我找到的源代码中:
870 0 obj
<<
/W 0.0
/S /S
>>
endobj
871 0 obj
<<
/S /URI
/URI (http://www.google.de?q=111)
>>
endobj
872 0 obj
<<
/W 0.0
/S /S
>>
endobj
873 0 obj
<<
/S /URI
/URI (http://www.google.de?q=112)
>>
endobj
874 0 obj
<<
/W 0.0
/S /S
>>
endobj
875 0 obj
<<
/F1 1049 0 R
>>
endobj
显然,在编号112之后,注释对象中不再存储任何URL。
我的程序自然要复杂得多。在结果的前五或六页上,所有链接都是可点击的,之后有些链接是大部分都没有。哪些仍然可点击似乎是完全随机的。
有人可以帮忙吗?任何想法可能导致此问题或如何解决它? openhtmltopdf中的一个错误?
-
编辑1: 使用withHtmlContent而不是withW3cDocument会遇到同样的问题。
答案 0 :(得分:0)
生成的PDF与jsoup 1.11.2
和openhtmltopdf-pdfbox-0.0.1-RC11
完美配合。
此问题可能是由openhtmltopdf
旧版本中的错误引起的,该错误已修复。