我可以使用fly-saucer / iText生成PDF。但是,我无法弄清楚如何将样式表包含在PDF渲染中。
我已使用此flying-saucer/iText PDF in servlet not finding css file作为参考。
涉及多个css文件,因此我将无法使用renderer.setDocument(doc, "http://example.com/something/page.html");
作为解决方案
我已经实现了类似于提问者使用的内容,但它返回了Caused by: java.nio.file.InvalidPathException: Illegal char <:> at index 4: http://localhost:8080/proj/resources/css/custom1.css
错误
这是我的代码
StringBuilder bui = new StringBuilder();
bui.append("<html><head><style>");
bui.append(readFile(path+"/resources/css/custom1.css", Charsets.UTF_8));
bui.append(readFile(path+"/resources/css/custom2.css", Charsets.UTF_8));
bui.append(readFile(path+"/resources/css/custom3.css", Charsets.UTF_8));
bui.append("</style></head>");
bui.append("<body><div><table>");
bui.append( xhtml_file );
bui.append("</table></div></body></html>");
InputStream stream = new ByteArrayInputStream(bui.toString().getBytes( StandardCharsets.UTF_8 ));
Document doc = tidy.parseDOM(stream, null);
File outputFile = new File(directory+ "FILENAME" +".pdf");
os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(os, false);
renderer.finishPDF();
传递的路径是“http://localhost:8080” 如果我直接在地址栏中输入“http://localhost:8080/resources/css/custom1.css”,它会显示css文件。我尝试删除'路径',但它也没有获得CSS。我做错了什么?
答案 0 :(得分:0)
尝试使用file:/// url协议指向(带有三个斜杠)直接指向css文件。