[英]Changing UserUnit of existing pdf with itext in java
我没有找到与该主题相关的任何内容,因此我正在使用此面板,希望能获得问题/帮助。
我所拥有的:我有一个很大的pdf文档(adobe读者说:21.399,4 x 15.123,7 mm,缩放系数,打开时约为屏幕填充的1.64%!)。 这是一张施工图,但这无关紧要。 当我使用崇高来分析结构时,我可以找到以下内容:
我需要什么:较小的文档,由于尺寸较大,我无法继续处理文件
我试过的:第一步是使用iText将UserUnit减小为默认的“ 1”。 这应该使某些事情变得容易。 我在Java程序中的代码如下所示:
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
请看一下ScaleRotate示例。 它是为回答“ 在Itextsharp中旋转”同时保留评论的位置和方向而提供的 ,在此您可以找到有关用户单元的更多信息。
这是相关的代码:
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()
文档的根目录,但是给变量赋予的名称听起来像是假定它是页面字典一样。 那行不通...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.