【问题标题】:no image displayed using Flying Saucer API in maven project在 maven 项目中使用 Flying Saucer API 没有显示图像
【发布时间】:2017-12-18 12:49:44
【问题描述】:

我正在使用 Flying Saucer APIiText PDF 将 HTML 内容转换为 PDF。

这需要以下库:

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

由于库不支持input type checkbox,所以我使用checkbox image 来呈现PDF。

但是,图像没有出现。它什么也没显示。

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." );

【问题讨论】:

    标签: java maven pdf flying-saucer xhtmlrenderer


    【解决方案1】:

    您应该使用最新版本的飞碟(当前为 9.1.9)。您可以通过mvnrepository 找到。

    您还应该检查文件images/invoice-bg.jpg 是否存在并且可以从项目的根目录访问。

    如果您的路径正确,生成的 PDF 将包含您的图像。

    【讨论】:

    • 实际上,我正在使用一个简单的 java 项目获取图像,但是当我使用 maven 项目时,图像不会以 PDF 格式出现。所以不是飞碟版的问题。它与maven位置有关。我需要将图像文件夹位置放在我的pom.xml 中吗?我的 maven 项目的图像位于 resources/images 文件夹中。
    【解决方案2】:

    如果您使用具有相对文件路径的资源,则需要在 setDocument 调用中指定一个基本 URL。

    【讨论】:

      【解决方案3】:

      给出图像的完整路径,然后它就可以工作了。

      我通过直接点击以下 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." );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 2020-07-04
        相关资源
        最近更新 更多