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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
247
粉丝
17
喜欢
213
收藏
58
排名:732
访问:9674
私信
所有博文
社区赞助商