「PDF Explained筆記」修訂間的差異
跳至導覽
跳至搜尋
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:資訊]] |
於 2023年12月26日 (二) 23:06 的修訂
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檔案擴充成為新的檔案格式更親民。但是,這也意味著資料更好被篡改(因為規格比較好讀,且比較不容易因為動到哪些地方就出錯,門檻比較低)。