首页 > 解决方案 > 如何使用 itextpdf-5.5.* 创建和打开 PDF 文档 [已解决]

问题描述

我必须在我的项目中生成并下载 PDF 报告。我使用过 iText-5.5.13 和 JBoss Web 服务器。正如我之前提到的,我已经更新了我的代码,它会生成 PDF 文件并保存在提到的位置,但是当我尝试打开它时出现文件格式错误。

public class CreatePDFReport {
    try {
     Document document = new Document();
                PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("c:/Users/divya/Desktop/"+empCode+".pdf"));
                PdfReader reader = new PdfReader("c:/Users/divya/Desktop/"+empCode+".pdf");
                PdfStamper stamper =  new PdfStamper(reader, new FileOutputStream("c:/Users/divya/Desktop/"+empCode+".pdf"));
                AcroFields form = stamper.getAcroFields();

                stamper.close();
                //document.close();
                Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "c:/Users/divya/Desktop/"+empCode+".pdf");

     } catch (Exception ex) {
    ex.printStackTrace();
     }
}

这是我现在在服务器日志中遇到的错误。

17:06:13,473 ERROR [stderr] (http-0.0.0.0:80-1) com.itextpdf.text.exceptions.InvalidPdfException: PDF header signature not found.

解决方案 报表正在生成,也可以打开来添加数据到pdf中我们真的不需要使用压模我们可以使用document.add();添加数据。打开和关闭文件也很重要。

public class CreatePDFReport {
    try {
     Document document = new Document(PageSize.A4);
            PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("c:/Users/divya/Desktop/"+empCode+".pdf"));
            document.open();
            int[] coords = new int[] {1, 50, 50, 100, 100} ;
            PdfContentByte canvas = pdfWriter.getDirectContent();
            document.add(new Paragraph("Hello"));
            document.close();
     } catch (Exception ex) {
    ex.printStackTrace();
     }
}

标签: javaeclipseitext

解决方案


推荐阅读