1

如标题所示,我正在尝试将 A3 大小的 pdf 重新缩放为 A4 大小,我可以做到这一点。但在那之后,内容似乎仍然是 A3 尺寸,只是页面大小发生了变化。我的意思是内容在 A4 大小的寻呼机之外溢出,并且没有缩小。

这是我的代码:

Document document = new Document(PageSize.A4, 0,0,0,0);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output file.pdf"));
document.open();
PdfContentByte cb = writer.getDirectContent();
PdfReader reader = new PdfReader("input file.pdf");
for (int i = 1; i <= reader.getNumberOfPages(); i++){
     PdfImportedPage page = writer.getImportedPage(reader, i);            
     document.newPage();
     cb.addTemplate(page,0,0);
}
reader.close();
document.close();

谁能建议解决这个问题,谢谢。

4

1 回答 1

3

它没有缩小,因为你没有告诉它缩小。

您将 A3 页面添加到新的 PDF 中,使用

cb.addTemplate(page,0,0);

此方法在坐标 0, 0 处按原样添加页面。

相反,您应该使用该方法的重载,它允许您缩小新 PDF 中的页面,例如

cb.addTemplate(page, 0.5, 0, 0, 0.5, 0, 0);

或者

cb.addTemplate(page, AffineTransform.getScaleInstance(0.5, 0.5));

PS:0.5以上很可能是不正确的,它从A3缩小到A5。从 A3 缩小到 A4 最有可能应该是 0.5 的平方根。

于 2013-09-27T09:12:48.410 回答