2016-11-29 16 views
0

flying-saucer/iText를 사용하여 PDF를 생성 할 수 있습니다. 그러나, 나는 스타일 시트를 PDF 렌더링에 포함시키는 방법을 이해할 수 없다.Flying-saucer/iText PDF 파일을 찾을 수 없습니다.

참고로이 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/resources/css/custom1.css"를 입력하면 전달되는 경로는 "http://localhost:8080" 입니다 r, 그것은 css 파일을 보여줍니다. 나는 '경로'를 제거하려했지만 CSS를 얻지 못했습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

0

css 파일을 직접 가리키는 file : /// url 프로토콜을 사용해보십시오 (세 개의 슬래시가 있음).