提问者:小点点

飞碟/iTextPDF找不到css文件


我可以使用飞碟/iText生成PDF。但是,我不知道如何获得PDF渲染中包含的样式工作表。

我用这个飞碟/iTextPDF在servlet没有找到CSS文件作为参考。

涉及多个css文件,因此我无法使用renderer. setDocument(文档,"http://example.com/something/page.html");作为解决方案

我已经实现了一个类似于asker使用的东西,但它返回了一个由:java. nio.file.InvalidPathException:非法字符引起

这是我的代码

      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。我做错了什么?


共1个答案

匿名用户

尝试file:///url协议直接指向css文件(带三个斜杠)。