PDF缩放问题(页面统一转成A4大小)

背景

项目中需要将客户上传的附件合并到一起,生成一个新的PDF以供查看,但是有的PDF页面纸张太大,合并之后只取到了A4大小的一个角,下面是处理前的样子。
在这里插入图片描述
处理后:
在这里插入图片描述

处理代码

public static File pdfToA4(File file) {
        Document document = new Document(PageSize.A4);
        String filePath = file.getParent() + File.separator + UUID.randomUUID().toString() + ".pdf";
        File FileA4 = new File(filePath);
        try {
            PdfReader pdfReader = new PdfReader(file.getPath());
            PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(filePath));
            document.open();
            PdfContentByte cb = pdfWriter.getDirectContent();
            // 循环PDF的每一页 pdfWriter.getImportedPage(pdfReader, index) idnex从1开始
            for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) {
                // 新增一页,不然多页的PDF会重合到一页
                document.newPage();
                PdfImportedPage page = pdfWriter.getImportedPage(pdfReader, i);
                // 计算缩小比例 以最大缩小比例为主
                // pdfReader.getPageSize(index) index是从1开始不是0
                float w = PageSize.A4.width() / pdfReader.getPageSize(1).width();
                float h = PageSize.A4.height() / pdfReader.getPageSize(1).height();
                float Scale = w > h ? h : w;
                cb.addTemplate(page, Scale, 0, 0, Scale, 0, 0);
            }
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 删除原来的文件
        file.delete();
        return FileA4;
    }
发布了26 篇原创文章 · 获赞 6 · 访问量 2947

猜你喜欢

转载自blog.csdn.net/weixin_45676630/article/details/104061673