將PDF轉成圖片的工具,簡單易用的解決方案

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-16 14:13
下一篇 2024-11-16 14:13

相關推薦

發表回復

登錄後才能評論