Pythonで、PDFファイルを結合・画像として保存・開く・閉じる方法をまとめました。用途に合わせたPDF操作をコード付きでご紹介します。
ぜひ、お試しください。
PDFを開いて閉じる 外部プログラム操作Subprocess
PDFを開いて閉じる(特定PDF)
以下のコードを実行すると、外部アプリを起動して2秒後に終了します。
import subprocess
import time
#Acrobat.exe 保管場所
acr_path = "C:/Program Files/Adobe/Acrobat DC/Acrobat/Acrobat.exe"
#開きたいPDF
pdf_path = 'C:/Users/admin/Desktop/test/test.pdf'
#PDFファイルを開く
pdf_pro = subprocess.Popen([acr_path,pdf_path], shell=False)
time.sleep(2)
#PDFファイルを終了
pdf_pro.kill()
time.sleep(1)
コード実行後
指定したPDFファイルを開きます。
その後 [time.sleep(2)] を使用して、2秒後にPDFを閉じます。
[shell=False] を指定することで、[kill] でファイルを閉じることができました。

PDFを開いて閉じる(複数PDF)
以下のコードを実行すると、複数PDFファイルを開いて閉じます。
import subprocess
import os
import time
#Acrobat.exe 保管場所
acr_path = "C:/Program Files/Adobe/Acrobat DC/Acrobat/Acrobat.exe"
#PDF保管フォルダ
pdf_path = 'C:/Users/admin/Desktop/test/'
#フォルダ内にあるファイル取得
pdf_list = os.listdir(pdf_path)
#フォルダ内にあるファイルをループ
for idx,file in enumerate(pdf_list):
pdf_pro = subprocess.Popen([acr_path,pdf_path+file], shell=False)
time.sleep(2)
pdf_pro.kill()
time.sleep(1)
コード実行後
[pdf_path] フォルダ内に、複数のPDFファイルが存在しています。

[pdf_path] 内をループし、1つずつPDFファイルを開いて閉じるを繰り返します。

動作環境
Python 3.7.4
PDFを結合(フォルダ内のPDFを連結):PyPDF
PDFを結合:PyPDF
以下のコードを実行すると、特定フォルダにある複数PDFをすべて結合します。
import PyPDF2
import glob
import os
#対象フォルダ
current_dir= "C:/Users/admin/test/PDFファイル"
#フォルダをループする準備
files = glob.glob(current_dir+ "/*")
#結合準備
merger = PyPDF2.PdfFileMerger()
#フォルダ内のファイルをループ
for file in files:
#PDF結合
merger.append(file)
#結合後のPDFファイル名
merger.write('結合PDF.pdf')
#システムを閉じる
merger.close()
コード実行前
指定フォルダにPDFファイルが複数存在している状態です。

各PDFの中身は、1ページで構成されています。

コード実行後
フォルダ内のPDFファイルをすべて結合した「結合PDF.pdf」ができます。

「結合PDF.pdf」を開くと、5つのPDFが1つのファイル内に連結しています。

動作環境
Python 3.7.4
PyPDF2 1.26.0
PDFを座標指定して画像保存(特定PDF) 2選
PDFを座標指定して画像保存(特定PDF)
以下のコードを実行すると、PDFの一部を画像保存します。
import pyautogui as pag
from PIL import Image
import subprocess
import time
acr_path = "C:/Program Files/Adobe/Acrobat DC/Acrobat/Acrobat.exe"
#PDF指定
pdf_path = 'C:/Users/admin/Desktop/test/PDFファイル/経費精算書_001.pdf'
#PDFファイルを開く
pdf_pro = subprocess.Popen([acr_path,pdf_path],shell=False)
time.sleep(2)
#座標指定箇所を切り取りして画像保存
name_img = pag.screenshot('temp.png',region=(519, 236, 150, 40))
pdf_pro.kill()
コード実行前
切り抜く部分の座標をあらかじめ取得しておき、
[region=(519, 236, 150, 40)] へ入力します。

コード実行後
指定したPDFファイルを開き、
座標部分を「temp.png」というファイル名で画像保存します。
その後、PDFを閉じます。

