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-hant/n/154598.html
微信掃一掃
支付寶掃一掃