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.
Después del tratamiento:
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;
}