java - 如何使用 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();
}
}
解决方案
推荐阅读
- java - 当我尝试使用 HQL 映射对象时出现“找不到查询类的持久类”错误
- firebase - Firebase 托管重定向到 shebang
- json - Swift Codable:是否可以按json响应中返回的顺序获取字典键:值?
- c# - 从外部范围引用事件。事件空 c#
- reactjs - 免费可编辑表
- autocomplete - 使用响应式表单时 nz-autocomplete 的默认值
- linux - 我如何遍历关键字的出现频率
- amazon-web-services - c# 中用于 API 网关 websockets 的 aws CDK 构造
- python-3.x - 当 regex101 以其他方式显示时,Python 正则表达式不匹配
- google-apps-script - 添加 Gmail 发送权限