问题标签 [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.
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 销售团队收到一条消息,说这不在路线图上。他们声称这是一个奇怪的异常值,大多数其他人不需要对字体编码流的支持。因此,如果您在阅读本文时确实遇到了缺少支持的问题,请通过电子邮件告知他们。
itext - 使用 asp.net c# 进行开发的 itext-7 教程
任何人都可以指导我查看 itext 7 的任何教程。我正在尝试使用 itext 7 操作 PDF,我已经完成了那里的教程,但是它们可用于 JAVA,我需要一些 C# 教程。实际的建议是为教程中示例中使用的 java 类找到等效类
itext7 - 无法获得为 itext 7 加载的试用许可证
我正在尝试探索 itext 7 的 pdfsweep 功能。我已获得 30 天试用许可证。当我调用 时LicenseKey.loadLicenseFile(path-to-key-file)
,它返回没有任何错误,但是当我尝试实例化 a 时PdfCleanUpTool
,我收到以下错误:
谢谢。
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 中的类路径。如何从终端运行我的项目?
vb.net - 使用 iText 7 获取 PDF 文件的创建日期
我必须创建一个工具,将它们的创建日期添加到几个 .pdf 文件名中。我想使用内部存储在 pdf 中的创建日期,为此我下载了 iText 社区版。
现在,我的代码是这样开始的(VB)
我得到了 GetAuthor 和 GetCreator 以及其他几个 Get 方法,但我找不到像 GetCreationDate 这样的东西,只有 AddCreationDate。
如果我进一步进入 mypdfobject,我会在 map 中找到一个 /Creationdate 标签,所以我想使用它,但是,虽然它通常采用 D:20160704132234+02'00' 格式,但有时我会发现一些看起来像二进制数据的东西,我不知道如何解码。
有没有更好的方法来获取创建日期?
谢谢
斯特凡诺
itext7 - 在同一个文档对象中,我有一个页面,其中我需要在半页中使用默认文档渲染器,在后半部分还需要 ColumnDocumentRenderer
我使用 itext 7 及其ColumnDocumentRenderer
. 但是在同一个文档对象中,我有一个页面,其中我需要在半页中使用默认文档渲染器,在后半部分还需要ColumnDocumentRenderer
. 如何在同一个文档页面中实现这一点?
我已经ColumnDocumentRenderer
根据返回超级默认渲染器的标志覆盖了创建我自己的标志,否则它返回ColumnDocumentRenderer
。
但仍然在同一页面上,我无法同时获得两个渲染器,它总是使用我拥有的第一个渲染器
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示例.
itext - iText7限制PdfFont内存消耗的策略
大多数 iText7 示例都提到使用PdfFontFactory.createFont()
来获取 PdfFont 实例的句柄以进行文本操作。适度,这很好......但是 PdfFont 是一个相当重量级的对象(PdfEncoding),在 PdfDocument 关闭之前它似乎不会消失。所以下面这个无辜的块会吞噬内存:
使用静力学解决方案的一次简单尝试失败了,因为似乎 PdfFont 实例不能在多个 PdfDocument 中使用。而且因为我的实际情况比上面的例子更复杂,我不想在一个相当深的堆栈中传递一堆 PdfFont 引用。
- 在 iText7 API 中,无法迭代 PdfDocument 的现有 PdfFont(有吗?)
- 是 PdfFont 使用的简单规则,即 a) 它可以根据需要多次使用 b) 在单个 PdfDocument 实例中
(也就是说,这里有一个可能的解决方案是使用 PdfDocument + PdfFontProgram 键简单地缓存 PdfFont 实例?)
java - 在带有 iText7 的自定义 signatureAppearance 签名中使用字体会破坏 PDF/A 的一致性?
我正在尝试从 PDF/A-1A 输入文件创建签名的 PDF,输出必须保持一致性级别。
必须添加具有自定义外观的签名。
如果我按照下面的代码行执行此操作,则签名方面的一切正常,并且签名正确显示并验证正常。
但是 PDF/A 一致性被不包含所需 toUnicode CMAP 的嵌入字体破坏。
所以我认为那里缺少一些东西。嵌入的字体不符合 PDF/A,因为它们缺少 ToUnicode CMAP 键。pdf-tools 验证器的另一个错误说:“密钥编码的值是差异,但必须是 WinAnsiEncoding 或 MacRomanEncoding。” 这似乎是同样的问题。
签名本身还可以而且很明显,样式和图像应该是适当的。只是字体似乎不太好。