PDF(Portable Document Format)文件格式的出現為人們的生活帶來了極大的方便,其便攜性、易保存也成為各行業普遍使用的標準文檔格式。但是,對於某些需要對PDF進行編輯或處理的人士來說,將PDF轉換為圖片格式卻成為了一件頭疼的事情。因此,本文將詳細介紹將PDF轉成圖片的工具及解決方案。
一、選用PDFTK工具進行PDF拆分
對於不使用PDFTK工具的開發者們來說,PDF內的信息無法單獨提取出來,比如轉化為圖片等。因而,我們要使用PDFTK工具來解決這個問題,具體步驟如下:
第一步:安裝PDFTK工具。
sudo apt-get install pdftk
第二步:將PDF文件拆分成單個的PDF文件。此處使用Shell腳本來實現拆分。
#!/bin/bash filename=$1 pdftk $filename burst output ${filename%.*}_%d.pdf
第三步:編寫將PDF文件轉換成圖片的Python腳本。具體實現如下:
# 引入Python Image Library模塊 from PIL import Image # 引入Python os模塊 import os # 指定PDF被轉換後的圖片格式 FORMAT = 'jpeg' def pdf2img(f): fname = f.split('/')[-1] # 打開PDF with open(f, 'rb') as pdf_file: # 使用Python Image Library讀取PDF文件 im = Image.open(pdf_file) # 獲取PDF的頁碼 pages = im.n_frames # 輸出PDF的頁碼數 print(fname + ' has ' + str(pages) + ' page(s).') # 按照頁碼個數,將PDF文件拆分成一張張單獨的圖片 for i in range(pages): im.seek(i) im.save(fname[:-4] + '_' + str(i) + '.' + FORMAT) if __name__ == '__main__': # 獲取當前工作目錄 path = os.getcwd() # 獲取指定目錄下所有的PDF文件 files = os.listdir(path) pdfs = [f for f in files if f.endswith('.pdf')] # 遍歷所有的PDF文件,將其拆分成單個的PDF文件,並調用pdf2img函數將其轉換成圖片 for pdf in pdfs: print('Processing ' + pdf + '.') os.system('pdftk ' + pdf + ' burst') pages = [f for f in os.listdir(path) if f.endswith('.pdf')] for page in pages: pdf2img(page) os.remove(page) print('Job done.')
上述代碼中的pdftk工具用來將PDF文件拆分成單個的PDF文件,並使用PIL模塊將其轉換成對應的圖片格式(此處為jpeg)。
二、選用Ghostscript工具進行PDF轉換
對於需要將PDF文件轉換為特定格式圖片的開發者們來說,Ghostscript工具是一個非常好的選擇,因其可以靈活地將PDF文件轉換成可供開發者們方便處理的圖片格式。
第一步:安裝Ghostscript工具。
sudo apt-get install ghostscript
第二步:編寫Python腳本,調用Ghostscript工具將PDF文件轉換成指定的圖片格式。具體實現如下:
# 引入Python os模塊 import os # 指定需要被轉換的PDF文件名和PDF文件所在的目錄 filename = 'file.pdf' path = '/home/user/pdf/' # 指定生成圖片的格式 FORMAT = 'jpeg' # 調用Ghostscript工具將PDF文件轉換為圖片 os.system('gs -dNOPAUSE -dBATCH -sDEVICE=jpeg -r300 -dJPEGQ=100 -sOutputFile=' + path + '%d.' + FORMAT + ' ' + path + filename)
上述代碼中的gs工具是Ghostscript的核心命令,其中的參數dDEVICE指定了輸出格式,dJPEGQ指定了生成圖片的質量,r300指定了生成圖片的解析度為300dpi。
三、選用PDFBox工具進行PDF轉換
PDFBox是一個開源的Java工具庫,可以用於創建和處理PDF文檔。它提供了一系列的Java API來解析、文本提取以及PDF轉圖像等多種功能。
第一步:下載PDFBox工具並解壓縮。
wget https://www-eu.apache.org/dist/pdfbox/2.0.22/pdfbox-app-2.0.22.jar -P /usr/local/bin/ cd /usr/local/bin/ mkdir pdfbox-app unzip pdfbox-app-2.0.22.jar -d pdfbox-app
第二步:編寫Java程序,調用PDFBox工具實現PDF轉換為圖片。具體實現如下:
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.PDFRenderer; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class PDFToImage { public static void main(String[] args) { try { // 獲取PDF文件路徑 String pdfFilePath = "pdf_file.pdf"; // 獲取PDF文件所在目錄 String pdfDirPath = "/path/to/pdf/dir/"; File pdfFile = new File(pdfDirPath + pdfFilePath); PDDocument pdDocument = PDDocument.load(pdfFile); PDFRenderer pdfRenderer = new PDFRenderer(pdDocument); int pages = pdDocument.getNumberOfPages(); System.out.println(pdfFilePath + " has " + pages + " page(s)."); for (int i = 0; i < pages; i++) { BufferedImage image = pdfRenderer.renderImageWithDPI(i, 300); ImageIO.write(image, "jpg", new File(pdfDirPath + pdfFilePath.split("\\.")[0] + "_" + i + ".jpg")); } pdDocument.close(); } catch (Exception e) { e.printStackTrace(); } } }
上述Java代碼中的PDFRenderer類用來渲染PDF文件並生成對應格式的圖片,PDDocument類則是PDFBox庫中用來讀取和處理PDF文檔的基礎類。
四、選用在線轉換工具
對於非開發者或是對PDF轉換成圖片的內容不太在意的用戶們來說,使用在線轉換工具則更加的方便、快速。下面針對幾個在線轉換工具進行簡單介紹。
1. Smallpdf:用戶可以上傳PDF文件,並選擇轉換成PNG、JPG、GIF、BMP等格式的圖片。不過,該工具只允許每天轉換兩次,需要註冊為開發商付費後才能使用全部功能。
2. Zamzar:支持多種文件格式轉換,包括PDF轉圖片。該工具無需註冊即可使用。
3. Online Convert:支持多種文件格式轉換,包括PDF轉圖片。該工具也允許用戶設置所需轉換的圖片相關信息,例如解析度、顏色模式、壓縮等。
總結
本文從多個方面詳細介紹了將PDF轉成圖片的工具及解決方案,涵蓋了開發環境、工具使用、代碼實現等多個維度,對於需要將PDF轉換成圖片的開發者們和普通用戶們來說都是非常實用的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/154598.html