Java 在PDF中插入页眉、页脚

这篇具有很好参考价值的文章主要介绍了Java 在PDF中插入页眉、页脚。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在处理PDF文档时,有时需要为文档中的每一页添加页眉和页脚,以包含一些有用的信息,如文档标题、章节名称、日期、页码等。对于需要自动化处理的场景,或者需要在大量文档中添加一致的页眉和页脚,可以通过编程的方式来实现。本文将介绍如何使用Java为PDF文件添加页眉、页脚。

所需工具:Free Spire.PDF for Java 免费库。可以点击链接下载最新版本并手动添加引用到你的Java项目中,同时也支持通过Mave仓库安装。

方法简介:

在以下示例中,我们用到了 PdfCanvas 类的DrawString()DrawImage()DrawLine() 方法,分别用于在PDF页面上指定位置绘制文本、图片和线条。

如果要添加动态的信息如页码、页数、章节编号等,则可以使用Free Spire.PDF for Java提供的PdfPageNumberFieldPdfPageCountField PdfSectionNumberField 类,然后再使用Draw() 方法将其绘制到PDF页眉或页脚位置。

 

示例代码:

1. 使用Java在PDF中插入页眉

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
 
import java.awt.*;
 
public class PDFHeader {
 
    public static void main(String[] args) {
 
        //加载PDF文档
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("考核.pdf");
 
        //加载图片
        PdfImage headerImage = PdfImage.fromFile("logo.jpg");
 
        //获取图片宽度
        float width = headerImage.getWidth();
        PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
        float pointWidth = unitCvtr.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);
 
        //指定页眉文本
        String headerText = "年度绩效考核\nAAA有限责任公司";
 
        //创建字体
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", Font.BOLD, 12),true);
 
        //创建画笔
        PdfBrush brush = PdfBrushes.getRed();
        PdfPen pen = new PdfPen(PdfBrushes.getBlack(), 1.0f);
 
        //遍历所有PDF页面
        for (int i = 0; i < pdf.getPages().getCount(); i++)
        {
            //获取指定页面
            PdfPageBase page = pdf.getPages().get(i);
 
            //在顶部空白区域绘制图像
            page.getCanvas().drawImage(headerImage, page.getActualSize().getWidth() - pointWidth - 55, 20);
 
            //在顶部空白区域绘制文本
            page.getCanvas().drawString(headerText, font, brush, 55, 30);
 
            //在顶部空白区域绘制一条线
            page.getCanvas().drawLine(pen, new Point(55, 70), new Point((int)page.getActualSize().getWidth() - 55, 70));
 
        }
 
        //保存生成PDF文件
        pdf.saveToFile("PDF页眉.pdf");
        pdf.dispose();
    }
}

以上代码遍历了PDF文档的所有页面,并在每一页的页眉位置添加了文本、图片和分隔线,运行后效果图如下:

Java 在PDF中插入页眉、页脚

 

 

2. 使用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.*;
 
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
 
public class PDFFooter {
 
    public static void main(String[] args) {
 
        //加载PDF文档
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("考核.pdf");
 
        //创建字体
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", Font.BOLD, 12),true);
 
        //创建画笔
        PdfBrush brush = PdfBrushes.getBlack();
        PdfPen pen = new PdfPen(PdfBrushes.getBlack(), 1.0f);
 
        //创建页码字段
        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 = pdf.getPages().get(0).getSize();
 
        //设置复合字段的位置
        compositeField.setLocation(new Point2D.Double((pageSize.getWidth() - fontSize.getWidth())/2,  pageSize.getHeight() - 45));
 
        //遍历PDF页面
        for (int i = 0; i < pdf.getPages().getCount(); i++)
        {
            //获取指定页
            PdfPageBase page = pdf.getPages().get(i);
 
            //在底部空白区域绘制一条线
            page.getCanvas().drawLine(pen, new Point(72, (int) (pageSize.getHeight() - 60)), new Point((int)pageSize.getWidth() - 72, (int) pageSize.getHeight()- 60));
 
            //在底部空白区域绘制复合字段
            compositeField.draw(page.getCanvas());
        }
 
        //保存生成PDF文件
        pdf.saveToFile("PDF页脚.pdf");
        pdf.dispose();
    }
}

以上代码遍历了PDF文档的所有页面,并在每一页的页脚位置添加了对应的页码、页数信息以及一条分隔线,运行后效果图如下:

Java 在PDF中插入页眉、页脚

 

小结:

在不破坏PDF文档布局的情况下,我们可以使用Free Spire.PDF for Java免费库将所需的元素绘制到PDF页面顶部和底部的指定位置来生成自定义页眉页脚,提高PDF文档的可读性和专业性。

