龙空技术网

Java更改 PDF 页面大小

Java那点事儿 104

前言:

今天姐妹们对“java修改文件内容”大致比较重视,兄弟们都需要学习一些“java修改文件内容”的相关内容。那么小编也在网络上网罗了一些有关“java修改文件内容””的相关内容,希望小伙伴们能喜欢,咱们快快来学习一下吧!

在日常工作中,我们可能经常面临更改 PDF 页面大小的情况。 例如,一个包含不同大小页面的合并 PDF 文件,我们需要将页面大小调整为相同大小以便于阅读和打印。 在本文中,将详细为您介绍在 Java 应用程序中更改 PDF 文件的页面大小,以下是详细步骤及思路,并附上Java代码以供参考。

​将 PDF 页面大小更改为标准纸张大小将 PDF 页面大小更改为自定义纸张大小​程序环境:

在程序中导入jar,如下两种方法:

方法1:

手动引入。将 ​ ​Free Spire.PDF for Java​ ​下载到本地,解压,找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:

方法2:

如果您想通过 ​ ​ Maven​ ​安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。

<repositories>       <repository>           <id>com.e-iceblue</id>           <url>;/url>       </repository>   </repositories><dependencies>    <dependency>        <groupId>e-iceblue</groupId>        <artifactId>spire.pdf.free</artifactId>        <version>5.1.0</version>    </dependency></dependencies>
将 PDF 页面大小更改为标准纸张大小​初始化 PdfDocument 实例并用 PdfDocument.loadFromFile() 方法加载原 PDF 文件。初始化另一个 PdfDocument 实例以创建新的 PDF 文件。循环遍历原 PDF 中的页面。使用 PdfDocument.getPages().add() 方法将所需大小的页面添加到新的 PDF 文件。初始化一个 PdfTextLayout 实例并使用 PdfTextLayout.setLayout() 方法将文本布局设置为一页。使用 PdfPageBase.createTemplate() 方法基于原 PDF 中的页面创建模板。使用 PdfTemplate.draw() 方法将模板绘制到具有指定文本布局的新 PDF 文件的页面上。使用PdfDocument.saveToFile()方法保存结果文件。完整代码:
import com.spire.pdf.PdfDocument;import com.spire.pdf.PdfPageBase;import com.spire.pdf.PdfPageSize;import com.spire.pdf.graphics.*;import java.awt.geom.Point2D;public class ChangePageSizeToStandardPaperSize {    public static void main(String []args){        //加载原 PDF 文档        PdfDocument originPdf = new PdfDocument();        originPdf.loadFromFile("都江堰.pdf");        //创建一个新的PDF文档        PdfDocument newPdf = new PdfDocument();        //循环遍历原 PDF 中的页面        for(int i = 0; i< originPdf.getPages().getCount(); i++)        {            //将A1大小页面添加到新的 PDF 文件            PdfPageBase newPage = newPdf.getPages().add(PdfPageSize.A1, new PdfMargins((0)));            //初始化一个 PdfTextLayout 实例            PdfTextLayout layout = new PdfTextLayout();            //将文本布局设置为一页(如果不设置,内容将无法适应页面大小)            layout.setLayout(PdfLayoutType.One_Page);            //基于原始PDF中的页面创建模板            PdfTemplate template = originPdf.getPages().get(i).createTemplate();            //在新的PDF中将模板绘制到页面上            template.draw(newPage, new Point2D.Float(0,0), layout);        }        //保存结果文档        newPdf.saveToFile("更改页面至标准纸张大小.pdf");
效果图:将 PDF 页面大小更改为自定义纸张大小初始化 PdfDocument 实例并使用 PdfDocument.loadFromFile() 方法加载原PDF文件。初始化另一个 PdfDocument 实例以创建新的 PDF 文件。初始化 PdfUnitConvertor 实例,然后用 PdfUnitConvertor.convertUnits() 方法将自定义大小以英寸为单位转换为points。从自定义大小初始化 Dimension2D 实例。循环遍历原PDF 中的页面。使用 PdfDocument.getPages().add() 方法将自定义大小的页面添加到新的 PDF 文件。创建一个 PdfTextLayout 实例并使用 PdfTextLayout.setLayout() 方法将文本布局设置为一页。使用 PdfPageBase.createTemplate() 方法基于原PDF中的页面创建模板。使用 PdfTemplate.draw() 方法将模板绘制到具有指定文本布局的新 PDF 文件的页面上。使用 PdfDocument.saveToFile() 方法保存结果文件。完整代码:
import com.spire.pdf.PdfDocument;import com.spire.pdf.PdfPageBase;import com.spire.pdf.graphics.*;import java.awt.*;import java.awt.geom.Dimension2D;import java.awt.geom.Point2D;public class ChangePageSizeToCustomPaperSize {    public static void main(String []args){        //加载原 PDF 文件        PdfDocument originPdf = new PdfDocument();        originPdf.loadFromFile("都江堰.pdf");        //初始化一个新的 PdfDocument 实例        PdfDocument newPdf = new PdfDocument();        //初始化 PdfUnitConvertor 实例        PdfUnitConvertor unitCvtr = new PdfUnitConvertor();        //将自定义大小以英寸为单位转换为points        float width = unitCvtr.convertUnits(6.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);        float height = unitCvtr.convertUnits(8.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);        //从自定义大小创建一个 Dimension2D 实例,然后它将用作新 PDF 的页面大小        Dimension2D size = new Dimension();        size.setSize(width, height);        //循环遍历原PDF 中的页面        for(int i = 0; i< originPdf.getPages().getCount(); i++)        {            //将自定义大小的页面添加到新的 PDF 文件            PdfPageBase newPage = newPdf.getPages().add(size, new PdfMargins((0)));            //创建一个 PdfTextLayout 实例            PdfTextLayout layout = new PdfTextLayout();            //将文本布局设置为一页(如果未设置内容将不会缩放以适应页面大小)            layout.setLayout(PdfLayoutType.One_Page);            //根据原 PDF 中的页面创建模板            PdfTemplate template = originPdf.getPages().get(i).createTemplate();            //在新 PDF 的页面上绘制模板            template.draw(newPage, new Point2D.Float(0,0), layout);        }        //保存结果文档        newPdf.saveToFile("更改页面至自定义纸张大小.pdf");    }}
效果图:

标签: #java修改文件内容