2016-11-29 143 views
0

我可以使用flying-saucer/iText生成PDF。但是,我無法弄清楚如何獲取包含在PDF渲染中的樣式表。Flying-saucer/iText PDF找不到css文件

我已經使用這個flying-saucer/iText PDF in servlet not finding css file作爲參考。

有參與,所以我將無法使用renderer.setDocument(doc, "http://example.com/something/page.html"); 作爲解決

我已經實現類似於用什麼提問者一個東西多個CSS文件,但它返回一個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」直接進入地址BA r,它顯示了css文件。我嘗試刪除'路徑',但它也沒有得到CSS。我究竟做錯了什麼?

回答

0

嘗試使用file:/// url協議指向(用三個斜線)直接指向css文件。