问题标签 [itext7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
441 浏览

pdf - iTextSharp 字体宽度定义未正确加载

我从使用 Ghostscript 9.19 创建 PDF/A 兼容 PDF (1.4) 的客户那里获得的 PDF 存在特殊问题。我想使用 LocationTextExtractionStrategy 从中提取文本,但我以相反的顺序获取大部分文本并带有额外的空格:

期待:abc

获得:cba

在内容流中,这可能是 [a,1,b,1,c] TJ

这个问题之前已经发布到 Stackoverflow,但是我比破解我自己的提取策略更进一步解决了这个问题。我意识到所使用字体的字体宽度全为零,并且度量值和 hMetrics 映射均未填充。我使用的是 iTextSharp 5.5.4,但 5.5.9 仍然有同样的问题。

这是字体:

对象 33 是​​一个 CMap:

对象 48 是一个 Stream,顺便说一下也是一个 CMap

对象 35 终于有了一些宽度定义

按照 iTextSharp 初始化 CMapAwareDocumentFont 的顺序,首先初始化基本 DocumentFont。然后构造函数检查:

两者都不是。

它不是。然后进入下一个else分支:

但由于编码是作为间接引用给出的,因此 encodingName 为空。因此,永远不会处理此 Type0 字体的处理。

我在库代码中更改了这一点,但即使调用了 ProcessType0(font) 方法,宽度值也从未进入字体定义 - 即全部保持为零。这可能是意料之中的。最后我得到了填充的指标哈希映射,但我没有涵盖所有使用的字符。即情况有所好转,但并非一切都好:

而不是: abc -> cba

我现在得到: abc -> acb

对于当前问题,我唯一可行但很老套的解决方案是破解 processor.DisplayPdfString((PdfString)entryObj) 以将 textMatrix 调整固定数量。然而,这不是一般的解决方案,我宁愿字体能正常工作。任何其他建议我应该尝试什么?

编辑:我使用 iText 7 .Net 重新审视了我的问题,现在在尝试从我的测试文件中读取文本时出现 NullReferenceException。

这是我使用的文件:https ://drive.google.com/file/d/0B1RdIg0_Pbd_aTlOT2VmbnFlaTQ/view?usp=sharing

该代码适用于其他 PDF 文件,但不适用于这个。

更新 感谢 mkl,我现在知道了一段时间,根本问题是字体编码流。遗憾的是,我刚刚通过 iText 销售团队收到一条消息,说这不在路线图上。他们声称这是一个奇怪的异常值,大多数其他人不需要对字体编码流的支持。因此,如果您在阅读本文时确实遇到了缺少支持的问题,请通过电子邮件告知他们。

0 投票
0 回答
4069 浏览

itext - 使用 asp.net c# 进行开发的 itext-7 教程

任何人都可以指导我查看 itext 7 的任何教程。我正在尝试使用 itext 7 操作 PDF,我已经完成了那里的教程,但是它们可用于 JAVA,我需要一些 C# 教程。实际的建议是为教程中示例中使用的 java 类找到等效类

0 投票
1 回答
1900 浏览

itext7 - 无法获得为 itext 7 加载的试用许可证

我正在尝试探索 itext 7 的 pdfsweep 功能。我已获得 30 天试用许可证。当我调用 时LicenseKey.loadLicenseFile(path-to-key-file),它返回没有任何错误,但是当我尝试实例化 a 时PdfCleanUpTool,我收到以下错误:

谢谢。

0 投票
2 回答
5677 浏览

java - 如何使用 iText 7 在 PDF 文件中添加复选框?

如何像在这个问题中所做的那样将复选框添加到 Pdf 文件中,但是使用 iText 7?

我希望结果如下所示:

预期结果

0 投票
3 回答
2593 浏览

java - java.lang.NoClassDefFoundError: com/itextpdf/kernel/pdf/PdfWriter itext 和 gradle

我正在使用 Gradle 设置一个使用 itext 7 生成 pdf 文件的测试项目。

如果我在 Netbeans IDE 中运行我的主类,一切正常;创建了一个“结果”文件夹,在其中我可以找到生成的 pdf。

但是如果我清理并构建项目,进入 project_folder/build/libs 并尝试执行 java -jar mypdfproject.jar 文件我得到这个错误 => java.lang.NoClassDefFoundError: com/itextpdf/kernel/pdf/PdfWriter

这是我的主要课程(MyPdfMain.class)

这是 build.gradle

如您所见,我创建了一个任务来将所有依赖项 jar 复制到 builds/libs/lib

task copyToLib( type: Copy ) { into "$buildDir/libs/lib" from configurations.runtime }

并设置 jar{ dependsOn copyToLib }

但错误仍然相同。

我认为这应该是一个类路径错误,但我不知道如何以及在哪里设置 Gradle 中的类路径。如何从终端运行我的项目?

0 投票
1 回答
1629 浏览

vb.net - 使用 iText 7 获取 PDF 文件的创建日期

我必须创建一个工具,将它们的创建日期添加到几个 .pdf 文件名中。我想使用内部存储在 pdf 中的创建日期,为此我下载了 iText 社区版。

现在,我的代码是这样开始的(VB)

我得到了 GetAuthor 和 GetCreator 以及其他几个 Get 方法,但我找不到像 GetCreationDate 这样的东西,只有 AddCreationDate。

如果我进一步进入 mypdfobject,我会在 map 中找到一个 /Creationdate 标签,所以我想使用它,但是,虽然它通常采用 D:20160704132234+02'00' 格式,但有时我会发现一些看起来像二进制数据的东西,我不知道如何解码。

有没有更好的方法来获取创建日期?

谢谢

斯特凡诺

0 投票
0 回答
107 浏览

itext7 - 在同一个文档对象中,我有一个页面,其中我需要在半页中使用默认文档渲染器,在后半部分还需要 ColumnDocumentRenderer

我使用 itext 7 及其ColumnDocumentRenderer. 但是在同一个文档对象中,我有一个页面,其中我需要在半页中使用默认文档渲染器,在后半部分还需要ColumnDocumentRenderer. 如何在同一个文档页面中实现这一点?

我已经ColumnDocumentRenderer根据返回超级默认渲染器的标志覆盖了创建我自己的标志,否则它返回ColumnDocumentRenderer

但仍然在同一页面上,我无法同时获得两个渲染器,它总是使用我拥有的第一个渲染器

0 投票
1 回答
15491 浏览

itext - 如何在 iText 7 中添加“Y 页 X”页脚

我试图弄清楚如何在我使用iText 7生成的 PDF 文档的每一页中添加“Page X of Y”页脚。

使用 IEventHandler 生成“Page X”部分似乎相当简单——这是我正在努力解决的“Y”位。我想避免生成整个文档两次,以便找出它有多少页,因为这会对性能造成重大影响!

我在这里的iText 5中找到了一个解决方案:PDF Page Numbering in Java & iText,但iText 7是对 iText 的完全重写,具有完全不同的界面,到目前为止我一直无法找到任何类似的iText 7示例.

0 投票
1 回答
263 浏览

itext - iText7限制PdfFont内存消耗的策略

大多数 iText7 示例都提到使用PdfFontFactory.createFont()来获取 PdfFont 实例的句柄以进行文本操作。适度,这很好......但是 PdfFont 是一个相当重量级的对象(PdfEncoding),在 PdfDocument 关闭之前它似乎不会消失。所以下面这个无辜的块会吞噬内存:

使用静力学解决方案的一次简单尝试失败了,因为似乎 PdfFont 实例不能在多个 PdfDocument 中使用。而且因为我的实际情况比上面的例子更复杂,我不想在一个相当深的堆栈中传递一堆 PdfFont 引用。

  1. 在 iText7 API 中,无法迭代 PdfDocument 的现有 PdfFont(有吗?)
  2. 是 PdfFont 使用的简单规则,即 a) 它可以根据需要多次使用 b) 在单个 PdfDocument 实例中

(也就是说,这里有一个可能的解决方案是使用 PdfDocument + PdfFontProgram 键简单地缓存 PdfFont 实例?)

0 投票
1 回答
980 浏览

java - 在带有 iText7 的自定义 signatureAppearance 签名中使用字体会破坏 PDF/A 的一致性?

我正在尝试从 PDF/A-1A 输入文件创建签名的 PDF,输出必须保持一致性级别。

必须添加具有自定义外观的签名。

如果我按照下面的代码行执行此操作,则签名方面的一切正常,并且签名正确显示并验证正常。

但是 PDF/A 一致性被不包含所需 toUnicode CMAP 的嵌入字体破坏。

所以我认为那里缺少一些东西。嵌入的字体不符合 PDF/A,因为它们缺少 ToUnicode CMAP 键。pdf-tools 验证器的另一个错误说:“密钥编码的值是差异,但必须是 WinAnsiEncoding 或 MacRomanEncoding。” 这似乎是同样的问题。

签名本身还可以而且很明显,样式和图像应该是适当的。只是字体似乎不太好。