在日常工作中,我们可能经常面临更改 pdf 页面大小的情况。 例如,一个包含不同大小页面的合并 pdf 文件,我们需要将页面大小调整为相同大小以便于阅读和打印。 在本文中,将详细为您介绍如何使用 spire.pdf for java 在 java 中更改 pdf 文件的页面大小。
安装 spire.pdf for java
首先,您需要在 java 程序中添加 spire.pdf.jar 文件作为依赖项。您可以从 此链接 下载 jar 文件;如果您使用 maven,则可以在 pom.xml 文件中添加如下代码导入 jar 文件:
com.e-iceblue
e-iceblue
https://repo.e-iceblue.cn/repository/maven-public/
e-iceblue
spire.pdf
8.12.6
将 pdf 页面大小更改为标准纸张大小
更改 pdf 文件页面大小的方法是创建一个新的 pdf 文件并向其添加所需大小的页面,然后从原 pdf 文件中的页面创建模板,然后将模板绘制到 新的 pdf 文件。 此过程将保留原 pdf 中存在的文本、图像和其他元素。
spire.pdf for java 支持各种标准纸张尺寸,如 letter、legal、a0、a1、a2、a3、a4、b0、b1、b2、b3、b4 等等。 以下步骤将向您展示如何将 pdf 文件的页面大小更改为标准纸张大小。
- 初始化 pdfdocument 实例并用 pdfdocument.loadfromfile() 方法加载原 pdf 文件。
- 初始化另一个 pdfdocument 实例以创建新的 pdf 文件。
- 循环遍历原 pdf 中的页面。
- 使用 pdfdocument.getpages().add() 方法将所需大小的页面添加到新的 pdf 文件。
- 初始化一个 pdftextlayout 实例并使用 pdftextlayout.setlayout() 方法将文本布局设置为一页。
- 使用 pdfpagebase.createtemplate() 方法基于原 pdf 中的页面创建模板。
- 使用 pdftemplate.draw() 方法将模板绘制到具有指定文本布局的新 pdf 文件的页面上。
- 使用 pdfdocument.savetofile() 方法保存结果文件。
- java
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 页面大小更改为自定义纸张大小
spire.pdf for java 使用 point(1/72 英寸)作为度量单位。 如果要将 pdf 的页面大小更改为以英寸或毫米等其他度量单位表示的自定义纸张大小,可以使用 pdfunitconvertor 类将它们转换为 points。
以下步骤将向您展示如何将 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() 方法保存结果文件。
- java
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");
}
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。