• 用Java代码更改PDF页边距,批量处理PDF文档


    页边距是指文档页面主要内容以外的边缘区域。在创建 PDF 文档时,通常会设定每页固定页边距,以确保页面的统一性。然而,在某些情况下,已创建的 PDF 文档可能需要调整页边距以获得更好的视觉效果或满足打印需求。这通常是一项复杂的任务,但使用Free Spire.PDF for Java就可以通过简单的Java代码轻松实现此操作。本文将介绍如何使用简单的Java代码调整PDF文档的页边距

    Free Spire.PDF for Java可通过官网下载或Maven安装。

    用Java增加PDF文档页边距

    增加 PDF 文档页边距的方法是新建一个页面尺寸较大的 PDF,并在较大页面的适当位置绘制原始页面。 具体步骤如下:

    • 创建一个 PdfDocument 类的对象并使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
    • 创建另一个 PdfDocument 对象,并创建一个页面尺寸较大的 PDF 文档。
    • 使用 PdfMargins 类下的方法设置要增加的页边距。
    • 使用 Dimension2D.setSize() 方法设置新文档的页面大小。
    • 循环遍历原始文档的页面,并使用 PdfPageBase.createTemplate() 方法根据页面创建模板。
    • 使用 PdfDocument.getPages().add() 方法将页面添加到新的PDF文档中。
    • 使用 PdfTemplate.draw() 方法从初始坐标(0,0)开始在添加的页面上绘制模板。
    • 使用 PdfDocument.saveToFile() 方法保存新的 PDF 文档。

    Java

    import com.spire.pdf.FileFormat;
    import com.spire.pdf.PdfDocument;
    import com.spire.pdf.PdfPageBase;
    import com.spire.pdf.graphics.PdfMargins;
    import com.spire.pdf.graphics.PdfTemplate;
    
    import java.awt.*;
    import java.awt.geom.Dimension2D;
    import java.awt.geom.Point2D;
    
    public class EnlargePdfPageMargins {
    
        public static void main(String[] args) {
    
            // 创建PdfDocument对象并加载PDF文档
            PdfDocument originalPdf = new PdfDocument();
            originalPdf.loadFromFile("示例.pdf");
    
            // 获取文档的第一页
            PdfPageBase firstPage = originalPdf.getPages().get(0);
    
            // 创建另一个PdfDocument对象
            PdfDocument newPdf = new PdfDocument();
    
            // 设置要添加的页边距值
            PdfMargins margins = newPdf.getPageSettings().getMargins();
            margins.setTop(40);
            margins.setBottom(40);
            margins.setLeft(40);
            margins.setRight(40);
    
            // 设置新PDF文档的页面尺寸
            Dimension2D dimension2D = new Dimension();
            dimension2D.setSize(firstPage.getSize().getWidth() + margins.getLeft() + margins.getRight(), firstPage.getSize().getHeight() + margins.getTop() + margins.getBottom());
    
            // 遍历原始PDF文档中的所有页面
            for (int i = 0; i < originalPdf.getPages().getCount(); i++) {
    
                // 基于原始文档的页面创建模板
                PdfTemplate template = originalPdf.getPages().get(i).createTemplate();
    
                // 在新PDF文档中添加新页面
                PdfPageBase page = newPdf.getPages().add(dimension2D);
    
                // 在添加的页面上绘制模板
                template.draw(page.getCanvas(), new Point2D.Float(0, 0));
            }
    
            // 保存新的PDF文档
            newPdf.saveToFile("增加PDF页边距.pdf", FileFormat.PDF);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    设置结果
    增加PDF页边距

    用Java减少PDF文档页边距

    同样,要缩小 PDF 的页边距,可新建一个页面尺寸较小的 PDF,并在指定坐标处将原页面绘制到较小的页面上。 具体步骤如下:

    • 创建一个 PdfDocument 对象。
    • 使用 PdfDocument.loadFromFile() 方法加载现有的 PDF 文档。
    • 创建另一个 PdfDocument 对象,并创建一个页面尺寸缩小的 PDF 文档。
    • 使用 PdfMargins 类下的方法设置要缩小的页边距值。
    • 使用 Dimension2D.setSize() 方法设置新 PDF 文档的页边距。
    • 循环遍历原始文档的页面,并使用 PdfPageBase.createTemplate() 方法根据页面创建一个模板。
    • 使用 PdfDocument.getPages().add() 方法为新的PDF文档添加页面。
    • 使用 PdfTemplate.draw() 方法在添加的页面上指定位置绘制模板。
    • 使用 PdfDocument.saveToFile() 方法保存新的PDF文档。

    Java

    import com.spire.pdf.FileFormat;
    import com.spire.pdf.PdfDocument;
    import com.spire.pdf.PdfPageBase;
    import com.spire.pdf.graphics.PdfMargins;
    import com.spire.pdf.graphics.PdfTemplate;
    
    import java.awt.*;
    import java.awt.geom.Dimension2D;
    import java.awt.geom.Point2D;
    
    public class ReducePdfPageMargins {
        public static void main(String[] args) {
    
            // 创建PdfDocument对象并加载PDF文档
            PdfDocument originalPdf = new PdfDocument();
            originalPdf.loadFromFile("示例.pdf");
    
            // 获取文档的第一页
            PdfPageBase firstPage = originalPdf.getPages().get(0);
    
            // 创建另一个PdfDocument对象
            PdfDocument newPdf = new PdfDocument();
    
            // 设置要缩小的页边距值
            double left = -20;
            double right = -20;
            double top = -20;
            double bottom = -20;
    
            // 设置新PDF文档的页面尺寸
            Dimension2D dimension2D = new Dimension();
            dimension2D.setSize(firstPage.getSize().getWidth() + left + right, firstPage.getSize().getHeight() + top + bottom);
    
            // 遍历原始PDF文档中的所有页面
            for (int i = 0; i < originalPdf.getPages().getCount(); i++) {
    
                // 基于原始文档的页面创建模板
                PdfTemplate template = originalPdf.getPages().get(i).createTemplate();
    
                // 在新PDF文档中添加新页面
                PdfPageBase page = newPdf.getPages().add(dimension2D, new PdfMargins(0));
    
                // 在添加的页面上绘制模板
                template.draw(page.getCanvas(), new Point2D.Float((float) left, (float) top));
            }
    
            // 保存新的PDF文档
            newPdf.saveToFile("减少PDF页边距.pdf", FileFormat.PDF);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    设置结果
    减少PDF页边距

    以上是关于如何使用 Free Spire.PDF for Java 来更改PDF页边距大小的介绍。同时,此 API 还有许多其他的功能您可前往 Spire.PDF for Java 教程查看。

  • 相关阅读:
    MapApp 地图应用
    数据压缩和归档(二)、zipfile
    从功能测试到自动化测试,待遇翻倍的秘籍在这里~
    检测图像的圆形 检测直线 Hough变换检测直线 圆形检测 圆心半径检测 -matlab
    TodoList经典案例
    linux系统中日志简介
    React update和enqueueUpdate
    RabbitMQ学习笔记——声明队列和交换机的方式(Config配置方式)
    c语言实现数据结构中的单向链表
    python读取excel数据,某行、某列、某单元
  • 原文地址:https://blog.csdn.net/Eiceblue/article/details/133928848