PDFを座標指定して画像保存(複数PDF)
以下のコードを実行すると、複数PDFファイルの指定箇所を画像データとして保存します。
import pyautogui as pag
from PIL import Image
import subprocess
import os
import time
acr_path = "C:/Program Files/Adobe/Acrobat DC/Acrobat/Acrobat.exe"
#PDF指定
pdf_path = 'C:/Users/admin/Desktop/test/PDFファイル/'
pdf_list = os.listdir(pdf_path)
i = 1
#フォルダ内にあるPDFファイルをループ
for idx,file in enumerate(pdf_list):
#PDFファイルを開く
pdf_pro = subprocess.Popen([acr_path,pdf_path+file],shell=False)
time.sleep(2)
#座標指定箇所を切り取りして画像保存
name_img = pag.screenshot(str(i) + 'temp.png',region=(519, 236, 150, 40))
i = i + 1
pdf_pro.kill()
time.sleep(1)
コード実行前
[pdf_path] フォルダ内に、複数のPDFファイルが存在しています。

PDFは全ファイル同じフォーマットです。

コード実行後
[pdf_path] 内をループし、1つずつPDFファイルを開いて画像を保存します。
指定座標のテキスト部分を抽出することができました。

動作環境
Python 3.7.4
PyAutoGUI 0.9.52
ExcelをPDF保存する win32com.client使用 4選
ExcelをPDF保存(特定シート)
以下のコードを実行すると、特定のシートをPDF保存します。
import win32com.client
#エクセルファイルを開く
excel = win32com.client.Dispatch("Excel.Application")
file = excel.Workbooks.Open('C:/Users/xxx/Desktop/test/test.xlsx')
#対象シートを指定
file.WorkSheets("Sheet1").Activate()
#PDF変換
file.ActiveSheet.ExportAsFixedFormat(0, 'C:/Users/xxx/Desktop/test/test.pdf')
#エクセルを閉じる
file.Close()
excel.Quit()
コード実行後
エクセルファイルの特定シートをPDFに変換します。

ExcelをPDF保存(特定シート)
以下のコードを実行すると、特定のシートをPDF保存します。
import win32com.client
#エクセルファイルを開く
excel = win32com.client.Dispatch("Excel.Application")
file = excel.Workbooks.Open('C:/Users/xxx/Desktop/test/test.xlsx')
#全てのシートをループ
for sh in file.Sheets:
if sh.Name == 'Sheet2':
#ファイルを選択
excel.Worksheets(sh.Name).Activate()
#PDF変換
file.ActiveSheet.ExportAsFixedFormat(0, 'C:/Users/xxx/Desktop/test/' + sh.Name + '.pdf')
break
#エクセルを閉じる
file.Close()
excel.Quit()
コード実行後
ファイル内のすべてのシート名をループして、指定シートがあった場合にPDFを作成します。
この場合は「Sheet2」シートをPDFで保存します。
作成されるPDFは、「Sheet2.pdf」というファイル名で保存されます。

ExcelをPDF保存(複数シート)
以下のコードを実行すると、複数シートをPDF保存します。
import win32com.client
#エクセルファイルを開く
excel = win32com.client.Dispatch("Excel.Application")
file = excel.Workbooks.Open('C:/Users/xxx/Desktop/test/test.xlsx')
#対象シートを指定
file.Worksheets(["Sheet1", "Sheet2"]).Select()
#PDF変換
file.ActiveSheet.ExportAsFixedFormat(0, 'C:/Users/xxx/Desktop/test/test.pdf')
#エクセルを閉じる
file.Close()
excel.Quit()
コード実行後
エクセルファイルの複数シートを、1つのPDFファイルにして保存します。

ExcelをPDF保存(全てのシート)
以下のコードを実行すると、全てのシートをPDF保存します。
import win32com.client
#エクセルファイルを開く
excel = win32com.client.Dispatch("Excel.Application")
file = excel.Workbooks.Open('C:/Users/xxx/Desktop/test/test.xlsx')
#全てのシートをループ
for sh in file.Sheets:
#ファイルを選択
excel.Worksheets(sh.Name).Activate()
ws = excel.ActiveSheet
#シート名を取得
name = sh.Name
#PDF変換
file.ActiveSheet.ExportAsFixedFormat(0, 'C:/Users/xxx/Desktop/test/' + name + '.pdf')
#エクセルを閉じる
file.Close()
excel.Quit()
コード実行後
エクセルファイルの全シートを一括でPDFに変換します。

動作環境
Python 3.7.4
この記事がお役に立ちますと幸いです。

「Python2年生 スクレイピングのしくみ」
機械学習を始めたい方必見
必要最低限の文法をピックアップして解説
ネットからデータ収集を始めたい方へオススメの1冊です!