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