2013-07-31 47 views
1

我們有一個應用程序生成嵌入NMSYS字體的動態PDF文件。實時壓縮生成嵌入字體的PDF文件

但是它的大小與具有較大數據的原始文件相比非常大,然後動態生成具有相同字體。

是否有可能通過php腳本,API或擴展來減小此類PDF的大小?以及爲什麼較大內容和相同字體的源PDF(不是由腳本生成)的尺寸較小?

EDIT

實施例 -

file 1

file 2

文件-1是由我們的腳本它bacically示出從文件2的一條信息生成只有5文件-1中的頁面爲1.2 MB,文件2爲158頁的類似信息,但大小約爲4MB。

爲什麼這種尺寸差異存在?

+0

原始文件是否也是PDF文件?你能發表一個這樣的原始/動態生成的PDF文件的例子嗎?很難說出什麼在你的PDF文件中佔用了空間而沒有真正看到它 - 有很多不同的原因,PDF文件可能比你認爲的要大... –

+0

@David van Driessche:我上傳了2個文件和編輯後。請檢查並讓我知道你想從我那裏得到的其他信息。 –

回答

4

我看了兩個文件,其差異確實大多與字體相關。我保存了兩個使用Adobe Acrobat XI優化的文件 - 這個(可以)做了很多優化,但最重要的區別(對於文件1)來自字體子集:

文件1:之前的1.2 MB/253 KB之後 文件2:4.7 MB之前/ 3.7 MB之後

您的文件2是使用通常會生成非常乾淨的PDF的FrameMaker創建的(即使在這種情況下使用了非常舊版本的Adobe Acrobat Distiller),您的文件1是由DomPDF生成,顯然沒有嵌入字體的子集。

如果你看看空間審計報告出來的Acrobat爲您的第一個文件:

enter image description here

你可以看到的字體接近佔用的文件空間的96%。因此,在此文件中使用的字體的子集基本上是使其更小的唯一選項。

不同的庫或應用程序具有不同的選項來啓用子集。特別是對於DOMPDF使用該選項DOMPDF_ENABLE_FONTSUBSETTING使字體子集的PDF文件,它創建:

def("DOMPDF_ENABLE_FONTSUBSETTING", true); 

這則嵌入只有那些在PDF文件中實際使用的字符,通常(取決於文字量和實際的字體)創建更小的文件。

(DOMPDF解決方案添加註釋以使答案更完整)

+0

是的,我使用som PDF可以請你解釋一下嗎?我怎樣才能產生不同的?以及哪些庫應用程序可以用於子集字體 –

+0

我已經在dompdf配置文件中選擇了DOMPDF_ENABLE_FONTSUBSETTING將其值更改爲true。現在文件大小減少了。謝謝你的幫助。 –

+0

我很困惑這個答案,我應該接受你們兩個幫我解決這個問題。我應該自己寫關於在DOMPDF配置中更改設置的答案嗎? –

2

文件1使用TrueType DejaVuSans字體系列,它們不是子集。他們需要大約950kb的PDF文件。其餘的是圖像,PDF結構等。
文件2使用TrueType Helvetica字體,它們是子集。他們佔用的空間少得多。由於所有頁面上的所有文字使用幾乎相同的字符,因此最終字體很小。

+0

謝謝。任何建議如何解決這個問題?我應該做些什麼來縮小文件大小?請 –