此外,Free Spire.PDF for Java免费库还支持其他一些操作PDF文档的功能,更多示例可以点击了解:

https://www.e-iceblue.cn/spirepdfjava/spire-pdf-for-java-program-guide-content.html文章来源地址https://www.toymoban.com/news/detail-843282.html

到了这里,关于Java 在PDF中插入页眉、页脚的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 重新认识Word——页眉页脚

    我们之前已经全面的构建了我们的文章,现在我们来了解一下,我们毕业论文的页眉(页面信息)页脚(页码)的设置。 一份Word文档是由 字,行,段,页,节 组成的,前面几个还比较好理解,那这个 节 是干什么的呢?其实节就是 不同的格式 ,Word里面不同的章节可能对页

    2024年02月01日
    浏览(41)
  • python 学习笔记20 批量修改页眉页脚

    需求:修改指定目录下所有文件的页眉页脚,或者往里面添加内容。 1. 这里做了word的实现和excel的实现,如下: 需要先安装 pip3 install pywin32,另外页眉页脚格式设置可以参考: word: 浅谈Word.Application,关于js操作word文档的使用_new word.application-CSDN博客 excel: Python操作Excel教

    2024年02月04日
    浏览(41)
  • 使用FreeMarker生成word文件自定义每页页眉或页脚

    最新工作中遇到生成word中表格时,要求文档中每页头部和底部都是固定格式的表格,但是内容不一样,头部信息在word中画样式的时候就可以设置为“在各页顶端以标题形式重复出现”,而底部就没有办法这样设置了,之后就想着在眉脚中设置相应的样式就可以啦,但是发现

    2024年02月16日
    浏览(81)
  • 【vue2】中 谷歌 Chrome 实现自定义页眉页脚打印

    解决的最终方案如下图  需求:页眉页脚如下,设计图所示,使用浏览器Ctrl+P打印即可,大小B5试纸 说明:数据内容不确定分页的情况下,建议使用 方法二 相关属性参考地址:https://www.w3cplus.com/css/designing-for-print-with-css.html 方法一:绝对相对定位(将自定义的页眉页脚内容通

    2024年02月12日
    浏览(63)
  • 【CSS 20】website layout 网站布局 页眉 导航栏 列布局 不相等栏 页脚

    website layout 网站布局 header 页眉 页眉(header)通常位于网站顶部(或顶部导航菜单的正下方) 通常包含徽标(logo)或网站名称 navbar 导航栏 导航栏包含链接列表,以帮助访问者浏览您的网站 内容 使用哪种布局通常取决于您的目标用户 最常见的布局是以下布局之一(或将它

    2024年02月13日
    浏览(81)
  • PDF 文档处理:使用 Java 对比 PDF 找出内容差异

    不论是在团队写作还是在个人工作中,PDF 文档往往会经过多次修订和更新。掌握 PDF 文档内容的变化对于管理文档有极大的帮助。通过对比 PDF 文档,用户可以快速找出文档增加、删除和修改的内容,更好地了解文档的演变过程,轻松地管理文档。本文将介绍如何通过 Java 程

    2024年02月08日
    浏览(63)
  • Java【代码 16】将word、excel文件转换为pdf格式和将pdf文档转换为image格式工具类分享(Gitee源码)aspose转换中文乱码问题处理

    感谢小伙伴儿的分享: ● 不羁 ● 郭中天 整合调整后的工具类Gitee地址:https://gitee.com/yuanzhengme/java_application_aspose_demo ● WordToPdfUtil用于将word文档转换为pdf格式的工具类 ● ExcelToPdfUtil用于将excel文档转换为pdf格式的工具类 ● PdfToImageUtil用于将pdf文档转换为image格式的工具类

    2024年01月24日
    浏览(83)
  • 2M大小的PDF文档上传到LangChain-ChatGLM知识图谱中,大致需要的时间

    对于将2M大小的PDF文档上传到LangChain-ChatGLM知识图谱中,大致需要的时间如下: PDF到文本的提取转换:若PDF内容主要为文本,此步骤约需要1-2分钟。 提取的文本经过预处理与分析:此步骤需要对文本进行分词、命名实体识别等处理,约需要2-5分钟。 抽取文本中的结构化知识(实体、关

    2024年02月08日
    浏览(40)
  • 图片链接或pdf链接通过浏览器打开时,有时可以直接预览,有时却是下载,为什么?

    在前端开发中,有时候需要对一些文件链接进行特殊处理,比如对于一些图片链接或者PDF链接,有时我们需要通过浏览器打开进行预览,有时又不希望通过浏览器进行打开,而是希望能够直接下载到本地。但现实效果却往往跟我们相反,我们希望浏览器打开时,他却直接下载

    2024年02月10日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包