gpt4 book ai didi

带尖括号的 PDF Tj 命令?

转载 作者:行者123 更新时间:2023-12-04 17:48:55 25 4
gpt4 key购买 nike

我试图找出在未压缩的 PDF v1.4 文档中使用 Times 字体的位置。
/Font描述 PDF 中 Times 字体的对象是对象 65如下:

65 0 obj
<</Type /Font
/Subtype /TrueType
/BaseFont /PXAAAD+TimesNewRoman,Italic
/FirstChar 1
/LastChar 35
/Widths [250 333 333 333 500 500 500 500 500 500 500 500 500 500 333 722 722 833 666 610 500 556 500 443 443 500 277 443 500 389 389 277 500 443 500]
/FontDescriptor 205 0 R
/ToUnicode 206 0 R>>
endobj

它指的是 /FontDescriptor对象 205进一步定义 Times 字体对象,以及一个 /ToUnicode对象中的 map 206它描述了字节到 Unicode 字符的映射。 编辑:Ritsaert对以下问题的初步回答,我正在添加字体的 /ToUnicode对象在这里,提供提到的 CMap .
206 0 obj
<</Length 208 0 R>>
stream
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (Adobe)
/Ordering (UCS)
/Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<00> <FF>
endcodespacerange
35 beginbfchar
<01> <0020>
<02> <0028>
<03> <0029>
<04> <002d>
<05> <0030>
<06> <0031>
<07> <0032>
...
<23> <0101>
endbfchar
endcmap
CMapName currentdict /CMap defineresource pop
end
end

endstream
endobj

我现在已经将 Times 字体对象的使用追踪到 /Page对象(众多之一),如下所示,它指的是字体对象 65通过 /F4引用在其页面 /Resources :
12 0 obj
<</Type /Page
/Parent 2 0 R
/MediaBox [0 0 432 648]
/Contents 92 0 R
/Resources <</Font <</F1 62 0 R
/F3 64 0 R
/F4 65 0 R>>
/ProcSet [/PDF /Text]>>
/Group <</S /Transparency
/CS /DeviceRGB>>>>
endobj
/Contents流(PDF 文件中的对象 92)充满了文本对象(包含在 BTET 中),它们都不包含文本,而是使用满是数字的尖括号。例如,这里是唯一引用 Times 字体 /F4我试图找到谁的用途:
92 0 obj
<</Length 93 0 R>>
stream
...
BT
0.5020 g
72.0000 615.1512 Td
/F4 12.0000 Tf
<0605> Tj
ET
...
endstream
endobj

但是尖括号和数字 <0605>是什么意思?引用?字体表中的特定字形?看着 PDF reference和第 5.3.2 节我找不到尖括号的提及。

编辑:鉴于上述代码和接受的答案 <0605>是文本的十六进制编码, <0605>是条目 <06><05>CMap对象 206从而映射到 unicodes <0031><0030>分别。这意味着,字符串 <0605>指的是 U+0031(“1”)和 U+0030(“0”),这样 Times 字体就用于页面对象 12 上的字符串“10” .

最佳答案

这里发生了什么:

  • 在内容流中 Tj命令被赋予字符串 <0605>画。之间的字符串 <>十六进制 字符串,因此绘制了字符 #6 和 #5。在链接的 PDF 引用的 3.2.3 中是解释的符号。
  • 就在文本绘制命令之前,字体 F4使用 Tf 选择命令。
  • 鉴于包含字体的页面的资源分支被引用为对象 65 修订版 0。此字体对象是一个子集 Truetype 字体,其中定义了字形 1..35。否 Encoding指定(因此使用 WinAnsiEncoding)。因此,嵌入的子集字体以非标准方式(经常发生)重新排列字体中的字符。

  • 现在,如果您想知道这些字形 ID 如何链接到 Unicode 字符:该字体具有 ToUnicode流包含 CMAP 的链接定义映射。这应该足以将字符串转换为 Unicode 字符串。

    关于带尖括号的 PDF Tj 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22762705/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com