如何将PDF内容代码转换为类似“的类型”;(<;0034>;)Tj";?

如何将PDF内容代码转换为类似“的类型”;(<;0034>;)Tj";?,pdf,pdf-generation,ghostscript,pdf-conversion,pdf-parsing,Pdf,Pdf Generation,Ghostscript,Pdf Conversion,Pdf Parsing,PDF内容以多种方式保存,“(abc)Tj”、“()Tj”或“\u065” 我想知道是否有办法将PDF代码转换为一种类型,无论是直接文本“(abc)Tj”,还是十六进制“()Tj”,或八进制“\u065” 我认为如果将PDF转换为一种类型并进行编码,将更容易分析内容 是否可以使用Ghostscript或其他方法来实现这一点?谢谢基本上,没有,没有办法这样做。有两种字符串,以“(”和“)”分隔的常规字符串和以“”分隔的十六进制字符串。十六进制字符串不需要转义,而常规文本字符串则需要用于“特殊”字符

PDF内容以多种方式保存,“(abc)Tj”、“()Tj”或“\u065”

我想知道是否有办法将PDF代码转换为一种类型,无论是直接文本“(abc)Tj”,还是十六进制“()Tj”,或八进制“\u065”

我认为如果将PDF转换为一种类型并进行编码,将更容易分析内容


是否可以使用Ghostscript或其他方法来实现这一点?谢谢

基本上,没有,没有办法这样做。有两种字符串,以“(”和“)”分隔的常规字符串和以“”分隔的十六进制字符串。十六进制字符串不需要转义,而常规文本字符串则需要用于“特殊”字符,如回车符和换行符。在常规字符串中也允许八进制

PDF制作人可以随意混合和匹配这些内容,但一般来说,给定的PDF制作人通常会在整个过程中使用一种技术

因为Ghostscript的pdfwrite设备是PDF制作者,所以(我相信)它通常会以相同的方式生成所有输出


它不会做的是“转换”原始PDF文件。它生成了一个全新的PDF文件,该文件在视觉上应该是相同的,但其内部结构与原始PDF文件没有任何相似之处。此外,一些元数据或保真度可能会丢失。

因此我没有办法更改PDF中的技术?基本上没有。当然,您可以编写代码来更改。如果的长度与(!!)或(\041\041)不同,则更改字符串表示将更改内容流的长度,这将意味着更改外部参照表。当然,内容流通常也会被压缩,因此您需要对其进行解压缩、更改字符串表示、重新压缩、将其写回原始文件(移动以下字节),最后更新外部参照表。似乎有很多麻烦是徒劳的。。。。似乎没有实际的理由这样做。字符串的格式仅用于存储。任何PDF解析器都应该完全不知道文本“!?”是如何存储的:作为
(!?)
,作为
,或作为
(\41\77)
。存储格式不是“按原样”保存在内存中,它将被解析为内部格式。我试图通过直接从未压缩的PDF“[]TJ”和“()TJ”读取代码来从PDF中提取文本,但是我发现这非常困难,因为有太多的字符技术,如or(\041\041)或(!!)。此外,还有“\ToUnicode”和“\Differences”参数。。。太难了。因此,我认为如果我将它们转换为一种技术,提取将更容易。我知道有一些免费的命令行工具,如PDFtoText.exe等,但我想在我的程序中这样做,并在我的应用程序区域渲染文本。你的第二个“几种方法”示例是错误的,应该是
Tj
。将输入格式转换为它们所表示的确切字节的规则在正式规范中有概述,并不难实现。