Python 將PDF轉為PDF/A、PDF/X,以及PDF/A轉回PDF

E-iceblue發表於2024-05-08

PDF/A和PDF/X是兩種有特定用途的PDF格式,具體檢視以下:

  • PDF/A是一種用於長期存檔的PDF格式,它旨在確保文件的內容和格式在未來的訪問中保持不變。如果您需要對檔案進行長期存檔,比如法律檔案或檔案記錄,將其轉換為PDF/A格式是一個明智的選擇。
  • PDF/X是一種用於印刷輸出的PDF格式,它旨在確保文件在列印時的準確性和一致性。PDF/X格式通常包括高解析度影像和準確的顏色資訊,如果您需要將檔案傳送給印刷商列印,將其轉換為PDF/X格式可以避免出現列印錯誤和質量問題。

總而言之,透過將PDF檔案轉換為這兩種格式,可以確保文件在未來的訪問或列印中保持最佳質量和準確性。本文將介紹如何使用Python將PDF轉換為PDF/A和PDF/X,以及如何將PDF/A格式轉換回標準的PDF格式。

本文中的轉換方法需要用到 Spire.PDF for Python 第三方庫,可使用以下命令安裝該庫:

pip install Spire.PDF

【示例1】Python 將PDF轉為PDF/A格式

PDF/A是ISO定義的PDF存檔標準,目前共有三種規範:PDF/A-1、PDF/A-2和PDF/A-3。每種規範包含兩種一致性級別(A或B),適用於不同的需求。Spire.PDF for Python支援將PDF轉換為PDF/A-1a, 2a, 3a, 1b, 2b, 3b,轉換程式碼如下:

from spire.pdf.common import *
from spire.pdf import *
 
# 建立PdfStandardsConverter類的物件,並傳入一個PDF文件作為引數
converter = PdfStandardsConverter("考核.pdf")
 
# 將PDF轉為PDF/A-1a
converter.ToPdfA1A("PdfA1A.pdf")
 
# 將PDF轉為PDF/A-1b
converter.ToPdfA1B("PdfA1B.pdf")
 
# 將PDF轉為PDF/A-2a
converter.ToPdfA2A("PdfA2A.pdf")
 
# 將PDF轉為PDF/A-2b
converter.ToPdfA2B("PdfA2B.pdf")
 
# 將PDF轉為PDF/A-3a
converter.ToPdfA3A("PdfA3A.pdf")
 
# 將PDF轉為PDF/A-3b
converter.ToPdfA3B("PdfA3B.pdf")

PDF/A示例圖:

【示例2】Python 將PDF轉為PDF/X-1a:2001

除了PDF/A格式外,Spire.PDF for Python還支援將PDF轉為PDF/X-1a:2001標準。該標準於2001年釋出,是PDF/X-1的一個子標準,被廣泛應用於印刷和出版領域。轉換程式碼如下:

from spire.pdf.common import *
from spire.pdf import *
 
# 建立PdfStandardsConverter類的物件,並傳入一個PDF文件作為引數
converter = PdfStandardsConverter("考核.pdf")
 
# 將PDF轉為PDF/X-1a:2001
converter.ToPdfX1A2001("PDF轉PdfX1a.pdf"

PDF/X-1a:2001標準示例圖:

【示例3】Python 將PDF/A轉為PDF

Spire.PDF for Python提供的PDF/A轉PDF的實現思路是新建一個標準PDF檔案,然後將PDF/A檔案的內容繪製到新的PDF檔案中。實現程式碼如下:

from spire.pdf.common import *
from spire.pdf import *
 
# 載入PDF/A檔案
pdf = PdfDocument()
pdf.LoadFromFile("ToPdfA1A.pdf")
 
# 新建一個標準PDF檔案
newPdf = PdfNewDocument()
newPdf.CompressionLevel = PdfCompressionLevel.none
 
#  在新建PDF檔案中新增頁面,並將PDF/A檔案的內容繪製到新建PDF的相應頁面上
for i in range(pdf.Pages.Count):
    page = pdf.Pages.get_Item(i)
    size = page.Size
    newPdf = newDoc.Pages.Add(size, PdfMargins(0.0))
    page.CreateTemplate().Draw(newPdf, 0.0, 0.0)   
 
# 儲存PDF檔案  
fileStream = Stream("PdfA轉Pdf.pdf")
newDoc.Save(fileStream)
fileStream.Close()
newDoc.Close(True)

透過上面3段示例程式碼,我們可以在Python中實現PDF到PDF/A和PDF/X、以及PDF/A到PDF的轉換。如果有問題可以前往論壇討論。

紅色水印的去除:

https://www.e-iceblue.cn/misc/temporary-license.html

相關文章