【发布时间】:2018-07-14 01:01:34
【问题描述】:
我正在使用以下代码缩小 pdf。在缩小 PDF 页面之前可以在纵向中看到,但在缩小之后,它们的方向会变为横向。当我在收缩之前打印页面旋转时,它会变成 270 度。是什么导致页面缩小后旋转? (我要缩小的 PDF 有旧的扫描图像)
public void shrinkPDF(String strFilePath , String strFileName) throws Exception {
PdfReader reader = new PdfReader(strFilePath+"//"+strFileName);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(strFilePath+"//Shrink_"+strFileName));
int n = reader.getNumberOfPages();
for (int p = 1; p <= 1; p++) {
float offsetX = (reader.getPageSize(p).getWidth() * (1 - xPercentage)) / 2;
float offsetY = (reader.getPageSize(p).getHeight() * (1 - yPercentage)) / 2;
PdfDictionary page;
PdfArray crop;
PdfArray media;
page = reader.getPageN(p);
System.out.println("reader.getPateRoatation-->"+reader.getPageRotation(p));
media = page.getAsArray(PdfName.CROPBOX);
if (media == null) {
media = page.getAsArray(PdfName.MEDIABOX);
}
crop = new PdfArray();
crop.add(new PdfNumber(0));
crop.add(new PdfNumber(0));
crop.add(new PdfNumber(media.getAsNumber(2).floatValue()));
crop.add(new PdfNumber(media.getAsNumber(3).floatValue()));
page.put(PdfName.MEDIABOX, crop);
page.put(PdfName.CROPBOX, crop);
Rectangle mediabox = reader.getPageSize(p);
stamper.getUnderContent(p).setLiteral(
String.format("\nq %s %s %s %s %s %s cm\nq\n",
xPercentage, mediabox.getLeft(),mediabox.getBottom(), yPercentage, offsetX, offsetY));
stamper.getOverContent(p).setLiteral("\nQ\nQ\n");
}
stamper.close();
reader.close();
}
【问题讨论】:
-
请分享一个示例 pdf。除非您在标记过程中只使用该代码,否则请分享更完整的代码示例。
-
我可以通过您的邮件 ID“mkl@wir-sind-cool.org”发送样本吗?
-
没关系。明天我可能有时间对此进行调查。
-
也就是说,我只是再次查看了您的代码,发现(与您之前问题中的代码相反)您使用非零值作为 的第二个和第三个参数cm 操作。这当然会导致一些旋转和/或倾斜。
标签: java itext pdf-generation