当前位置: 首页 > 知识库问答 >
问题:

在java中使用itext更改现有pdf的UserUnit

滕令雪
2023-03-14

我没有发现与该主题相关的任何内容,因此我正在使用此板并希望获得问题/帮助。

我有什么:我有一个pdf文档,非常大(adobe阅读器说:21.399,4 x 15.123,7 mm,缩放工厂,打开时是~1,64%的屏幕填充!)。这是一张施工图,但这没关系。当我使用sublime分析结构时,我可以找到以下内容:

  • 最新版本是: 1.6
  • 作物盒[0.0 0.0 14400.0 10177.0]
  • /旋转 0/类型/页/用户单元 4.2125

我需要的是:一个较小的文件,因为太大,我无法继续处理文件。

我尝试了什么:第一步使用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));

这两件事都没有成功,所以我的问题是:

  • 是否可以更改现有文件的UserUnits?或者我需要用我想要的属性创建一个新的属性,然后在新的属性中写入现有pdf的内容吗
  • 如果可能:我还需要做什么来更改UserUnits

在海德堡的问候下,真诚的D·菲森迈尔

共有1个答案

范哲
2023-03-14

请看一下缩放旋转示例。它是在回答问题时编写的 在 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()获取文档的根,但您为变量提供的名称听起来就好像您假设它是一个页面字典。那不起作用…

 类似资料:
  • 问题内容: 我正在根据客户活动创建报告。我正在iText PDF库的帮助下创建此报告。我想用蓝色背景色(用于产品名称和免责声明)创建前两个页面,并用白色(不使用背景色)创建其余页面。我使用以下代码在报告的开头用蓝色涂了两页。 但是当我使用移至第三页时,该页面仍为蓝色。我无法更改第三页的颜色。我想将第三页的颜色更改为白色。如何使用iText做到这一点? 问题答案: 这是我如何在Java中使用iTex

  • 我可以修改现有PDF的字体吗。我有一些类型3(自定义)字体没有任何字体描述符。我想把它们换成一些有意义的字体。如何使用Itext或PDFBox执行此操作?

  • 将html文件转换为pdf文件。我有html文件,css文件和js文件在一个文件夹,我如何转换index.html创建pdf使用Java的itext。有谁能帮我解决这个问题。有没有样本项目?

  • 我在Android日食中使用 itext 创建 pdf 时遇到问题 如果给定了引导入口,我无法创建pdf,在我的情况下是Android 5.0.1。如果我删除了bootstrap条目,我可以创建pdf,但不能启动活动,因为android 5.0.1包含android jar。你能告诉我如何解决这个问题吗?同样,如果我把它变成一个非活动类,我希望能够在另一个活动类中创建一个非活动类的对象,这样我就可

  • 是否可以将给定的pdf文件变为空白,并将新数据重新写入该文件?我知道从中间删除页面可以修剪文档。但我根本没有找到任何方法来清除文档。非常感谢。

  • 问题内容: 如何使用iText将书签添加到现有PDF? 我将多个PDF合并为一个PDF,并且需要为最终PDF构建书签。例如,我有三个PDF:doc1.pdf,doc2.pdf和doc3.pdf,doc1和doc2属于Group1,doc3属于Group2。我需要合并它们,并且必须为生成的PDF构建嵌套书签,如下所示: 等等 问题答案: 我已经制作了一个MergeWithOutlines示例,该示例