最近實在是有點懶的寫blog,一半是工作,一半是blog都會出現亂碼,要手動調編碼才會正常,上星期花了點時間把整個wordpress重新安裝,並換了個theme,測試幾天下來都還蠻正常的,廢話不多說,正式開工嚕。
在工作上的有遇到外字轉PDF的問題,至於要怎麼轉就不在此篇的討論範圍內,此文章主要討論如何判定PDF的正確性,其實最簡單的方式就是開啟PDF並按「Ctrl + D」來檢示內容,如下圖所示
一份正確的PDF必定會把字型內嵌進去,在客戶那邊有遇到一個問題,就是字型沒有嵌入進去,如下所示,
但開啟PDF一樣可以看到正確的字碼,但要如何的判斷此份PDF文件是否正常? 正確的PDF文件是可以copy & paste的,只要copy PDF的一段文字,並貼在notepad上,如可顯示copy的文字,這表示至少此PDF文件還算正常,在我客戶的例子是沒辦法正確的貼上,這時就要使用ultraedit來看一下PDF的「字碼」是否正確了,從PDF挑了「訊」這個字,訊的big5碼是「B054」,Unicode碼是「8A0A」,我在同一份PDF裡面挑了兩個不同位置的「訊」字,理論上就算位置的不同,但字碼還是一樣要相同,奇妙的事情發生了,如下圖所示,
訊字是用4 byte所顯示,而且兩個訊字的碼位都不同,在UTF-8的格式裡面,只有Ext.B字面才會用到4-6 byte,UTF-16也是在Ext.B才會用到4 byte,由此可以看出此份PDF確實是有問題的。
後來尋問了一下客戶是用什麼方式轉PDF的,對方告知是用ReportViewer來轉存的,搜尋了微軟,發現如下兩篇文章文章一、文章二,更可以確定目前ReportViewer轉存PDF是有問題的。


