com.itextpdf.text.Document
是 iText 库中用于创建和操作 PDF 文件的核心类之一,它提供了一系列方法,帮助开发者定义 PDF 的页面结构、添加内容(如文本、表格、图片等)并控制文档的元信息(如标题、作者),以下内容将详细介绍其功能、使用方法及注意事项,确保内容符合技术性、权威性与实用性的要求。
Document
类负责创建 PDF 文件的基础框架,定义文档的页面大小、页边距、页眉页脚等属性,管理**add()
方法,向 PDF 中添加段落、表格、图片等元素。newPage()
)或自动分页(当内容超出当前页面时)。Document()
Document(Rectangle pageSize)
PageSize.LETTER
)。Document(Rectangle pageSize, float marginLeft, float marginRight, float marginTop, float marginBottom)
方法名 | 功能描述 |
---|---|
open() | 开始写入文档内容(需在添加元素前调用) |
close() | 结束文档写入并释放资源 |
add(Element element) | 添加段落、表格、图片等元素到当前页面 |
newPage() | 创建新页面 |
setPageSize(Rectangle) | 动态修改后续页面的尺寸 |
addTitle(String) | 设置文档标题(非显示文本,仅元数据) |
addAuthor(String) | 设置文档作者元数据 |
// 1. 创建 Document 对象 Document document = new Document(PageSize.A4, 50, 50, 50, 50); // 页边距 50 单位 // 2. 绑定 PDF 写入器 PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf")); // 3. 打开文档 document.open(); // 4. 添加内容 document.add(new Paragraph("Hello World!")); // 5. 关闭文档 document.close();
// 添加图片 Image image = Image.getInstance("logo.png"); image.scaleAbsolute(100, 100); document.add(image); // 添加表格 PdfPTable table = new PdfPTable(3); table.addCell("姓名"); table.addCell("年龄"); table.addCell("职业"); table.addCell("张三"); table.addCell("30"); table.addCell("工程师"); document.add(table);
document.addTitle("示例文档"); document.addAuthor("技术团队"); document.addSubject("iText API 使用指南");
异常处理
使用 try-catch
块捕获 DocumentException
和 IOException
,确保资源释放。
try { document.open(); // 添加内容 } catch (DocumentException | IOException e) { e.printStackTrace(); } finally { if (document != null && document.isOpen()) { document.close(); } }
资源释放
必须调用 document.close()
,否则生成的 PDF 可能损坏。
中文支持
默认不包含中文字体,需加载自定义字体:
BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED); Font font = new Font(baseFont, 12); document.add(new Paragraph("中文内容", font));
版本兼容性com.itextpdf.text.Document
属于 iText 5.x 版本,若使用 iText 7.x 需改用 com.itextpdf.layout.Document
。
版权协议
iText 5.x 采用 AGPL 协议,商业用途需购买商业许可。
Q1:如何设置不同的页面大小?
通过构造方法或 setPageSize()
指定如 PageSize.LETTER
、PageSize.A3
或自定义尺寸(单位:磅)。
Q2:add()
方法报错“Document is not open”?
确保在 document.open()
之后调用 add()
,且未被提前关闭。
Q3:中文显示为乱码?
必须引入中文字体文件(如 SimSun.ttf
),并设置到 Font
对象中。