Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从包含图像和文本的html生成PDF_Java_Html_Imagemagick_Pdf Generation - Fatal编程技术网

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

Java 从包含图像和文本的html生成PDF,java,html,imagemagick,pdf-generation,Java,Html,Imagemagick,Pdf Generation,我正在寻找一种快速有效的方法,从我的网站创建pdf。pdf将有图像和一些文本,我可以作为html传递。pdf可以是我传递的html的打印格式。类似于CutePDF的功能。可能吗?怎么用?请分享您的想法。尝试使用适用于大多数情况的wkhtmltopdf。你必须安装这个小的exe/rpm。它首先使用webkit引擎以headless浏览器模式呈现html,并将网页转换为pdf。安装后,可以通过java/php应用程序调用它。它值得安装 以下是链接: 注:我不为wkhtmltopdf:)工作,我在我的

我正在寻找一种快速有效的方法,从我的网站创建pdf。pdf将有图像和一些文本,我可以作为html传递。pdf可以是我传递的html的打印格式。类似于CutePDF的功能。可能吗?怎么用?请分享您的想法。

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

以下是链接:


注:我不为
wkhtmltopdf
:)工作,我在我的一个项目中尝试了其他几个类似itext的工具,但没有像这个工具那样有效

如果您想在服务器端进行HTML->PDF转换,并且假设您的服务器代码已经是Java或C#/.NET格式,那么可以使用from iText。这里有一个和一些(已经过时,但应该很快更新)


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

如果您不想安装WKHTMLTOPDF之类的工具,但仍然需要完整的CSS、HTML和Javascript功能,您可以使用。这是一个在线API,提供了大量的选项。

在我做这件事的前一周,这真的是可能的。我用java、servlet和jsp做了同样的事情

步骤:
  • 读取html文件并将其置于字符串中
  • 使用ITextRenderer将html转换为pdf
  • 使用setDocumentFromString()从字符串设置呈现文档
  • 然后使用createPDF()方法创建pdf
    • 您可以将pdf存储在指定的路径或输出流中,我已经使用了输出流
  • 示例代码:
    访问http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html
    受保护的无效数据处理(HttpServletRequest请求,
    HttpServletResponse(响应){
    response.setContentType(“application/pdf;”);
    setHeader(“内容处置”、“附件;文件名=Filenametodownload.pdf”);
    String reportContent=“这是示例HTML”;
    ServletOutputStream sos=null;
    试一试{
    sos=response.getOutputStream();
    }捕获(IOE1){
    e1.printStackTrace();
    }
    字符串st=System.getProperty(“user.dir”);
    //ITextRenderer仅适用于core-renderer.jar的Compiled版本
    //罐子可在http://wo-repository.doit.com.br/content/repositories/thirdparty/org/xhtmlrenderer/core-renderer/R8-final/
    ITextRenderer=newitextrenderer();
    //System.out.println(报告内容);
    renderer.setDocumentFromString(reportContent);
    layout();
    试一试{
    createPDF(sos);
    }捕获(文档异常){
    e、 printStackTrace();
    }
    试试{
    sos.close();
    删除属性(“报告内容”);
    }捕获(IOE){
    e、 printStackTrace();
    }
    }
    
    注意:包括itext.jar和core-renderer.jar


    试着用你能做到的方式。。。祝您一切顺利。

    是的。。它呈现,当你在浏览器中呈现html时,它会生成具有精确外观和感觉的pdf(chrome使用webkit)。+1我们从2年前开始在生产中使用
    wkhtmltopdf
    ,这非常棒。您可以看看tooSure,它将尝试
    phantomjs
    。。看起来很有趣。
    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();
        }
    }