2,617
次編輯
Tankianting(討論 | 貢獻) |
Tankianting(討論 | 貢獻) |
||
行 16: | 行 16: | ||
* PDF語法包含:文件內容、頁面內容、檔案結構 | * PDF語法包含:文件內容、頁面內容、檔案結構 | ||
==Ch2 | ==Ch2 介紹如何製作PDF及以後== | ||
* 個人註:基本上只看了這本書仍然無法製作PDF library,尤其是cross-reference table的offset不好求取。 | * 個人註:基本上只看了這本書仍然無法製作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檔案擴充成為新的檔案格式更親民。但是,這也意味著資料更好被篡改(因為規格比較好讀,且比較不容易因為動到哪些地方就出錯,門檻比較低)。 | |||
[[category:資訊]] | [[category:資訊]] |