Java 处理Pdf尺寸
一 、导入依赖
导入 iText 相关的依赖
<!--https://mvnrepository.com/artifact/com.itextpdf/itextpdf-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
二、封装的工具类#
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;
import java.io.IOException;
public class ModifyPdfUtil {
/**
* 自动修改pdf大小为A4大小
* @param srcPdfPath 需要修改的pdf的路径
* @param newPdfPath 生成的新的pdf的路径
*/
public static void PdfTest(String srcPdfPath,String newPdfPath) {
try {
Document document = new Document();
PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(newPdfPath));
PdfImportedPage page1 = pdfWriter.getImportedPage(new PdfReader(srcPdfPath), 1);
if (Image.getInstance(page1).getScaledWidth()>Image.getInstance(page1).getScaledHeight()) {
document.setPageSize(PageSize.A4.rotate());
} else {
document.setPageSize(PageSize.A4);
}
document.open();
PdfReader pdfReader = new PdfReader(srcPdfPath);
int n = pdfReader.getNumberOfPages();
PdfImportedPage page;
PdfImportedPage page2;
for (int i = 1;i <= n;i++) {
int m = 0;
page = pdfWriter.getImportedPage(pdfReader,i);
Image image = Image.getInstance(page);
if (i != n) {
page2 = pdfWriter.getImportedPage(pdfReader,i+1);
} else {
page2 = pdfWriter.getImportedPage(pdfReader,i);
}
Image image2 = Image.getInstance(page2);
float scaledWidth = image2.getScaledWidth();
float scaledHeight = image2.getScaledHeight();
System.out.println(i+"--原先图片大小是宽:"+scaledWidth+",高是:"+scaledHeight);
if (scaledWidth > scaledHeight) {
while (scaledWidth>842 || scaledHeight>595) {
image.scalePercent(100-m);
m++;
scaledHeight = image.getScaledHeight();
scaledWidth = image.getScaledWidth();
}
document.setPageSize(PageSize.A4.rotate());
image.setAlignment(Image.ALIGN_CENTER);
document.add(image);
document.newPage();
} else {
while (scaledHeight>842 || scaledWidth>595) {
image.scalePercent(100-m);
m++;
scaledHeight = image.getScaledHeight();
scaledWidth = image.getScaledWidth();
}
// image.setAbsolutePosition(0,0);
document.setPageSize(PageSize.A4);
image.setAlignment(Image.ALIGN_CENTER);
document.add(image);
document.newPage();
}
}
document.close();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
实现效果#
将原先的pdf先转换为图片,然后通过itext创建一个空的A4大小的pdf,通过判断等比例缩放图片的大小,添加到A4大小的pdf上,最终将原先的pdf缩放为A4大小
本作品采用《CC 协议》,转载必须注明作者和本文链接