2009-01-14 86 views
0

我有一個PDF文件,其中每個頁面都是(LZW)TIFF文件。我知道這是因爲我創造了它。我希望能夠加載它並將其保存爲一堆TIFF文件。從PDF文件中獲取CGImage

我可以用CGPDFDocumentCreateWithURL打開PDF文件,並獲得一個頁面。我甚至可以把頁面拖到屏幕上。

我想要做的是將頁面繪製到一個bitmapContext中,以便我可以使用CGBitmapContextCreateImage將圖像獲取到CGImageRef中。但是,爲了創建位圖上下文,我需要知道圖像的大小和分辨率。我似乎無法找到如何讓CGPDFDocument或CGPDFPage告訴我在該頁面上的圖像對象的分辨率。

有沒有更簡單的方法來做到這一點,我沒有意識到?

謝謝。

回答

1

Ghostscript會爲你在這裏工作:

GS -sDEVICE=tiff32nc -sOutputFile = foo的頁%d.tif foo.pdf

對於2頁文檔foo.pdf你應該得到:

  • 富-Page1.tif
  • 富-Page2.tif

從內存中我認爲GS的輸出分辨率是包含頁面的輸出分辨率,不一定是嵌入文件的分辨率(除非這些分辨率始終相同)。

如果是這樣的話,你要恢復的圖像,因爲它最初是資源的角度來看,你可以使用iText(JAVA)或iTextSharp(.NET),以get to the image內容流(即字節),並把它們寫出來在將內容流轉換爲PdfImage iirc後,以您選擇的格式將其粘貼到磁盤上。

望的ghostscript選項適用於保存寫另一個實用...

+0

我會使用pdfimages命令(poppler的-utils的),在其原生分辨率來提取,而不必GS使其圖像, 。但是,有些庫你可以用它來編程。 – 2009-12-09 21:09:46