读取 PDF 文件中的日文字符

2023-11-30

我有以下命令:

[1010]TJ

我知道它在十六进制部分隐藏了日语,因为这是 PDF 中唯一的内容,并且这一行位于 pdf 文件中单个页面的唯一内容流中。

问题是,无论我如何尝试解码这个十六进制字符串,我都会得到乱码,我已经将这些十六进制字符串解码为字节,并尝试逐字应用我能找到的每个字符集,但我仍然得到乱码。

(也许我很绝望,因为我知道它可能不会起作用) 我还尝试了另一种方式,在 Android 上进行测试,我能够导入 pdf 日语文本(从资源加载它),并且在调试时我可以在 String 实例的值中看到真实的日语文本,我再次尝试应用所有字符集,仅为整个文件生成 4-6 个匹配的十六进制字符,但再次......什么也没有。

实际上我不需要字形,我会选择正确的文本......

难道文本本身是用字符集编码以外的东西编码的吗? 有人能指出我正确的方向吗?

===更新===

好的,所以我发现还有一个额外的“加密”,Identity-H,我已经在这里读您需要一个 /ToUnicode 映射,我似乎在文件中找不到它。

让我抓狂的是其他 PDF 查看器可以显示 PDF,但我不知道如何显示!

再说一次,任何骨头都很好......见鬼,我会去吃碎片:)

Thanks,

Adam.

对于某些文件上下文:

...
10 0 obj
    << 
    /Type /Page 
    /Parent 7 0 R 
    /Resources 11 0 R 
    /Contents 16 0 R 
    /MediaBox [ 0 0 595 842 ] 
    /CropBox [ 0 0 595 842 ] 
    /Rotate 0 
    >> 
endobj
11 0 obj
    << 
    /ProcSet [ /PDF /Text ] 
    /Font << /TT2 13 0 R /G1 12 0 R >> 
    /ExtGState << /GS1 19 0 R >> 
    /ColorSpace << /Cs6 15 0 R >> 
    >> 
endobj
12 0 obj
    << 
    /Type /Font 
    /Subtype /Type0 
    /BaseFont /Ryumin-Light-Identity-H 
    /Encoding /Identity-H 
    /DescendantFonts [ 18 0 R ] 
    >> 
endobj
13 0 obj
    << 
    /Type /Font 
    /Subtype /TrueType 
    /FirstChar 32 
    /LastChar 32 
    /Widths [ 278 ] 
    /Encoding /WinAnsiEncoding 
    /BaseFont /Century 
    /FontDescriptor 14 0 R 
    >> 
endobj
14 0 obj
    << 
    /Type /FontDescriptor 
    /Ascent 985 
    /CapHeight 0 
    /Descent -216 
    /Flags 34 
    /FontBBox [ -165 -307 1246 1201 ] 
    /FontName /Century 
    /ItalicAngle 0 
    /StemV 0 
    >> 
endobj
15 0 obj
    [ 
    /ICCBased 20 0 R 
    ]
endobj
16 0 obj
    << /Length 2221 /Filter /FlateDecode >> 
        stream
        ...
                [<0e0f0a52030d030e0ce5030f0744030f>10<030d>10<0cd4>]TJ
        ...
                <00e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e7>Tj
        ...
                <030e030d0a48064403740353035a039408030ebd074807c1036e0358039304e10c8802a2074807c10cd40e8a030e030d02a303770a2a0a100374036d034d036f00e7>Tj
        ...
    endstream
endobj
17 0 obj
    << 
    /Type /FontDescriptor 
    /Ascent 723 
    /CapHeight 709 
    /Descent -241 
    /Flags 6 
    /FontBBox [ -170 -331 1024 903 ] 
    /FontName /Ryumin-Light 
    /ItalicAngle 0 
    /StemV 69 
    /XHeight 450 
    /Style << /Panose <010502020300000000000000>>> 
    >> 
endobj
18 0 obj
    << 
    /Type /Font 
    /Subtype /CIDFontType0 
    /BaseFont /Ryumin-Light 
    /FontDescriptor 17 0 R 
    /CIDSystemInfo << /Registry (Adobe)/Ordering (Japan1)/Supplement 2 >> 
    /DW 1000 
    /W [ 231 [ 500 ] ] 
    >> 
endobj
19 0 obj
    << 
    /Type /ExtGState 
    /SA false 
    /SM 0.02 
    /TR2 /Default 
    >> 
endobj
20 0 obj
    << /N 3 /Alternate /DeviceRGB /Length 2572 /Filter /FlateDecode >> 
    stream
    ...
    endstream
endobj
...

这是你的问题:

我发现有一个额外的“加密”,Identity-H,并且我在这里读到您需要一个 /ToUnicode 映射,但我似乎在文件中找不到它。

这表明文本字符串中的两字节十六进制代码是立即的字形索引到原始字体文件中。在字体文件中搜索 Unicode 字符映射(其之一cmap条目);这将提供从字形索引到 Unicode 的链接。

