:::

如何將PDF轉換成SVG向量圖? / How to Convert a PDF Into Vector Graphic Images like SVG?

2月 07, 2024 , , 0 Comments Edit Copy Download

2024-0120-003056.png

如果要將PDF轉換成SVG、EMF等向量圖以及PNG圖片,可以使用我寫的Colab「docker-app-PDF-to-Crop-SVG.ipynb」來轉換。


向量圖與點陣圖 / Vector Graphics and Bitmaps

2024-0119-203435.png

圖片來源:https://business.oregonstate.edu/student-experience/resources/DAMlab/vector-and-bitmap-image-guide 

向量圖和點陣圖是兩種不同的圖像格式,它們在圖像表示和使用方面有著明顯的差異。點陣圖較為知名,手機拍照的相片都是以點陣圖組成;向量圖則是在專業排版、海報設計、應用程式開發上比較常用。以下讓我們看看這兩者的區別。

向量圖 / Vector Image

2024-0119-203646.png

圖片來源:https://business.oregonstate.edu/student-experience/resources/DAMlab/vector-and-bitmap-image-guide 

向量圖的特色如下:

  • 基於數學公式: 向量圖是基於數學公式和幾何形狀的,它使用向量(例如直線、曲線、多邊形等)來描述圖像,而不是像素。
  • 無限放大: 由於使用數學公式描述,向量圖可無限放大而不失真,因此非常適合印刷品質圖像。
  • 文件大小較小: 由於不包含像素信息,向量圖通常文件大小較小,方便存儲和傳輸。
  • 編輯容易: 向量圖易於編輯和修改,可以輕鬆調整形狀、顏色和大小。
  • 格式: 常見的向量圖格式包括SVG(Scalable Vector Graphics)和EMF(Enhanced Metafile)。

點陣圖 / Raster Image

2024-0119-203901.png

圖片來源:https://business.oregonstate.edu/student-experience/resources/DAMlab/vector-and-bitmap-image-guide 

點陣圖的特性如下:

  • 基於像素: 點陣圖是由像素(小圖片元)組成的,每個像素都有自己的顏色信息,圖像由一個像素矩陣組成。
  • 固定解析度: 點陣圖具有固定的解析度,因此在放大時會出現鋸齒狀和失真,特別是在低解析度圖像上。
  • 文件大小較大: 點陣圖文件大小通常較大,尤其在高解析度圖像的情況下。
  • 難以編輯: 點陣圖編輯困難,修改需要像素級別的處理,可能會導致圖像品質下降。
  • 格式: 常見的點陣圖格式包括PNG(Portable Network Graphics)、JPEG(Joint Photographic Experts Group)和BMP(Bitmap)。

綜合以上所述,向量圖適用於需要無限放大且易於編輯的情況,如標誌和圖示。而點陣圖則適用於照片和複雜的圖像,但在放大時可能會出現品質損失。不同的情境和需求會決定你應該使用哪種圖像格式。而在撰寫論文或印刷排版設計等場景,我通常會建議盡可能使用向量圖。


PDF:是向量,但不是圖 / PDF: Composed of vectors, but not an image

file.png

圖片來源:https://www.flaticon.com/free-icon/file_1126862?term=pdf&page=1&position=27&origin=search&related_id=1126862 

相較於SVG、EMF等向量圖片檔案,PDF(Portable Document Format)在許多場合更為常見。PDF是一種廣泛用於共享檔案的格式。它能夠保持檔案的格式和排版,不會受作業系統或應用程序的影響。此外,PDF文件可以輕鬆地包含文本、圖像、圖表和多種媒體,使其成為跨平台和多用途的檔案格式。

2024-0119-205041.png

現在許多瀏覽器都內建了可列印成PDF的功能,使得更多人可以輕易地從網頁或其他網頁應用程式創建PDF文件,而無需使用額外的軟體或工具。這使得分享和保存網頁內容變得更加方便。

