PDFTron - HTML2PDF - 操作文件查找失败
PDFTron - HTML2PDF - Operation file seek failed
将批量 html 文件转换为 pdf 时,出现转换失败错误。对于相同的 html 文件,有时它可以工作。主要是每当有更多文件时,一两个文件就会失败。
PdfTron 版本:2016 年 9 月,
环境:Linux、Java 8
已关注本文,https://www.pdftron.com/pdfnet/samplecode/HTML2PDFTest.java.html
String inputHtml = "/myfolder/output.html";
String outputPdf = "/myfolder/output.pdf";
PDFNet.initialize();
PDFDoc doc = new PDFDoc();
HTML2PDF converter = new HTML2PDF();
converter.setLandscape(false);
converter.setPaperSize(9);
converter.insertFromHtmlString(new String(Files.readAllBytes(Paths.get(inputHtml))));
if (converter.convert(doc)) {
doc.initSecurityHandler();
doc.save(outputPdf, SDFDoc.e_linearized, null);
} else {
log.error("Conversion failed. HTTP Code: " + converter.getHTTPErrorCode() + "\n" + converter.getLog());
}
输出
Conversion failed. HTTP Code: 0
Loading pages (1/6)
[> ] 0%
[======> ] 10%
[=================> ] 29%
[===================> ] 33%
[=====================> ] 36%
[============================================================] 100%
Counting pages (2/6)
[============================================================] Object 1 of 1
Resolving links (4/6)
[============================================================] Object 1 of 1
Loading headers and footers (5/6)
Printing pages (6/6)
[> ] Preparing
[==============================> ] Page 1 of 2
[============================================================] Page 2 of 2
Done
Post Process Error: Operation file seek failed
StdFile.cpp:478
DataWrite
在 java 中,您不能在表示路径的字符串中使用简单的反斜杠。字符串 "\myfolder\output.pdf"
等于 "myfolderoutput.pdf"
。使用双反斜杠 (\) 或正斜杠 (/)
使用的临时文件夹很可能存在一些read/write权限问题。
请尝试以下操作。
PDFNet.setTempPath(folder_that_you_know_your_process_can_read_write);
PDFNet.initialize();
为 HTML2PDF 模块中存在的 lib 文件添加可执行权限对我有用(在 macos 上)
chmod a+x HTML2PDFMac/html2pdf_chromium.dylib
chmod a+x HTML2PDFMac/libswiftshader_libGLESv2.dylib
chmod a+x HTML2PDFMac/libswiftshader_libEGL.dylib
将批量 html 文件转换为 pdf 时,出现转换失败错误。对于相同的 html 文件,有时它可以工作。主要是每当有更多文件时,一两个文件就会失败。
PdfTron 版本:2016 年 9 月, 环境:Linux、Java 8
已关注本文,https://www.pdftron.com/pdfnet/samplecode/HTML2PDFTest.java.html
String inputHtml = "/myfolder/output.html";
String outputPdf = "/myfolder/output.pdf";
PDFNet.initialize();
PDFDoc doc = new PDFDoc();
HTML2PDF converter = new HTML2PDF();
converter.setLandscape(false);
converter.setPaperSize(9);
converter.insertFromHtmlString(new String(Files.readAllBytes(Paths.get(inputHtml))));
if (converter.convert(doc)) {
doc.initSecurityHandler();
doc.save(outputPdf, SDFDoc.e_linearized, null);
} else {
log.error("Conversion failed. HTTP Code: " + converter.getHTTPErrorCode() + "\n" + converter.getLog());
}
输出
Conversion failed. HTTP Code: 0
Loading pages (1/6)
[> ] 0%
[======> ] 10%
[=================> ] 29%
[===================> ] 33%
[=====================> ] 36%
[============================================================] 100%
Counting pages (2/6)
[============================================================] Object 1 of 1
Resolving links (4/6)
[============================================================] Object 1 of 1
Loading headers and footers (5/6)
Printing pages (6/6)
[> ] Preparing
[==============================> ] Page 1 of 2
[============================================================] Page 2 of 2
Done
Post Process Error: Operation file seek failed
StdFile.cpp:478
DataWrite
在 java 中,您不能在表示路径的字符串中使用简单的反斜杠。字符串 "\myfolder\output.pdf"
等于 "myfolderoutput.pdf"
。使用双反斜杠 (\) 或正斜杠 (/)
使用的临时文件夹很可能存在一些read/write权限问题。
请尝试以下操作。
PDFNet.setTempPath(folder_that_you_know_your_process_can_read_write);
PDFNet.initialize();
为 HTML2PDF 模块中存在的 lib 文件添加可执行权限对我有用(在 macos 上)
chmod a+x HTML2PDFMac/html2pdf_chromium.dylib
chmod a+x HTML2PDFMac/libswiftshader_libGLESv2.dylib
chmod a+x HTML2PDFMac/libswiftshader_libEGL.dylib