有没有办法在Windows中获取PDF文件的源代码?

bxgwgixi  于 2023-11-21  发布在  Windows
关注(0)|答案(2)|浏览(315)

我一直在寻找一种方法来获得PDF文件的源代码,不是十六进制代码,而是纯文本代码,我的目的是从纯文本编码PDF文件,这样我就可以用ESP32或Arduino板创建PDF报告,将源代码上传到程序,保存到SD卡并将其重命名为.pdf扩展名。
我知道这比像HTML文档那样添加行和字符串要复杂得多。如果我添加或删除对象,文件将被损坏,但计划是生成一个“PDF布局就像这样:
PDF Layout Example
PDF Layout Table Example
这样我就不会删除或添加任何对象,只是修改已经存在的String。我发现我可以从文本编辑器(如记事本)使用纯文本生成PDF文件,如下所示:

  1. %PDF-1.4
  2. 1 0 obj
  3. << /Type /Catalog
  4. /Outlines 2 0 R
  5. /Pages 3 0 R
  6. >>
  7. endobj
  8. 2 0 obj
  9. << /Type /Outlines
  10. /Count 0
  11. >>
  12. endobj
  13. 3 0 obj
  14. << /Type /Pages
  15. /Kids [ 4 0 R ]
  16. /Count 1
  17. >>
  18. endobj
  19. 4 0 obj
  20. << /Type /Page
  21. /Parent 3 0 R
  22. /MediaBox [ 0 0 612 792 ]
  23. /Contents 5 0 R
  24. /Resources << /ProcSet 6 0 R
  25. /Font << /F1 7 0 R >>
  26. >>
  27. >>
  28. endobj
  29. 5 0 obj
  30. << /Length 73 >>
  31. stream
  32. BT
  33. /F1 24 Tf
  34. 100 100 Td
  35. ( Hello World ) Tj
  36. ET
  37. endstream
  38. endobj
  39. 6 0 obj
  40. [ /PDF /Text ]
  41. endobj
  42. 7 0 obj
  43. << /Type /Font
  44. /Subtype /Type1
  45. /Name /F1
  46. /BaseFont /Helvetica
  47. /Encoding /MacRomanEncoding
  48. >>
  49. endobj
  50. xref
  51. 0 8
  52. 0000000000 65535 f
  53. 0000000009 00000 n
  54. 0000000074 00000 n
  55. 0000000120 00000 n
  56. 0000000179 00000 n
  57. 0000000364 00000 n
  58. 0000000466 00000 n
  59. 0000000496 00000 n
  60. trailer
  61. << /Size 8
  62. /Root 1 0 R
  63. >>
  64. startxref
  65. 625
  66. %%EOF

字符串
因此,我一直在寻找一种方法来提取这种代码从我的PDF布局,但我一直只能提取十六进制代码,这是一种无用的我的目的。我会对任何帮助或指导这个项目表示感谢。

5gfr0r5j

5gfr0r5j1#

对于你提出的一个潜在的解决方案是MuPDF/MuTool如果你想反编译一个现有的PDF文件,在MuPDF-GL中有一些选项可以使用选项A转换为Ascii和“PrettyPrint”。
您可以编写自己的PDF作为文本,但它可以有限制,这是接受作为一个工作的PDF

  1. %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

字符串
由托马斯提供,请参见创建pdf类型的内存流并返回浏览器
如果你在一个“小型设备”上使用UTF 16字符进行“手球”,那么就更难了,请参阅https://stackoverflow.com/a/68442444/10802527
更有用的生产自己的许多RaspberryPi用户通过MuTool Create https://mupdf.readthedocs.io/en/latest/mutool-create.html编译PDF
在编译过程中要翻译的输入文本要简单得多,特别是对于图像处理

  1. %%MediaBox 0 0 612 792
  2. %%Font TmRm Times-Roman
  3. %%Font Helv-C Helvetica Cyrillic
  4. %%Font Helv-G Helvetica Greek
  5. %%Image I0 logo/ClientLogo.png
  6. % Draw the image.
  7. q
  8. 480 0 0 480 50 250 cm
  9. /I0 Do
  10. Q
  11. % Draw a triangle. (Can be rectangles or a grid etc)
  12. q
  13. 1 0 0 rg
  14. 50 50 m
  15. 100 200 l
  16. 200 50 l
  17. f
  18. Q
  19. % Show some text. (Remember we humans work downwards, so 50 in then 760,730,700, etc. downwards)
  20. q
  21. 0 0 1 rg
  22. BT /TmRm 24 Tf 50 760 Td (Hello, from EPS32!) Tj ET
  23. BT /Helv-C 24 Tf 50 730 Td <fac4d2c1d7d3d4d7d5cad4c521> Tj ET
  24. BT /Helv-G 24 Tf 50 700 Td ( I am Line 3) Tj ET
  25. Q


x1c 0d1x的数据
png背景只有9个像素,看起来像文本,实际上可能不到1 Kb,227字节

展开查看全部
vngu2lb8

vngu2lb82#

我找到了一个解决方案与软件PDFEdit. http://pdfedit.cz/en/pdfedit_windows.html有一个选项称为解码在编辑部分,它会生成一个.decode文件,然后我用记事本打开,我能够得到一个readeable,可修改的代码(可修改的部分,我需要的,如日期,小时名称,温度,路线等)。你可以尝试它,并修改一些文本,然后保存为.pdf,你将能够看到的变化。证据:Original Document unmodified"Source Code" viewed in NotePad后,改变了一些文本,我保存为.pdf,看到了我想要的变化。[文档修改与记事本3
代码是真的广泛(5000行),但也许我可以生成一些非常简单的模板,并减少这行。感谢大家!

相关问题