PDF Explained筆記

這是書本的筆記或心得,相關資訊:

作者:John Whitington

書號:ISBN 9781449310028

Ch1 概述

  • 是頁面描述語言,有結構資料和元資料
  • PDF有字型或嵌入檔、點陣、向良圖、導覽(大綱或連結)、互動式表格等等
  • PostScript可以生適當解析度的點陣圖,是程式語言,但不適合random access頁面(註:因為要render速度慢)
  • PDF可以精確呈現,是PostSctipt的子集的擴展。PDF是線型的,所以可以在常數時間內存取資料。
  • stream creation可以輸出大於記憶體的大小的檔案,後附資料不影響前附資料
  • 可搜尋、嵌入字型
  • 有PDF/A、PDF/X
  • 向量語言用PostScript
  • 點陣圖有遮罩、色彩空間指定、位元指定
  • 元資料:作者、標題等,1.4版本以上可以使用XML等
  • 還有互動式表單等等的optional內容
  • PDF語法包含:文件內容、頁面內容、檔案結構

Ch2 介紹如何製作PDF及以後

  • 個人註:基本上只看了這本書仍然無法製作PDF library,尤其是cross-reference table的offset不好求取。
  • 有檔案內object的cross-reference table、offset,以及一些非ASCII字元,所以光看這本書還是無法寫出PDF-library。加上PDF對裡面的binary等物件大小是敏感的,而且要明文記載在檔案裡面,假設用文字編輯器打開存檔,很容易因為換行符號轉換導致數字兜不起來而故障,所以不要用文字編輯器開PDF。
  • pdf 有三種結構
    • document
    • page content
    • file content
  • 資料型別包含:dict、string、array、real、integer等
  • 1 0 R表第一個物件
  • 使用逆波蘭表示,函數在後面,類似日語那樣的SOV語序。
  • 1 page要有資源和page content(向量圖形、文字)
  • header包含非ASCII的字元,避免檔案傳輸時被改變產生問題。
  • 檔案內分成Main Objects、Page Objects等多個Object,並有有向圖聯繫。
  • 需要用PDFtk修飾offset這類的東西。

後來有介紹圖形操作(類似transformation)、文字操作,以及基本的字型、連結、章節綱要、常見pdf軟體等。

其中提到文字表示:小規模的文字列可以輸入,大規模精細的換行排版需要自己指定,是一種折衷的做法,可以使用Kern這種微調字元間距的方式。

心得

讀完有點空虛感,部分是因為太複雜了,就算瞭解他的運作流程,也是很難創作PDF檔案。不如製作擴充的,可以base64內嵌二進位檔的SVG檔案擴充成為新的檔案格式更親民。但是,這也意味著資料更好被篡改(因為規格比較好讀,且比較不容易因為動到哪些地方就出錯,門檻比較低)。