Windows 中是否有获取 PDF 文件源代码的方法?
Is there a way to obtain Source Code of a PDF file in Windows?
我一直在寻找一种获取 PDF 文件源代码的方法,不是十六进制代码而是纯文本代码,我的目的是从纯文本编码一个 PDF 文件,这样我就可以创建一个使用 ESP32 或 Arduino 板的 PDF 报告,将源代码上传到程序,将其保存到 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 代码,这对我的目的来说有点无用。如果对此项目有任何帮助或指导,我将不胜感激。
我使用 PDFEdit 软件找到了解决方案。
http://pdfedit.cz/en/pdfedit_windows.html
在调试部分有一个名为 Decode 的选项,它生成一个 .decode 文件,然后我用记事本打开它,我能够得到一个可读的、可修改的代码(可在我需要的部分修改,例如日期、小时名称、温度、路线等)。
您可以尝试修改一些文本,然后将其另存为 .pdf,您将能够看到更改。
证据:
Original Document unmodified
"Source Code" viewed in NotePad
更改一些文本后,我将其另存为 .pdf 并看到了我想要的更改。
[用NotePad修改的文档3
代码非常广泛(5000 行),但也许我可以生成一些非常简单的模板并减少这些行。谢谢大家!
对于你提出的一个潜在解决方案是 MuPDF/MuTool 如果你想反编译现有的 PDF,MuPDF-GL 中有选项 windows 使用选项 A 转换为 Ascii 和“PrettyPrint”
您可以将自己的 PDF 编写为文本,但它可能有一些限制,这被接受为工作 PDF
%PDF-1.2 4 0 obj << >> stream BT/ 36 Tf((Hello World!))' ET endstream endobj 3 0 obj << /Type /Page /Parent 2 0 R /Contents 4 0 R >> endobj 2 0 obj << /Kids [3 0 R ] /Count 1 /Type /Pages /MediaBox [ -195 -442 400 400 ] >> endobj 1 0 obj << /Pages 2 0 R /Type /Catalog >> endobj trailer << /Root 1 0 R > %%EOF
由 Thomas 提供请参阅
如果您在“小型设备”上使用 UTF 16 个字符进行“手球”,则难度会更大,请参阅
更有利于生成您自己的许多 RaspberryPi 用户通过 MuTool Create 编译 PDF https://mupdf.com/docs/manual-mutool-create.html
编译期间要翻译的输入文本要简单得多,尤其是图像处理
%%MediaBox 0 0 612 792
%%Font TmRm Times-Roman
%%Font Helv-C Helvetica Cyrillic
%%Font Helv-G Helvetica Greek
%%Image I0 logo/ClientLogo.png
% Draw the image.
q
480 0 0 480 50 250 cm
/I0 Do
Q
% Draw a triangle. (Can be rectangles or a grid etc)
q
1 0 0 rg
50 50 m
100 200 l
200 50 l
f
Q
% Show some text. (Remember we humans work downwards, so 50 in then 760,730,700, etc. downwards)
q
0 0 1 rg
BT /TmRm 24 Tf 50 760 Td (Hello, from EPS32!) Tj ET
BT /Helv-C 24 Tf 50 730 Td <fac4d2c1d7d3d4d7d5cad4c521> Tj ET
BT /Helv-G 24 Tf 50 700 Td ( I am Line 3) Tj ET
Q
我一直在寻找一种获取 PDF 文件源代码的方法,不是十六进制代码而是纯文本代码,我的目的是从纯文本编码一个 PDF 文件,这样我就可以创建一个使用 ESP32 或 Arduino 板的 PDF 报告,将源代码上传到程序,将其保存到 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 代码,这对我的目的来说有点无用。如果对此项目有任何帮助或指导,我将不胜感激。
我使用 PDFEdit 软件找到了解决方案。 http://pdfedit.cz/en/pdfedit_windows.html 在调试部分有一个名为 Decode 的选项,它生成一个 .decode 文件,然后我用记事本打开它,我能够得到一个可读的、可修改的代码(可在我需要的部分修改,例如日期、小时名称、温度、路线等)。 您可以尝试修改一些文本,然后将其另存为 .pdf,您将能够看到更改。 证据: Original Document unmodified "Source Code" viewed in NotePad 更改一些文本后,我将其另存为 .pdf 并看到了我想要的更改。 [用NotePad修改的文档3
代码非常广泛(5000 行),但也许我可以生成一些非常简单的模板并减少这些行。谢谢大家!
对于你提出的一个潜在解决方案是 MuPDF/MuTool 如果你想反编译现有的 PDF,MuPDF-GL 中有选项 windows 使用选项 A 转换为 Ascii 和“PrettyPrint”
您可以将自己的 PDF 编写为文本,但它可能有一些限制,这被接受为工作 PDF
%PDF-1.2 4 0 obj << >> stream BT/ 36 Tf((Hello World!))' ET endstream endobj 3 0 obj << /Type /Page /Parent 2 0 R /Contents 4 0 R >> endobj 2 0 obj << /Kids [3 0 R ] /Count 1 /Type /Pages /MediaBox [ -195 -442 400 400 ] >> endobj 1 0 obj << /Pages 2 0 R /Type /Catalog >> endobj trailer << /Root 1 0 R > %%EOF
由 Thomas 提供请参阅
如果您在“小型设备”上使用 UTF 16 个字符进行“手球”,则难度会更大,请参阅
更有利于生成您自己的许多 RaspberryPi 用户通过 MuTool Create 编译 PDF https://mupdf.com/docs/manual-mutool-create.html
编译期间要翻译的输入文本要简单得多,尤其是图像处理
%%MediaBox 0 0 612 792
%%Font TmRm Times-Roman
%%Font Helv-C Helvetica Cyrillic
%%Font Helv-G Helvetica Greek
%%Image I0 logo/ClientLogo.png
% Draw the image.
q
480 0 0 480 50 250 cm
/I0 Do
Q
% Draw a triangle. (Can be rectangles or a grid etc)
q
1 0 0 rg
50 50 m
100 200 l
200 50 l
f
Q
% Show some text. (Remember we humans work downwards, so 50 in then 760,730,700, etc. downwards)
q
0 0 1 rg
BT /TmRm 24 Tf 50 760 Td (Hello, from EPS32!) Tj ET
BT /Helv-C 24 Tf 50 730 Td <fac4d2c1d7d3d4d7d5cad4c521> Tj ET
BT /Helv-G 24 Tf 50 700 Td ( I am Line 3) Tj ET
Q