我到處搜索,並嘗試了很多東西,但無法工作。我設法解壓縮這樣的數據:
import zlib
with open("MDL1703140088.pdf", "rb") as f:
pdf = f.read()
image = zlib.decompress(pdf[640:69307])
640 zlib的頭(b'x\x9c'
)的位置和69307是像PDF規範的頁腳位置。 b'\nendstream\n'
在那裏。詳情在the spec和一些有用的Q & A可以找到here。但在這種情況下,允許省略結束位置,因爲decompress()
似乎忽略非壓縮數據。您可以通過以下方式進行驗證:
decomp = zlib.decompressobj()
image = decomp.decompress(pdf[640:])
print(decomp.unused_data) # starts from b'\nendstream\n
目前爲止這麼好。但是,當我將image
寫入PNG文件時,它不能被任何圖像查看器讀取。實際上解壓縮的數據在這裏和那裏看起來非常空虛。我附上了一些PNG標題,但沒有運氣。嘿,這太...
正如我前面所說(奇怪的是我的評論被某人刪除),你最好使用一些其他現有的工具。如果Acrobat不是您的選擇,那麼pdftopng (part of Xpdf)呢? pdftopng MDL1703140088.pdf .
完美地給了我一個有效的PNG文件。你可能知道,很顯然,命令行工具可以用Python來執行。
是的,我們每天至少會有四頁pdf文件。我們需要自動提取,相信我。 –
您是否檢查過[this](http://stackoverflow.com/questions/2693820/extract-images-from-pdf-without-resampling-in-python)?谷歌搜索給了我[這個](http://mikelynchgames.com/software-development/using-wand-to-extract-pngs-from-pdfs/)。 –
是的,當我嘗試使用魔杖(最簡單)時,我的整個macbook崩潰沒有理由。而且,我也不允許在要部署它的服務器上安裝額外的庫。因此,我現在使用[此代碼](https://gist.github.com/DDecoene/4e91449572a473b278ec887ce61238b5)來提取jpg文件,但帶有「\ x78 \ x9c」的圖像我不知道該怎麼做。 –