我没有找到任何特定于该主题的内容,因此我使用此主板并希望得到问题/帮助。
我有什么:我有一个非常大的pdf文件(adobe读者说:21.399,4 x 15.123,7 mm,缩放工厂,打开时屏幕填充率约为1,64%!)。这是一张施工图,但这并不重要。当我使用sublime分析结构时,我可以找到以下内容:
我需要的是:一个较小的文件,由于尺寸大,我无法继续处理文件
我尝试过:使用iText将UserUnit缩减为默认值" 1"第一步。这应该会让事情变得更容易。我在java-programm中的代码如下所示:
PdfReader reader = new PdfReader(inFile.getAbsolutePath());
try (FileOutputStream outStream = new FileOutputStream(outFile)) {
PdfStamper pdfStamper = new PdfStamper(reader, outStream);
PdfWriter writer = pdfStamper.getWriter();
writer.setUserunit(1f);
pdfStamper.close();
}
我试过的另一件事是:
PdfDictionary pageDict;
pageDict = reader.getCatalog();
pageDict.put(PdfName.USERUNIT, new PdfNumber(1f));
这两件事都没有用,所以我的问题是:
来自海德堡的问候, 诚恳 D. Pfizenmaier
答案 0 :(得分:0)
请查看ScaleRotate示例。它是在问题Rotating in Itextsharp while preserving comment location & orientation的回答中写的,您可以在其中找到有关用户单元的更多信息。
这是相关的代码:
PdfReader reader = new PdfReader(src);
int n = reader.getNumberOfPages();
PdfDictionary page;
for (int p = 1; p <= n; p++) {
page = reader.getPageN(p);
page.put(PdfName.USERUNIT, new PdfNumber(1f));
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();
reader.close();
请注意,您使用getCatalog()
获取文档的根目录,但是您为变量提供的名称听起来就好像您认为它是页面词典一样。那不会起作用......