• Java 给PDF文档添加页码


    日常工作中,为了方便阅读、检索与PDF文档,我们常常需要对其进行页码添加 那么接下来就分享一个使用免费的Free Spire.PDF for JavaJava程序中快速为PDF文档添加页码的方法。

    首先放一张效果图供大家参考:

    基本步骤

    1. 下载Free Spire.PDF for Java包并解压缩
    2. lib文件夹下Spire.Pdf.jar包作为依赖项导入Java应用程序中或者通过Maven仓库安装JAR包(配置pom.xml文件的代码见下文
    3. Java应用程序中新建一个Java Class(此处我命名为AddPageNumbers), 然后输入相应的Java代码并运行

    配置pom.xml文件

    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.pdf.free</artifactId>
            <version>2.6.3</version>
        </dependency>
    </dependencies>

    Java代码

    import com.spire.pdf.PdfDocument;
    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.Rectangle2D;
    
    public class AddPageNumbers {
    
        public static void main(String[] args) {
    
            //加载PDF文档
            PdfDocument pdf = new PdfDocument();
            pdf.loadFromFile("sample.pdf");
    
            //创建字体
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", Font.PLAIN, 10),true);
    
            //获取页面尺寸
            Dimension2D pageSize = pdf.getPages().get(0).getSize();
    
            //初始化y坐标
            float y = (float) pageSize.getHeight() - 40;
    
            //遍历文档中的页
            for (int i = 0; i < pdf.getPages().getCount(); i++) {
    
                //初始化页码域
                PdfPageNumberField number = new PdfPageNumberField();
    
                //初始化总页数域
                PdfPageCountField count = new PdfPageCountField();
    
                //创建复合域
                PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.getBlack(), "第{0}页 共{1}页", number, count);
    
                //设置复合域内文字对齐方式
                compositeField.setStringFormat(new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top));
    
                //测量文字大小
                Dimension2D textSize = font.measureString(compositeField.getText());
    
                //设置复合域的在PDF页面上的位置及大小
                compositeField.setBounds(new Rectangle2D.Float(((float) pageSize.getWidth() - (float) textSize.getWidth())/2, y, (float) textSize.getWidth(), (float) textSize.getHeight()));
    
                //将复合域添加到PDF页面
                compositeField.draw(pdf.getPages().get(i).getCanvas());
            }
    
            //保存为另外一个文档
            pdf.saveToFile("AddPageNumbers.pdf");
        }
  • 相关阅读:
    十四、数据库公共字段处理
    十、前端tag、自定义tag、filter和simple_tag
    kafka生产、消费py脚本
    django模板filter及自定义filter
    django基础,前后端分离数据传参
    django基础——使用django form校验数据
    django自带的后台管理框架django-admin
    django基础——前后端分离,页面分页
    django基础——数据库的增删改查
    django基础——models数据库操作
  • 原文地址:https://www.cnblogs.com/jazz-z/p/12985679.html
Copyright © 2020-2023  润新知