【发布时间】:2021-10-22 18:18:19
【问题描述】:
我一直在寻找一种方法来获取 PDF 文件的源代码,而不是 HEX 代码而是纯文本代码,我的目的是从纯文本编码 PDF 文件,这样我就可以创建 PDF 报告使用 ESP32 或 Arduino 板,将源代码上传到程序,将其保存到 SD 卡并使用 .pdf 扩展名重命名。
我知道这比添加行和字符串更复杂,就像您对 HTML 文档所做的那样。如果我添加或删除一个对象,文件将被损坏,但计划是生成一个“PDF 布局,就像这样:
PDF Layout Example
PDF Layout Table Example
这样我就不会删除或添加任何对象,只需修改已经存在的字符串。我发现我可以从像记事本这样的文本编辑器使用纯文本生成 PDF 文件,如下例所示:
%PDF-1.4
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
>>
endobj
2 0 obj
<< /Type /Outlines
/Count 0
>>
endobj
3 0 obj
<< /Type /Pages
/Kids [ 4 0 R ]
/Count 1
>>
endobj
4 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [ 0 0 612 792 ]
/Contents 5 0 R
/Resources << /ProcSet 6 0 R
/Font << /F1 7 0 R >>
>>
>>
endobj
5 0 obj
<< /Length 73 >>
stream
BT
/F1 24 Tf
100 100 Td
( Hello World ) Tj
ET
endstream
endobj
6 0 obj
[ /PDF /Text ]
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Helvetica
/Encoding /MacRomanEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000009 00000 n
0000000074 00000 n
0000000120 00000 n
0000000179 00000 n
0000000364 00000 n
0000000466 00000 n
0000000496 00000 n
trailer
<< /Size 8
/Root 1 0 R
>>
startxref
625
%%EOF
所以我一直在寻找一种从我的 PDF 布局中提取这种代码的方法,但我只能提取 HEX 代码,这对我的目的来说是无用的。对于这个项目的任何帮助或指导,我将不胜感激。
【问题讨论】:
-
stackoverflow.com/questions/7145778/… 检查现有的模板方法
-
在文本编辑器中打开您的 PDF,您将获得文档的文本表示(以及那些无法以文本表示的部分)。
-
感谢您的回复。我已经尝试过这样做,但我只能得到这样的字符:xœ•X]Sã6}ϯÐ#ûP¡K¶ó–(Ûiv[0ÙÎÎì∼Ä€wb›Úvwÿ@¯,Ù–B,› °,–9çèêèêã 我确信有一种方法可以从 PDF 中获取可读、可修改的代码,但我对 PDF 语言了解不多...
-
PDF 文件是二进制文件。字节偏移与地图一起使用以尝试布局页面和许多其他事情。这需要一个组合引擎来放置文本、紧缩字符、确定正确的换行和分页。如果不理解这一切,你永远无法编写一个简单的 hello world。更好的方法是 ESP 上的 Java,然后重写 FOP 以在这个精简的平台上运行
-
Pdf 是二进制格式。是的,您可以尝试限制自己,不使用压缩或嵌入其他二进制数据,使其在文本编辑器中看起来像纯文本。但这并不对应于一些“pdf源代码”,它只是对pdf允许的一小部分的限制。