从包含图像和文本的html生成PDF

时间:2012-07-03 12:10:24

标签: java html imagemagick pdf-generation

我正在寻找一种快速有效的方法来从我的网站创建pdf。 pdf将包含图像以及一些我可以作为html传递的文本。 pdf可以简单地是我传递的html的打印格式。与CutePDF类似的东西。可能吗?怎么样?请分享您的想法。

4 个答案:

答案 0 :(得分:3)

尝试使用适用于大多数情况的wkhtmltopdf。你必须安装这个小的exe / rpm。它使用webkit引擎首先在html中呈现headless browser mode并将网页转换为pdf。安装完成后,可以通过java / php应用程序调用它。值得安装。

以下是链接:http://code.google.com/p/wkhtmltopdf/

PS:我不适用于wkhtmltopdf :),我在其中一个项目中尝试过其他几个像itext但是没有像这个工具一样有效。

答案 1 :(得分:2)

在我做之前一个星期真的可能。我使用java,servlet和jsp来做同样的事情。

步骤:

  1. 阅读html文件并将其保存在字符串中。
  2. 使用ITextRenderer将html转换为pdf
  3. 使用setDocumentFromString()
  4. 从字符串设置渲染文档
  5. 然后使用createPDF()方法创建pdf
    • 您可以将pdf存储在指定的路径或输出流中,我使用了输出流
  6. 示例代码:

    Visit http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html
    protected void doProcess(HttpServletRequest request,
            HttpServletResponse response){
        response.setContentType("application/pdf;");
        response.setHeader("Content-Disposition", "attachment; filename=Filenametodownload.pdf");       
        String reportContent = "<html><body><b>This is sample HTML</b></body></html>";
        ServletOutputStream sos =null;
        try {
            sos = response.getOutputStream();
        } catch (IOException e1) {          
            e1.printStackTrace();
        }
        String st = System.getProperty("user.dir");
        // ITextRenderer is only works fine with compailed version of core-renderer.jar 
        //Jar available in http://wo-repository.doit.com.br/content/repositories/thirdparty/org/xhtmlrenderer/core-renderer/R8-final/
        ITextRenderer renderer = new ITextRenderer();   
        //System.out.println(reportContent);
        renderer.setDocumentFromString(reportContent);
        renderer.layout();
        try {
            renderer.createPDF(sos);
        } catch (DocumentException e) {         
            e.printStackTrace();
        }
    
        try {       
            sos.close();
            session.removeAttribute("ReportContent");
        } catch (IOException e) {           
            e.printStackTrace();
        }
    }
    

    注意:包括itext.jar和core-renderer.jar

    尝试这种方式,你可以做到......一切顺利......

答案 2 :(得分:0)

如果您想在服务器端进行HTML-&gt; PDF转换,并且如果您的服务器代码已经在Java或C#/ .NET中,则可以使用iText中的XMLWorker。这是一个demo-page和一些documentation(已过时,但很快就会更新)。

OTOH,如果你想在客户端进行转换,那么PDF打印机怎么样?我个人最喜欢的是PDFCreator。请注意,使用PDF打印机只是一种解决方案,而不是任何浏览您网站的用户。

答案 3 :(得分:0)

如果您不想安装WKHTMLTOPDF等工具但仍需要完整的CSS,HTML和Javascript功能,则可以使用Sprint PDF。这是一个带有大量选项的在线API。