0

HTMLコンテンツをPDFに変換するためにFlying Saucer APIwithを使用しています。iText PDF

これには、次のライブラリが必要です。

  • core-renderer.jar
  • iText-2.0.8.jar

ライブラリがサポートしていないため、PDFでレンダリングするためinput type checkboxに使用しています。checkbox image

しかし、画像が来ません。何も表示されていません。

のリソースflyingsaucer-R8.zip

 StringBuilder myHtml = new StringBuilder(); 
 myHtml.append("<html><img src=\"images/invoice-bg.jpg\"></img></html>");
// if you have html source in hand, use it to generate document object
Document document = XMLResource.load( new ByteArrayInputStream( 
myHtml.toString().getBytes() ) ).getDocument();

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument( document, null );

renderer.layout();

String fileNameWithPath = "D:/Temp/PDF-XhtmlRendered.pdf";
FileOutputStream fos = new FileOutputStream( fileNameWithPath );
renderer.createPDF( fos );
fos.close();
System.out.println( "File 1: '" + fileNameWithPath + "' created." );
4

3 に答える 3

0

相対ファイル パスでリソースを使用する場合は、setDocument呼び出しでベース URL を指定する必要があります。

于 2017-12-24T13:48:27.747 に答える
0

画像への完全なパスを指定すると、機能しました。

次の URL を直接叩いて確認しました。

http://localhost:8001/userApi/resources/images/invoice-bg.jpg

同様の問題に直面した場合、これは誰かを助けるかもしれません-

 StringBuilder myHtml = new StringBuilder(); 
 myHtml.append("<html><img 
 src=\""+serverName+"/userApi/resources/images/invoice-bg.jpg\" 
 style=\"margin-top:-4px;\" ></img></html>");
// if you have html source in hand, use it to generate document object
Document document = XMLResource.load( new ByteArrayInputStream( 
myHtml.toString().getBytes() ) ).getDocument();

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument( document, null );

renderer.layout();

String fileNameWithPath = "D:/Temp/PDF-XhtmlRendered.pdf";
FileOutputStream fos = new FileOutputStream( fileNameWithPath );
renderer.createPDF( fos );
fos.close();
System.out.println( "File 1: '" + fileNameWithPath + "' created." );
于 2017-12-27T14:33:10.540 に答える