- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要知道 PDF 词典值的编码(不是向用户显示的文本,而是“隐藏的代码”)。我打算不为此使用任何库。在哪里可以找到它?
最佳答案
the encoding of the values of PDF dictionaries
PDF 词典的值是 PDF 对象。
您应该查看 PDF 规范 ISO 32000-1 ,特别是第 7 章语法,了解 PDF 对象。你会发现:
The tokens that delimit objects and that describe the structure of a PDF file shall use the ASCII character set. In addition all the reserved words and the names used as keys in PDF standard dictionaries and certain types of arrays shall be defined using the ASCII character set.
因此,大多数时候您必须处理 ASCII 值。
但是,对于字符串来说,情况很棘手,因为有多种类型的字符串使用相同的字符串语法选项,因此您必须根据上下文解释它们的内容。
Table 35 – String Object Types
Type Description
text string Shall be used for human-readable text, such as text annotations, bookmark names, article names, and document information. These strings shall be encoded using either PDFDocEncoding or UTF-16BE with a leading byte-order marker. This type is described in 7.9.2.2, "Text String Type."
PDFDocEncoded string Shall be used for characters and glyphs that are represented in a single byte, using PDFDocEncoding. This type is described in 7.9.2.3, "PDFDocEncoded String Type."
ASCII string Shall be used for characters that are represented in a single byte using ASCII encoding.
byte string Shall be used for binary data represented as a series of bytes, where each byte can be any value representable in 8 bits. The string may represent characters but the encoding is not known. The bytes of the string need not represent characters. This type shall be used for data such as MD5 hash values, signature certificates, and Web Capture identification values. This type is described in 7.9.2.4, "Byte String Type."
如果字符串是值,例如作者元数据的,它是一个文本字符串,因此它使用 PDFDocEncoding 或带有前导字节顺序标记的 UTF-16BE 进行编码。
如果另一方面,字符串是值,例如签名字典中的内容,它是一个保存二进制对象的字节字符串,任何根据某种编码解释它的尝试都会失败。
流的情况更加棘手。
首先,流内容可能会以某种方式进行处理,例如它可能被压缩。要获取实际的流内容,您首先必须撤消此处理。
内容可以是二进制的,例如字体程序或文本,例如JavaScript,或者它可能是内容流,例如页面内容。
A content stream is a PDF stream object whose data consists of a sequence of instructions describing the graphical elements to be painted on a page. The instructions shall be represented in the form of PDF objects, using the same object syntax as in the rest of the PDF document.
因此,它们大多是 ASCII 值。文本绘制指令的字符串参数也是一个异常(exception)。它们的编码完全取决于绘制字符串时当前选择的字体,并且字体可能使用标准编码,但它们也可能使用完全困惑的临时编码。
PS:如果您碰巧尝试分析加密的 PDF,您会发现加密适用于文档 PDF 文件中的所有字符串和流,只有极少数异常(exception)。特别是加密不适用于字典和数组结构、数字和名称。因此,不知道这一点的人可能不会意识到 PDF 已加密,而是假设字符串和流以非常奇怪的方式编码。
关于pdf - PDF 词典的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068916/
我正在尝试这样做: var myBeacons: [NSUUID: [Int]] = [NSUUID(UUIDString:"74278BDA-B644-4520-8F0C-720EAF059935"
我的字典有问题。如果我将一个对象添加到字典中,它会用添加的项目覆盖整个包含项目。 添加所有元素后,Dictionary 包含正确数量的项目,但项目都是最后添加的项目。 For Each shp In
我使用字典,我将有大约一百万个条目,我将定期添加、删除、编辑和轮询..我想知道所有条目的上/下边是什么,如果有一种更高效的方式。 最佳答案 这取决于你想做什么。如果您想要一个具有快速插入、查找和删除功
我在 Swift 类中的字典数组方面遇到问题。我的代码无法在类或结构中运行,但可以在外部运行。 var data = [Dictionary]() data.append([123: "test"])
有没有一种方法可以添加注释来记录 Dictionary 或 ConcurrentDictionary 以了解键/值的含义? 例如: Dictionary _users; 这个例子有一个用户字典。 gu
我正在基于 Android AOSP LatinIME 项目创建自己的输入法应用。我设法找到了一些用于自动更正和预测的字典文件(main_en.dict、main_fr.dict 等)。 但对于许多其
我已经通过 Locale::Maketext 使我的网站支持多种语言(或更具体地说是 CatalystX::I18N::Model::Maketext )。 我的 maketext 类在编译时通过从数
我不会说英语,而且我的英语也不是很好。我自以为是。我没有和其他人一起在一个共同的代码库上工作过。我没有任何编程的 friend 。我不与其他程序员一起工作(至少没有人关心这些事情)。 我想这可能解释了
我需要做 currentKey+1。所以我想找到键值的索引并获取下一个键(如果在末尾则为第一个)。我如何找到 key 的当前索引? 我正在使用 Dictionary我用 Linq 查找 .Find 或
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我使用 python 2.7 中的 shelve 模块保存了一个数据文件,该文件不知何故已损坏。我可以用 db = shelve.open('file.db') 加载它,但是当我调用 len(db)
我想试试这个抽认卡的想法,为即将到来的测试尝试学习关键字及其含义。我想在 python 上创建一个字典,我可以用它来帮助解决这个问题。这个想法是向我显示定义,然后我必须猜测已定义的词。我在下面展示了如
当尝试 .format() 一次列表中的多个词典时,控制台会给我一个 AttributeError:'list' object has no attribute 'items'。 我尝试滚动浏览提示的
我在公共(public)类(class)中有一个公共(public)词典如下: namespace ApiAssembly { public static class TypeStore
我需要做 currentKey+1。所以我想找到键值的索引并获取下一个键(如果在末尾则为第一个)。我如何找到 key 的当前索引? 我正在使用 Dictionary我用 Linq 查找 .Find 或
我的字典总是零,想了解为什么会这样。我的代码: var dic = [NSDate : MCACalendar]?() dic?[currentDate!] = calendar 最佳答案 @Kirs
给定(简化描述) 我们的一项服务在内存中有很多实例。大约 85% 是独一无二的。我们需要对这些项目进行非常快速的基于键的访问,因为它们在单个堆栈/调用中被非常频繁查询。这个单一上下文的性能得到了极大的
我想为“Sinhala Language speech recognition”僧伽罗语建立新的声学模型、新词典、新语言模型字符是基于 Unicode 的。例如 A=අ,I=ඉ,U=උ,KA=ක,BA
我需要一个带有 的正面和负面词的列表重量 根据单词的强度和周数分配单词。我有 : 1.) WordNet - 它为每个单词提供 + 或 - 分数。 2.) SentiWordNet - 在 [0,1]
我有一个 Jinja2 字典,我想要一个可以修改它的表达式 - 通过更改其内容或与另一个字典合并。 >>> import jinja2 >>> e = jinja2.Environment() 修改字
我是一名优秀的程序员,十分优秀!