本教程展示了如何使用Spire.PDF for Java 来进行PDF的页面设置,包括设置页边距,页面大小以及纸张的方向。原文档是一个三页的PDF,每页均是页边距为0,纵向的A4纸张。现在依次对三个页面进行不同的页面设置。
import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfMargins;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
public class pdfPageSetting {
public static void main(String[] args) {
//创建PdfDocument实例
PdfDocument originalDoc = new PdfDocument();
//加载PDF文件
originalDoc.loadFromFile("input.pdf");
//创建一个新的PdfDocument实例
PdfDocument newDoc = new PdfDocument();
//遍历所有PDF 页面
Dimension2D dimension2D = new Dimension();
for (int i = 0; i < originalDoc.getPages().getCount(); i++) {
PdfPageBase page = originalDoc.getPages().get(i);
if (i == 0) {
float scale = 1.2f;
//设置新文档第一页的页面宽高为原来的1.2倍
float width = (float) page.getSize().getWidth() * scale;
float height = (float) page.getSize().getHeight() * scale;
dimension2D.setSize(width, height);
//设置新文档第一页的页边距为左右50,上下100
PdfMargins margins = new PdfMargins(50, 100);
PdfPageBase newPage = newDoc.getPages().add(dimension2D, margins);
//复制原文档的内容到新文档
newPage.getCanvas().drawTemplate(page.createTemplate(), new Point2D.Float());
}
if (i == 1) {
//设置新文档第二页的页边距为10
PdfMargins margins = new PdfMargins(10);
//设置新文档第二页的页面大小为A2
PdfPageBase newPage = newDoc.getPages().add(PdfPageSize.A2, margins);
//调整画布,设置内容也根据页面的大小进行缩放
double wScale = (PdfPageSize.A2.getWidth() - 20) / PdfPageSize.A4.getWidth();
double hScale = (PdfPageSize.A2.getHeight() - 20) / PdfPageSize.A4.getHeight();
newPage.getCanvas().scaleTransform(wScale, hScale);
//复制原文档的内容到新文档
newPage.getCanvas().drawTemplate(page.createTemplate(), new Point2D.Float());
}
if (i == 2) {
//设置新文档第三页的页边距为左右10,上下0
PdfMargins margins = new PdfMargins(10, 0);
//设置新文档第三页的页面大小不变,但是纸张方向为水平
PdfPageBase newPage = newDoc.getPages().add(page.getSize(), margins, PdfPageRotateAngle.Rotate_Angle_0, PdfPageOrientation.Landscape);
//调整画布,设置内容也根据页面的大小进行缩放
double wScale = (PdfPageSize.A4.getHeight() - 20) / page.getSize().getWidth();
double hScale = PdfPageSize.A4.getWidth() / page.getSize().getHeight();
newPage.getCanvas().scaleTransform(wScale, hScale);
//复制原文档的内容到新文档
newPage.getCanvas().drawTemplate(page.createTemplate(), new Point2D.Float());
}
}
//保存PDF
newDoc.saveToFile("pdfPageSetting.pdf");
}
}
效果图如下: