2011-03-16 96 views
8

在我正在處理的系統中,我們將縮略圖生成爲工作流的一部分。 有時PDF文件非常大(打印尺寸3m2),並且可以包含巨大的位圖圖像。高效的縮略圖生成巨大的PDF文件?

是否有縮略圖生成能力的程序是優化內存佔用處理這樣的大型PDF文件?

生成的縮略圖可以是png或jpg。

回答

9

ImageMagick是我用我所有的CLI顯卡,所以也許它可以爲你工作:

convert foo.pdf foo-%png 

這將產生三個獨立的PNG文件:

foo-0.png 
foo-1.png 
foo-2.png 

要創建只有一個縮略圖,將PDF看作是一個陣列([0]是第一頁,[1]是第二個,等等):

convert foo.pdf[0] foo-thumb.png 

既然你擔心內存,與-cache選項,您可以限制內存使用:

-cache 門檻可用像素高速緩存兆內存。

圖像的像素被存儲在存儲器中,直到 閾兆內存已經 消耗。隨後的像素操作 緩存在磁盤上。 內存的操作明顯更快,但是如果您的計算機沒有足夠數量的空閒內存,您可能想要調整此閾值 的值,則爲 。

所以縮略圖PDF文件,並調整其大小,,你可以運行這個命令,它應該有一個最大的內存使用20MB左右:

convert -cache 20 foo.pdf[0] -resize 10%x10% foo-thumb.png 

或者你可以使用-density指定輸出密度(900比例下降了很多):

convert -cache 20 foo.pdf[0] -density 900 foo-thumb.png 
+0

當然如果你有3m²的PDF文件,你也可以指定一個'-density'參數。否則...默認是每英寸72點你最終...讓我做一些計算... 24萬像素的圖像... – Benoit 2011-03-16 16:39:09

+0

這將是很好。我也會添加'-resize'。 – Blender 2011-03-16 16:40:04

+0

@Blender:是的。但是'-density'是調用委託(即它是Ghostscript)時所適用的,這是一個外部命令。也許代表不能被記憶限制? – Benoit 2011-03-16 16:41:39

0

你應該在意嗎?目前負擔得起的服務器有512 GB RAM。這支持在1200 dpi下存儲超過9000英寸(250 m)正方形的全綵色未壓縮位圖。您使用磁盤所帶來的性能損失很大。

相關問題