PDF文件格式解析(1)- 了解PDF的语法格式

PDF文件格式解析(1)- 了解PDF的语法格式

由Adobe Systems Incorporated开发的PDF(便携式文档格式)被Adobe描述为一种通用的文档表示语言。PDF代表格式化的,面向页面的文档。这些文档可以是结构化的或简单的。它们可能包含文本,图像,图形和其他多媒体内容,例如视频和音频。支持注释,元数据,超文本链接和书签。更高版本提供了其他功能,例如,将地理空间信息嵌入到代表地图或其他地理空间图像(例如卫星照片)的文档中。

PDF的核心是源自PostScript页面描述语言的图像模型。请参阅后记格式族。该模型可以在完整,精确和专业的级别上以与设备无关和与分辨率无关的方式来描述文本和图形。与作为编程语言的PostScript不同,PDF基于结构化的二进制文件格式,该格式针对交互式查看的高性能进行了优化


最新的都已经到PDF2.0的格式了,但是PDF2.0的标准还没有广泛采用,所以本文的介绍还是以PDF1.7为解析参考蓝本。
enter description here

PDF的发展史不做过多介绍,本系列文章就是简析PDF文件结构。 pdf_reference_1-7是Adobe PDF的参考手册,可自行从https://www.adobe.com/devnet/pdf/pdf_reference_archive.html下载。

我们看其中的一个例子 TABLE G.2 Objects in simple text string example

  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代码的显示结果就是Hello World,如下图。
enter description here

从整体结构来看语法有点类似XML,HTML,基本都有节点控制。每个obj小节都会有个endobj。

enter description here
enter description here

从上面的介绍来看PDF就像变成HTML一样是有固定格式的,所以接下来几个章节就围绕PDF的格式做一个简要的解析。

posted @ 2019-12-19 22:36  阿丽塔  阅读(12012)  评论(1编辑  收藏  举报