2016-04-03 96 views
0

在於,包括基於瀏覽器的可視化編輯器項目的一部分,我用fabric.js創建SVG文件,然後將其轉換爲PDF文件。重用圖形資產PDF文件

在一些情況下,最終結果是具有貫穿其中casues實質和不必要的文件膨脹,導致非常大的PDF文件的文件中出現多次的同一圖像生成的PDF文件。

在SVG上,這可以通過使用單個<image>元素並將其重複使用<use>元素(如我的previous question中的回答)輕鬆修復。使用Inkscape將SVG轉換爲PDF格式,並且Inkscape似乎沒有「獲得提示」,因爲它會爲文檔中的每個外觀重新嵌入重複的圖像。

Smallpdf.com的PDF壓縮機工具似乎可以解決這個問題,但我不明白它究竟是如何做到這一點;我也不能使用Inkscape或我知道的任何其他工具來複制此優化。

是否有這個技術的名稱,或者更好的方法是我自己複製這個?我讀到PDF中的XObject是適當的工具,但我不明白如何自己實現它們,也不能找到任何實例。

+0

?我將添加一個通用答案來解釋如何在PDF中使用XObject(類似於SVG),但知道這是否適用於您的文件需要查看文件的實際創建方式。 –

+0

@DavidvanDriessche謝謝,我會盡快準備併發佈一個例子。 – Pepe

回答

1

一般來說,PDF確實通過使用XObjects以非常類似的方式提供了與SVG相同的功能。

的x對象可以被用來定義圖像或一組圖形操作人員,否則將在網頁內容的一部分的。它獲得一個名稱和它自己的內容流,並擁有自己的資源,使它成爲一個獨立的內容。然後可以使用「Do」運算符將此XObject包含在頁面內容中,這與您在SVG中用「use」描述的非常相似。

從理論上講,一個X對象可以一次在PDF文件中出現,然後在整個文件中多次使用而不會顯著增加PDF文件的文件大小。這是否發生取決於PDF創建庫或PDF庫的優化功能。

例如,Adobe PDF庫能夠優化PDF文件,以便優化XObject中發生的重複內容 - 然後保留XObject的單個副本,並且在頁面描述中每次使用該XObject都指向該單個目的。我已經看到了一些例子,其中文件大小從多個千兆字節的數據減少到可變數據場景下的不到兆字節。

爲了使用它,你需要:

  • 一個PDF文件,其中重複的內容其實包含在X對象
  • 一個PDF生成器或處理器誰能夠正確地創建和聰明足以優化PDF文件,你有這樣的一個例子PDF文件來利用此