请注意,字形索引可能会这样做not立即转换为 Unicode 代码点。 AGSUB or GPOSOpenType 表可能已采用一个或多个 Unicode 字符作为输入,并用输出字符串中的另一字形替换它们。原始创建者也有可能(但不太可能)手动插入原始字形。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取 PDF 文件中的日文字符 的相关文章

  • 在有或没有 UNICODE 支持的情况下,如何在我的程序中使用 _stprintf?

    微软的 定义 stprintf as swprintf if UNICODE被定义 并且sprintf如果不 但这些函数采用不同的参数 在swprintf 第二个参数是缓冲区大小 但是sprintf没有这个 有人偷懒了吗 如果是这样 这就是
  • Mysql插入表后不显示右单引号(’)

    我有一个名为 测试 的表 我插入了一行 其中包含unicode字符右单引号 0x2019在名称字段中 SQL insert into Testing values Sno Name Address insert into Testing v
  • C++ 数组中的多字节 UTF-8

    我在处理数组中的 3 字节 Unicode UTF 8 字符时遇到了问题 当它们位于 char 数组中时 我收到多字符字符常量和隐式常量转换警告 但当我使用 wchar t 数组时 wcout 根本不返回任何内容 由于项目的性质 它必须是数
  • Python + PostgreSQL + 奇怪的ascii = UTF8编码错误

    我有包含字符的 ascii 字符串 x80 代表欧元符号 gt gt gt print x80 当将包含该字符的字符串数据插入数据库时 我得到 psycopg2 DataError invalid byte sequence for enc
  • Ghostscript 转换 PDF 并输出为文本文件

    1 我需要将PDF文件转换为txt 文件 我的命令似乎有效 因为我在屏幕上看到了转换后的文本 但不知何故我无法将输出定向到文本文件中 public static string GetArgs string inputPath string
  • 如何将文本日志文件导入 Excel 列

    我有一些表格数据 39645961 79966658 358920045121212 0 75 2013 01 30 20 47 52 39646124 79966771 358920045121212 0 5 2013 01 30 20
  • MySQL将unicode字符与ascii版本匹配

    我正在运行 MySQL 5 1 50 并且有一个如下所示的表 organizations CREATE TABLE organizations id int 11 NOT NULL AUTO INCREMENT name text CHAR
  • Sharepoint 列表转 PDF 报告

    我有一个 SharePoint 列表 我需要将其转换为文档 任何类型 并将其导出为 PDF 您对执行此操作的最佳方法有什么建议吗 我有 Crystal Reports 但不确定这是否是正确的用例 您可以使用对象模型或通过 Web 服务以编程
  • 将 html 文件另存为 PDF

    我正在使用 PHP 输出缓冲区创建动态 数据查看 页面的 HTML 文件 然后将此输出作为 HTML 文件保存到服务器 并希望创建此 HTML 文件的 PDF 文件 存储在服务器 但我看过的每个解决方案都要求您将 HTML 代码放入变量中
  • wcslen() 在 Xcode 和 VC++ 中的工作方式不同

    我找到wcslen 在 VC 2010 中返回正确的字母计数 而 Xcode 则不然 例如 下面的代码在 VC 2010 中返回正确的 11 但在 Xcode 4 2 中返回错误的 17 const wchar t p L 123abc 1
  • Perl 标识符中允许使用哪些字符?

    我正在做正则表达式作业 其中一个问题是 使用在线语言参考手册确定 Java Python Perl 和 C 的整数常量和标识符的正则表达式 我不需要关于正则表达式的帮助 我只是不知道 Perl 中的标识符是什么样的 我找到了描述有效标识符的
  • 如何在 C++ 中打印 Unicode 字符

    我正在尝试打印俄语 U 0444 http www unicode org charts PDF U0400 pdf西里尔小写字母 EF 字符 给出十进制代码1092 http en wikipedia org wiki D0 A4 使用C
  • SVG 线条描边-dasharray 无法正确打印为 PDF

    打印行与stroke dasharrayPDF 创建不同的行为 请 看着那 这image https i stack imgur com doOku png here 图A 我直接从浏览器 Chrome 获取的屏幕截图 图B是同一页面的打印
  • 语言之间的 Unicode 范围映射

    此链接列出了 7707 种语言http www sil org iso639 3 download asp http www sil org iso639 3 download asp and http en wikipedia org w
  • 使用 jQuery 将文本分解到随机位置

    有一些 jQuery 示例 介绍如何内爆文本 如下所示 http jsfiddle net doktormolle dNXVx http jsfiddle net doktormolle dNXVx 我怎样才能做到相反 我想将跨度元素中的字
  • 将阿拉伯语文本导出为图像

    我有一堆 UTF 8 格式的阿拉伯文本 我尝试显示此设备的设备不支持显示阿拉伯语文本 因此 我需要将文本转换为图像 我想将每行文本保存为具有特定宽度的图像 我还需要使用特定的字体 做这个的最好方式是什么 有人知道这里有一个有用的工具吗 到目
  • 在 python 中创建带有工具提示的 pdf

    这是流行且高度赞扬的 Python 副本在 R 中使用工具提示创建 pdf https stackoverflow com questions 4691780 create pdf with tooltips in r 简单的问题 有没有办
  • VB6中如何将十六进制字符串转换为字节数组

    我有以下字节数组 Dim Template 1023 As Byte 然后我调用指纹扫描仪设备函数并返回以下内容 Template 0 70 Template 1 77 Template 2 82 Template 1023 0 然后我将字
  • 标签中的文字大小

    如何限制标签中的字符数 您可以通过设置自动截断带有省略号的文本frame of the UILabel NSInteger newSize 10 label frame CGRectMake label frame origin x lab
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en

随机推荐