- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试从 PDF 文档中提取文本,但我遇到了一些使用 Tj 运算符的奇怪情况。通常我处理这样的情况:
Tc (SOME_TEXT) TJ
Tm [
( )1.828
(5)1.841
(2)1.828
(2)1.828
(4)1.841
(9)1.828
(.)1.828
(6)1.841
(4)
]
TJ
Td (
\t\004\007\020\007\016\016\026\020
)
Tj
最佳答案
正如@Paulo 在他的评论中已经指出的那样,您应该首先查阅 PDF 规范,即目前 ISO 32000-1,Adobe 提供了免费副本 here .
关于文本提取的主题,您会在第 9.10 节文本内容提取中找到,尤其是:
9.10.2 Mapping Character Codes to Unicode Values
A conforming reader can use these methods, in the priority given, to map a character code to a Unicode value. Tagged PDF documents, in particular, shall provide at least one of these methods (see 14.8.2.4.2, "Unicode Mapping in Tagged PDF"):
If the font dictionary contains a ToUnicode CMap (see 9.10.3, "ToUnicode CMaps"), use that CMap to convert the character code to Unicode.
If the font is a simple font that uses one of the predefined encodings MacRomanEncoding, MacExpertEncoding, or WinAnsiEncoding, or that has an encoding whose Differences array includes only character names taken from the Adobe standard Latin character set and the set of named characters in the Symbol font (see Annex D):
a) Map the character code to a character name according to Table D.1 and the font’s Differences array.
b) Look up the character name in the Adobe Glyph List (see the Bibliography) to obtain the corresponding Unicode value.
If the font is a composite font that uses one of the predefined CMaps listed in Table 118 (except Identity–H and Identity–V) or whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or Adobe-Korea1 character collection:
a) Map the character code to a character identifier (CID) according to the font’s CMap.
b) Obtain the registry and ordering of the character collection used by the font’s CMap (for example, Adobe and Japan1) from its CIDSystemInfo dictionary.
c) Construct a second CMap name by concatenating the registry and ordering obtained in step (b) in the format registry–ordering–UCS2 (for example, Adobe–Japan1–UCS2).
d) Obtain the CMap with the name constructed in step (c) (available from the ASN Web site; see the Bibliography).
e) Map the CID obtained in step (a) according to the CMap obtained in step (d), producing a Unicode value.
NOTE Type 0 fonts whose descendant CIDFonts use the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or Adobe-Korea1 character collection (as specified in the CIDSystemInfo dictionary) shall have a supplement number corresponding to the version of PDF supported by the conforming reader. See Table 3 for a list of the character collections corresponding to a given PDF version. (Other supplements of these character collections can be used, but if the supplement is higher-numbered than the one corresponding to the supported PDF version, only the CIDs in the latter supplement are considered to be standard CIDs.)
If these methods fail to produce a Unicode value, there is no way to determine what the character code represents in which case a conforming reader may choose a character code of their choosing.
关于php - 阅读PDF,TJ算子奇怪的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33412329/
我有一个 pdf 文件,我希望从中删除所有图像和其他绘图内容。并将结果另存为新的 pdf。 我知道如何使用 TJ 、 Tj 运算符删除文本,我目前执行的操作如下 op.getOperation().e
如果我们假设一个 PDF 文档“doc.pdf”包含“hello world”作为一个简单的字符串。 让我们考虑一下这段代码: //read the document DDocument do
是否可以确定TJ运算符中的数字是否代表单词之间的空格? 示例:[(Sta)28(ry)-333(Plzenec,)]TJ 数字28空格不够,否则333应该根据实际字号空格。字体大小为 9.96 最佳答
我试图找出在未压缩的 PDF v1.4 文档中使用 Times 字体的位置。 /Font描述 PDF 中 Times 字体的对象是对象 65如下: 65 0 obj > endobj 它指的是 /Fo
我使用 iText 库来创建并操作 PDF 文档。让我们有一个包含简单字符串的文档,例如“Hello world”。所以在pdf文件结构中,我们必须有(Hello world)Tj。问题是我如何通过使
我尝试使用 PDFBox 2.0.0 解析 PDF 的内容流。 这是处理它的代码的一部分: InputStream is; try { is = this.input.getDocumentC
最近我被分配到一个项目,我们必须将旧的 VB3 进程迁移到 C#,这个进程从 Access 97 文件中获取数据并将其插入 SQL Server,问题是一些“天才”调用字段“Ta/Tj”和“/”破坏了
我正在尝试使用 PoDoFo 库从 PDF 文件中提取文本,它适用于 Tj 运算符,但无法为 (数组)TJ 运算符。我找到了这段代码(经过我的小修改)here : const char*
我是否正确理解我不需要在 TypeScript 中使用像 tj/co 这样的库来控制流程,因为我可以使用 async/await?将 promises 与生成器一起使用只是 async/await 的
背景故事,阅读:https://medium.com/code-adventures/4ba9e7f3e52b TJ 说 Node 失败是因为: 您可能会收到重复的回调 您可能根本没有收到回电(迷失方
最近看了TJ的博文:"Farewell Node.js" . 我不太了解 Node 失败部分。在这里: Error-handling in Go is superior in my opinion.
好的,所以我正在解析 PDF 内容流,发现 TJ 回调生成一个字符串数组,所以我捕获它并开始遍历它以获取字符串值,如下所示: static void Op_TJ(CGPDFScannerRef s,
我是一名优秀的程序员,十分优秀!