Posts Tagged ‘ 實作筆記

三款免費PDF轉檔軟體評比

很久沒有寫文章了,在這邊先向大家拜個晚年,祝大家虎年行大運、事事如意。因為最近在工作上遇到了一個小問題,讓我有了構想來寫這一篇文章,主要就是先前所使用的pdf軟體,如果檔名是中文的話,則轉換後檔名僅會顯示ANSI的字元,每次轉完都需要自己在改一次檔名,由於我是個懶人,實在很不喜歡重複做工,所以測試了目前幾款免費的PDF轉換軟體,供各位參考。我自己的需求非常的簡單,主要就是可將文件轉換為pdf格式,轉換後的文件支援中文檔名。如下將以這兩點作為主要的測試。

PDFCreator – 我想這款軟體無庸自疑應是最強大的免費轉檔軟體,可將文件轉換為pdf、png、jpg等等格式,並且有中文界面(中文語系檔),但是很可惜的一點是在文件轉換時,並不支援unicode字元,也就是中文檔名轉換後會變成亂碼,關於此問題我有寫信去詢問官方開發者,就他們的回覆為因為pdfcreater是採用Ghostscript作為開發的核心,而Ghostscript本身為ANSI的應用程式,而目前並沒有轉換為unicode的計畫。所以官方回覆最好的辦法是將檔名命名為ANSI的格式。

CutePDF Writer – 這是一款功能非常精簡的免費軟體,只能進行將文件轉換為pdf的動作,不過重點是它支援中文的檔案名稱。在操作上也是因為精簡,所以並無任何的界面可進行設定,單純的只是將文件列印成pdf格式,如要更進階的功能建議可以參考cutepdf pro(付費版本)。在安裝過程中還需另外下載PS2PDF安裝,也支援Ghostscript,但我想如果核心一樣應該也是會有像PDFCteater相同的問題。

doPDF – 這是介於上述兩款之間的免費軟體,有簡易的使用者界面,也有支援中文語系並且有專人維護,並且也支援中文檔案名稱,在轉換的格式上僅支援pdf而已,在測試時,有發現一點小地方並不是很順手,就是我的使用習慣是將文件選擇轉換儲存位置後會將文件關閉,而dopdf的流程則是先選擇位置後,才開始進行轉換的動作(將文件送至印表機),這造成我將文件關閉後,dopdf會無法將文件列印成pdf格式,整個卡在準備列印的程序。而另一個小缺點則是在選擇儲存位置時會有廣告的顯示。

下列將比較的三款轉檔軟體製成一張簡易的表格供大家參考。由於我的需求簡單,最後選擇CutePDF Writer來使用,畢竟我還是討厭嵌入式的廣告阿。

比較

解決Windows 7播放DVD無字幕問題

今天跟女王一起看DVD-Image時,發現字幕都出不來,明明有設定但是就是沒有字幕,而且妙的是用Windows 7內建的Media Player Center撥放就有字幕,但用MPC就是沒有,不死心的我找了老半天才找到解答,供大家參考一下。我是安裝K-Lite Codec Pack,所以是使用Media Player Classic-Homecinema來播放的。

