cuestiones de escala PDF (página unificado a su vez en tamaño A4)

fondo

Proyecto requiere que los clientes subir archivos adjuntos serán fusionados juntos para producir un nuevo PDF para su visualización, pero un poco de papel página PDF demasiado, acaba de tomar después de la fusión en un tamaño A4 esquina, aquí está la forma en que estaba antes del tratamiento.
Aquí Insertar imagen Descripción
Después del tratamiento:
Aquí Insertar imagen Descripción

código de manejo

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;
    }
Publicado 26 artículos originales · ganado elogios 6 · vistas 2947

Supongo que te gusta

Origin blog.csdn.net/weixin_45676630/article/details/104061673
Recomendado
Clasificación