翻译|使用教程|编辑:吉炜炜|2025-03-26 11:49:26.000|阅读 5 次
概述:在 PDF 文档中添加页眉和页脚有助于保持一致的版式和专业的外观。本文将介绍如何使用 Spire.PDF for Java,通过 Java 在现有的 PDF 文档中添加页眉和页脚,并提供详细的步骤和代码示例。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
在 PDF 文档中添加页眉和页脚有助于保持一致的版式和专业的外观。页眉通常位于页面顶部,可显示文档标题、作者姓名或公司名称,而页脚位于页面底部,常用于添加页码、日期或法律声明。这些元素对于报告、合同和正式文件至关重要,不仅提升了可读性,还符合规范要求。本文将介绍如何使用 Spire.PDF for Java,通过 Java 在现有的 PDF 文档中添加页眉和页脚,并提供详细的步骤和代码示例。
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。如果您使用 ,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>//repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf</artifactId> <version>11.2.3</version> </dependency> </dependencies>
在使用 Spire.PDF for Java 处理现有的 PDF 文档时,需要了解其坐标系的原点位于页面左上角,X 轴向右延伸,Y 轴向下延伸。向页面添加页眉是指在页面上方的空白区域内插入内容,如文本、图片、自动字段和形状等;而添加页脚实际上就是在页面底部的空白区域插入内容。
如果空白区域不足以容纳您要添加的内容,您可以考虑增大 PDF 页边距。
Spire.PDF for Java 帮助用户通过 PdfCanvas.drawString()、PdfCanvas.drawImage() 和 PdfCanvas.drawLine() 等方法在 PDF 文档的页面上绘制文本、图像和形状。为了在页眉中添加页码、章节、日期等动态信息,您需要使用自动字段。Spire.PDF for Java 提供了 PdfPageNumberField 类、PdfSectionNumberField 类和 PdfCreationDateField 类等来实现这些数据的动态添加。
下面是使用 Spire.PDF for Java 向 PDF 文档添加包含文本、图像、日期和线条的页眉的详细步骤:
同样的,PdfCanvas.drawString()、PdfCanvas.drawImage() 和 PdfCanvas.drawLine() 方法也可以用来在 PDF 文档中添加页脚。通过调整 X 轴和 Y 轴坐标,你可以在 PDF 页面上的任何位置绘制想要添加的信息。如果需要在页脚添加动态数据,如页码、章节号、日期等,可以使用由 Spire.PDF for Java 提供的 PdfPageNumberField、PdfPageCountField、PdfSectionNumberField 等类,以实现动态信息的自动添加。
以下是使用 Spire.PDF for Java 在 PDF 文档中添加包含图像和页码的页脚的具体流程:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.automaticfields.PdfCompositeField;
import com.spire.pdf.automaticfields.PdfCreationDateField;
import com.spire.pdf.graphics.*;
import java.awt.*;
public class AddHeaderToPdf {
public static void main(String[] args) {
// 创建一个 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载 PDF 文件
doc.loadFromFile("/示例.pdf");
// 加载添加到页眉的图像
PdfImage headerImage = PdfImage.fromFile("/Logo1.png");
// 获取图像的像素宽度
float width = headerImage.getWidth();
// 将像素转换为点
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
float pointWidth = unitCvtr.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);
// 自定义页眉文本
String headerText = "冰蓝科技\nwww.e-iceblue.cn";
// 创建字体
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("DengXian", Font.BOLD, 12),true);
// 创建笔刷
PdfBrush brush = PdfBrushes.getPurple();
// 创建画笔
PdfPen pen = new PdfPen(brush, 1.0f);
// 创建文档创建日期字段
PdfCreationDateField creationDateField = new PdfCreationDateField(font, brush);
creationDateField.setDateFormatString("yyyy-MM-dd");
// 创建组合字段用以显示文本和日期
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "创建时间: {0}", creationDateField);
compositeField.setLocation(new Point(55, 58));
// 遍历文档中的页面
for (int i = 0; i < doc.getPages().getCount(); i++)
{
// 获取当前页面
PdfPageBase page = doc.getPages().get(i);
// 将图像绘制到页面上方空白区域
page.getCanvas().drawImage(headerImage, page.getActualSize().getWidth() - pointWidth - 55, 20);
// 绘制文本
page.getCanvas().drawString(headerText, font, brush, 55, 33);
// 绘制线条
page.getCanvas().drawLine(pen, new Point(55, 73), new Point((int)page.getActualSize().getWidth() - 55, 70));
// 将组合字段绘制到页眉区域
compositeField.draw(page.getCanvas());
}
// 保存修改后的文档
doc.saveToFile("/添加页眉.pdf");
doc.dispose();
}
}
Java 在现有 PDF 文档中添加页脚
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.automaticfields.PdfCompositeField;
import com.spire.pdf.automaticfields.PdfPageCountField;
import com.spire.pdf.automaticfields.PdfPageNumberField;
import com.spire.pdf.graphics.PdfBrush;
import com.spire.pdf.graphics.PdfBrushes;
import com.spire.pdf.graphics.PdfImage;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
public class AddFooterToPdf {
public static void main(String[] args) {
// 创建一个 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载 PDF 文件
doc.loadFromFile("/示例.pdf");
// 加载一张图片
PdfImage footerImage = PdfImage.fromFile("/banner.png");
// 创建字体
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("DengXian", Font.BOLD, 12),true);
// 创建笔刷
PdfBrush brush = PdfBrushes.getWhite();
// 创建当前页码字段
PdfPageNumberField pageNumberField = new PdfPageNumberField();
// 创建总页数字段
PdfPageCountField pageCountField = new PdfPageCountField();
// 创建一个组合字段,将页码和页数字段组合为字符串
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "第 {0} 页,共 {1} 页", pageNumberField, pageCountField);
// 获取字体大小
Dimension2D fontSize = font.measureString(compositeField.getText());
// 获取页面大小
Dimension2D pageSize = doc.getPages().get(0).getSize();
// 设置组合字段的位置
compositeField.setLocation(new Point2D.Double((pageSize.getWidth() - fontSize.getWidth())/2, pageSize.getHeight() - 45));
// 遍历文档中的页面
for (int i = 0; i < doc.getPages().getCount(); i++)
{
// 获取指定页面
PdfPageBase page = doc.getPages().get(i);
// 在页面底部空白区域绘制图片
page.getCanvas().drawImage(footerImage, 55, pageSize.getHeight() - 65, pageSize.getWidth() - 110, 50);
// 在页面底部空白区域绘制组合字段
compositeField.draw(page.getCanvas());
}
// 保存结果文档
doc.saveToFile("/添加页脚.pdf");
doc.dispose();
}
}
————————————————————————————————————————
关于慧都科技:
慧都科技是专注软件工程、智能制造、石油工程三大行业的数字化解决方案服务商。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技E-iceblue的官方授权代理商,提供E-iceblue系列产品免费试用,咨询,正版销售等于一体的专业化服务。E-iceblue是国产文档处理领域的优秀产品,支持国产化信创,帮助企业高效构建文档处理的应用程序。
欢迎下载|体验更多E-iceblue产品
获取更多信息请咨询 ;技术交流Q群(767755948)
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
文章转载自:慧都网