解決的方式一共有三種,而第一種呢我自己試後是無效,不過也貼出來參考一下。

  1. 在【選項】的【外部篩選器 (External Filters)】加入【DirectVobSub (Auto-loading version
  2. 加入後在右邊的部分選取為【偏好】(Prefer)

設定

第二種設定方式是從K-lite網站上的Q&A找到的,我有嘗試找了一下設定,不過沒找到,希望有試成功的人可以說明一下。

  1. 從Codec Tweak Tool關閉DXVA

第三種設定方式比較簡單,不過我也不知道差異在哪,反正有字幕才是最重要的事。

  1. 在【選項】的【內部篩選器 (Internal Filters)】中勾選【MPEG-2 Video

設定


何謂UTF-8、UTF-16及UTF-32

繼上一篇文章「Big5碼與Unicode碼之差異性」之後,在留言的部份子靖尋問到,何謂「UTF-8」,所以在本篇中,也將以淺顯易懂的方式來向各位說明。

「何謂UTF-8、UTF-16及UTF-32」

什麼是UTF-8?其實在Wiki中有寫到,UTF是Unicode Transformation Format的縮寫,如就字面上翻譯的話是「Unicode轉換格式」。而數字8則表示是用八個位元所組成的編碼,16就表示用十六個位元組成。如用簡單點的方式來說明這幾種格式的話,UTF-8、UTF-16及UTF-32都是用來表示Unicode的一種儲存格式

「儲存格式」

在上述Wiki的文章內有提到,UTF-8是一種可變長度的編碼,為什麼說是可變長度,下列我將用一張表格來進行介紹UTF格式在不同編碼規則中所需的儲存大小。因Unicode所包含的範圍實在太廣,所以還是以中文的範圍進行說明。

UTF表格

基本上UTF-8不管在哪一個範圍,都會有長度上的變動,或許有人會問到,那儲存成UTF-8或UTF-16有什麼差別呢?下面將做一個簡單的示範來說明差異性,在純文字檔案格式內,儲存一百個相同字型並屬於Unicode Extension A的範圍,儲存成UTF-8及16格式,如下圖所示,UTF-8及16的header分別為3 byte及2 byte,所以兩者果然差了100 byte。

比較

「BE、LE、BOM?!」

本以為沒人會看,所以想偷懶一下,既然有人問到了,就順便把它加進文章來,BE是Big-Endian的縮寫,而LE是Little-Endian的縮寫,這兩個縮寫代表什麼意思呢?以下我們將以「堃」為例,堃的unicode碼為5803,如將文件儲存成LE格式的話則會顯示「03 58」,也就是預設Windows的儲存格式,如存成BE則為「58 03」,像IBM、HP大型主機的格式。

BOM是byte-order mark的縮寫,中文叫「位元組順序記號」,想知道詳細的部份,可以參考Wiki,簡單說的話呢,BOM就是用來表示文件是儲存成何種Unicode格式的,因為UTF-8沒有順序的問題,所以我將就UTF-16做說明,如將文件儲存成UTF-16 (LE有BOM)時,並用二進位編輯器開啟時,會看到前會帶了「FE FF」的記號,而無BOM格式,就是將前端的記號拿掉,而這功能主要是用在傳輸時判斷來源檔案格式用的。

「效能」

可能有人會想做這種測試有什麼意義呢?如果我們把數千億筆的資料放到database裡可就有很大的差別了,同時也出現另一個問題,由於UTF-8是可變長度,所以「有可能」會使用較少的儲存空間,但也是因為為可變長度,所以資料庫的效能也較UTF-16及UTF-32來的差。

「murmur」

在寫完這篇文章後的不久,hugo也要離開目前所就職的公司,一切相關的知識都是從這裡開始,也從來沒想過有天會打滾在各種語系編碼當中,最後我還是要感謝一下教授我各種唬爛專業知識的ya老闆。最後如果您對於此文章有任何的問題及指教,都歡迎留言給我。

Big5碼與Unicode碼之差異性

由於hugo每天都要在字碼中打滾,自然而然的對各種編碼有較基本的認知,也發現到一般的使用者,或是資訊相關人員其實對字碼的部份也不甚了解,所以在這前提之下讓hugo想把兩者的差異性寫成較簡單的文章,供大家參考。在此文章內將先不論兩者編碼之規範,單純以收錄字數做單一比較。

「何謂Big5」

以下轉載自Wiki

「五大碼」(Big5) 是在1984年台灣13家廠商製作開發五大中文套裝軟體,由中華民國財團法人資訊工業策進會為五大中文套裝軟體所設計的中文內碼,所以就稱為Big5中文內碼,雖然五大套裝軟體並沒有成功,但隨著採用Big5碼的國喬中文系統及倚天中文系統先後在台灣市場獲得成功,使得Big5碼深遠地影響正體中文電腦內碼,直至今日[2][3]。「五大碼」的英文名稱「Big5」後來被人按英文字序譯回中文,以致現在有「五大碼」和「大五碼」兩個中文名稱。

但因在制定編碼時沒有考量到人名、地名等常用字,所以像是堃、峯、喆、綉等字在以Big5為編碼的系統上是無法顯示的,如早期的Windows98。

「何謂Unicode」

以下轉載自Wiki

Unicode是由於傳統的字元編碼方式的侷限性而產生的,例如 ISO 8859 所定義的字元雖然在不同的國家中廣泛地使用,可是在不同國家間卻經常出現不相容的情況。很多傳統的編碼方式都具有一個共通的問題,即其容許電腦進行雙語環境式的處理(通常使用拉丁字母以及其本地語言),但卻無法同時支援多語言環境式的處理(指可同時處理混合多種語言的情況)。

Unicode試圖將字位(字素,graphemes)與類字位字元加以認定與編碼,而非以不同的字形(glyphs)來加以區分。然而在漢字的個案來看,這樣方式有時會引起一字多形的認定爭議(詳見中日韓統一表意文字主題)。

看上述的解釋其實有點複雜,以較簡單的方式說明則是「Unicode整合了各國不同之語系並給與標準化」,其中當然也包括了正體中文,簡體中文等。

「Big5與Unicode的差異」

接下來有了基本的認知後,應該就可以知道Unicode是一個比較大的字集,因為收錄了各國的字型,但其中的CJK,其中也包含了原本Big5所收納的字數,如下圖所示。

說明

而這些差異字就高達7,399字,這些字也包含了大部份的人名罕字及地址罕字等。簡單講這也就是big5跟unicode的主要差異性。

這是hugo第一次寫關於中文字碼的文章,盡量是以簡單的方式來說明,雖然可能乏味了點,不過如果想更進一步的了解都可以留言給我 :-P


利用SSH Tunnel逃離MIS掌控魔爪

這篇是許久之前寫的文章,當時的文字排版感覺很糟,所以花了點時間來重寫。標題看起來挺有深度的,不過整篇的重點就是在說明如何逃出MIS的魔爪,在上班時間可以快樂的瀏覽網路,沒事看看拍賣文件,聊聊八掛公事。在這邊介紹的算是較進階的方法,但可使用的範圍也比較廣,如果只是單純想瀏覽網頁的話可以參考這篇的方法。

[正文]

現在有蠻多公司內部都會採用些gateway端的產品來阻擋使用者瀏覽網頁,或上上MSN,美其名當然是可以減少中毒的機會,但實則為希望員工可以乖乖專心上班增加效率,不過休息是為了走更長遠的路,短暫的摸魚也是工作項目之一呀!。所以這篇文章的目的主要是提供個小技巧,讓上班的時間更充滿愉快。

首先,要在外部的網路上有一台Linux或Windows的主機並且連接到internet,在這邊就以Windows為例,在主機上安裝OpenSSH,在安裝好之後,接著請在電腦管理裡的「本機使用者和群組」裡加入一個使用者,成員隸屬選user就可以了。然後開啟command mode切換到路徑"c:\program files\OpenSSH\bin\"底下,並打入

"mkgroup -l ..\etc\group"
"mkpasswd -l -u [username] ../etc/passwd"

預設SSHD的port是22,如果想修改的話可修改路徑底下"c:\program files\OpenSSH\bin\"的sshd_config此檔案。在一般的公司來說,都會開放port 80 & 443,所以可以把port改為443,設定完成之後可在command mode下打入net start opensshd來啟動sshd的服務,如此SSH Server就完成了。

主要的SSH服務有了,剩下的工作就是如何從公司內部連至SSH主機了,在Client端我個人是使用Tunnelier,安裝過程很簡單,只要下一步就可以安裝到完了,開啟程式會如下圖所示:

程式畫面

程式畫面

在Host的地方打入您所架設SSH主機的真實IP位置,Port的位置為22(default),如您更改為443也請填上443,Username及Password請填入剛才在本機上所新增的使用者帳號及密碼(Initial Method選擇到Password模式),都設定完成後,按下左下方的「Login」按鈕,一切都正常無誤的話,在下方的對話框會顯示顯示Authentication completed

程式畫面

驗證成功

到這邊就算成功了80%了,在回到程式的介面,切換至Services頁面,把SOCKS/HTTP Proxy Forwarding的選項勾選起來,剩下的選項都不需做其它設定。接著是最重要的一個步驟,開啟上班的好伙伴「MSN」,點選工具選項連線進階設定,在SOCKS的地方填上127.0.0.1:1080 然後按下測試,正確的話應該會顯示如下圖所述的訊息,然後您只需要輕輕的按下「登入」,您就可以在公司內部百無禁忌的瀏覽網頁及MSN了,休閒是必要的,但班還是要認真上呀。

連線

連線測試