2024-0119-210015.png

值得注意的是,PDF其實也是由向量組成。儘管有些文件內容可能插入的是點陣的圖片,但PDF中的文字、表格線條,大部分都是由向量構成。這意味著,PDF文件中的文本和圖形在放大時不會模糊。

然而,如果要將PDF轉換成SVG或EMF等向量圖片,這並不是一件簡單的事情。一般來說我們得要仰賴InkScape這種專業的向量圖片編輯器來處理,但步驟相對繁瑣。而且InkScape軟體大小頗大,安裝時相當佔空間。

考慮到上述問題,我將PDF轉換成向量圖片的整個操作寫成了docker-app「docker-app-PDF-to-Crop-SVG.ipynb」,並且讓它可以在Colab執行了。接下來就讓我們看看怎麽操作吧。


範例PDF檔案 / Example PDF

2024-0119-210746.png

這裡我們使用的範例是「派架導航員」的系統架構圖PDF檔案。你可以在下面的連結取得PDF檔案的備份:

值得注意的是,這個PDF檔案故意多了一頁空白,而且圖片的周圍也有大量的空白。大部分使用列印並保存成PDF所建立的PDF都是這種格式,但我們想要的圖片僅僅只有繪圖的部分而已。就算真的要用InkScape來處理,操作步驟也是相當複雜。

遇到這種問題,不妨就來用用看「docker-app-PDF-to-Crop-SVG.ipynb」吧。


docker-app-PDF-to-Crop-SVG.ipynb

2024-0120-001135.png

docker-app-PDF-to-Crop-SVG」是我開發的Docker APP的一種。你可以用Colab版本或本機端執行檔案的形式來執行它。關於Docker APP詳細的介紹請看「如何使用Docker APP?」這篇的介紹。一般情況下,我比較建議使用Colab版本。Colab版本的docker-app-PDF-to-Crop-SVG網址如下:

https://colab.research.google.com/drive/1QCoI7jq8OPvIoNfBItxD6w_gW7ab3jAT?usp=sharing 

你可以按照「如何使用Docker APP?」這篇的說明,將PDF檔案上傳並執行Docker APP,然後就可以取得處理後的結果。

2024-0120-001634.png

docker-app-PDF-to-Crop-SVG」執行完成後會出現三種格式的檔案:

  • SVG格式:向量圖的基礎。可用於向量圖的繪圖軟體中,也可以在瀏覽器直接檢視。
  • EMF格式:Office跟Google Doc使用的向量圖格式。你可以將它插入到LibreOffice Writer或Word中,此時它會保有向量圖的特質,放大也不會出現鋸齒。
  • PNG格式:這是將SVG格式以300 DPI匯出的點陣圖。PNG格式可以用在比較多地方,高解析度的檔案也可以放大到一定程度都不會看到鋸齒。但代價是檔案大小較大。

.drawio-crop.png

由於Blogger平臺的限制,在此只能展示PNG格式給大家看。原本PDF檔案以A4紙張大小的白底已經被移除,只剩下有畫圖的部分。而且如果原本繪製圖片的時候背景是透明的話,列印成PDF並使用「docker-app-PDF-to-Crop-SVG」的轉換的結果,SVG、EMF與PNG的背景也都會保持透明。如果你需要將多張圖片疊合並重組成新的圖片的話,這個特性可說是十分有用。


那這篇將PDF轉換成SVG向量圖的介紹就到此為止了。文章最後的問題是:你通常是在哪裡使用向量圖的呢?

  • 1. 圖示用的就是向量圖。
  • 2. 字型用的也是向量圖。
  • 3. Adobe Illustrator跟CorelDRAW畫的就是向量圖。
  • 4. 文件裡面的繪圖功能其實也是向量圖。
  • 5. 從來不知道有向量圖這種東西。
  • 6. 其他:歡迎在下面留言分享喔!