[英]extract images from PDF with PHP
問題是客戶想要上傳帶有圖像的pdf,作為一次批量處理多個圖像的方式。
我已經環顧四周,開箱即用PHP無法閱讀PDF文件。
我有什么選擇?
我已經知道主機沒有安裝imageMagick
或任何pdf庫, exec
功能被禁用。 我猜,這基本上讓我無需工作。
有沒有人知道是否有一個可以做到這一點的在線服務,有各種各樣的api?
謝謝你
AFAIK,沒有PHP模塊可以做到。 有一個命令行工具, pdfimages ( xpdf的一部分)。 作為參考,這是如何工作的:
pdfimages -j source.pdf image
這將從source.pdf中提取所有圖像為image-000.jpg,image-001.jpg等。請注意,輸出格式始終為Jpeg。
可能的選擇
作為命令行工具,您需要exec
(或system
, passthru
,PHP內置的任何命令執行函數)。 由於您的環境沒有,我看到四個選項:
pdfimages
的源代碼作為模型, pdfimages
pdfimages
通過在您控制的遠程主機上運行它來完成繁重的工作 關於#3,滾動你自己,我不認為滾動你自己,解決一個非常狹窄的要求定義,將是太困難了。 我似乎記得PDF中的圖像邊界定義得很好:只需將文件讀入邊界,切割到邊界的末尾,base64_decode,然后寫入文件 - 重復。 但是,這可能太多了......
如果滾動你自己太復雜了,那么選項#4就像Joel Spolsky描述的使用復雜的Excel對象一樣 (參見大膽標題下的編號列表“讓Office為你做繁重的工作”)。
exec
和curl
pdfimages
示例交換可能如下所示:
GET http://www.cheaphost.com/pdfimages.php?extract=http://www.limitedhost.com/path/to/uploaded.pdf
Content-type: text/html
<html>
<body>
<ul>
<li>http://www.cheaphost.com/pdfimages.php?retrieve=ab9895v/image-000.jpg</li>
<li>http://www.cheaphost.com/pdfimages.php?retrieve=ab9895v/image-001.jpg</li>
</ul>
</body>
</html>
因此,您的單個pdfimages.php腳本(在具有exec
功能的主機上運行)可以提取圖像,並允許您訪問提取的圖像。 提取時,它會讀取您告訴它的PDF,在其上運行pdfimages,並返回一個要調用的URL列表以檢索提取的圖像。 檢索時,它只會讓您回到直線圖像。
您需要處理清理,或許要做的事情是在檢索后刪除圖像。 您還需要處理安全性 - 不知道這些圖像中的內容,但內容可能需要包含在SSL中並采取其他預防措施。
您可以使用pdfimages並以這種方式安裝它:
apt install poppler-utils
然后以這種方式使用它將所有圖像作為PNG文件:
pdfimages -j mypdf.pdf image -png
圖像將放在image-000.png,image-001.png等下的同一文件夾中。
有許多選項可供選擇,包括一些可以更改輸出格式的選項, 這里有更多信息。
我希望這有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.