거대한 카탈로그 (~ 1500 페이지)를 HTML로 생성하고 Jsoup와 openhtmltopdf (비행 접시를 사용하는)을 통해 PDF로 변환합니다. 결과 PDF에서 많은 링크를 클릭 할 수 없으며 이유를 찾을 수 없습니다. 그것은 176 페이지와 10.000 링크가있는 PDF를 생성openhtmltopdf/flying dish : 거대한 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();
}
}
}
:
다음 프로그램을 고려하십시오. 페이지 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이 없습니다.
내 프로그램은 자연스럽게 더 복잡합니다. 그것의 처음 5 개 6 개의 페이지에 모든 연결은 누른 후에, 몇몇은이고 대부분은 그렇지 않다. 어떤 것들은 여전히 클릭 할 수 있지만 완전히 무작위로 보인다.
아무도 도와 줄 수 있습니까? 어떤 아이디어로 인해이 문제가 발생하거나이를 해결할 수 있습니까? openhtmltopdf의 버그?
-
편집 1 : 대신 withW3cDocument의 withHtmlContent를 사용 같은 문제가있다.
문제를 재현하려고 시도했지만 문제가 해결되었습니다. 정확한 코드로 생성 된 PDF는 176 페이지로 구성되며 클릭 가능한 링크는 10k입니다. 나는'jsoup 1.11.2'와'openhtmltopdf-pdfbox-0.0.1-RC11'을 사용했습니다. – obourgain
나 같은데,'openhtmltopdf-pdfbox-0.0.1-RC12'로 완벽하게 작동합니다. 사용하는 라이브러리 버전을 공유해야합니다. – Babl
문제가 해결되었습니다. 전에 RC8과 1.10.2를 사용했습니다. 내 현상금으로 지금 무엇을합니까? – Paflow