pip install PyMuPDF
# PythonによるPDFファイルの加工
# 【部分抽出】 PDFファイルの一部分(ページ単位)を抽出して、新規にPDFファイルを作成する
# 必要なモジュールを呼び出す
import os
import fitz
# 抽出したいPDFファイルのパスを入力する(拡張子が「.pdf」でない場合やファイルが存在しない場合は再入力とする)
flag = '0'
while flag != '1':
path = input('抽出したいPDFファイルのパスを入力してください :')
if '.pdf' not in path:
print('拡張子が.pdfのファイル名にしてください')
elif os.path.isfile(path) == False:
print('パス '+path+' のファイルは存在しません')
else:
flag = '1'
# 抽出したいPDFファイルを開いて「f1」に格納する
f1 = fitz.open(path)
# PDFファイルのページ数「npg」を取得して画面表示する
npg = f1.page_count
print('PDFファイルのページ数は '+str(npg)+' です')
# 抽出したい最初のページ「fpg」を入力する
flag = '0'
while flag != '1':
fpg = int(input('抽出したい最初のページを入力してください :'))
if (fpg < 1 or fpg > npg):
print('最初のページは 1 から '+str(npg)+' の範囲です')
else:
flag = '1'
# 抽出したい最後のページ「tpg」を入力する
flag = '0'
while flag != '1':
tpg = int(input('抽出したい最後のページを入力してください :'))
if (tpg < fpg or tpg > npg):
print('最後のページは '+str(fpg)+' から '+str(npg)+' の範囲です')
else:
flag = '1'
# PDFファイルの「fpg」ページから「tpp」ページを「f2」に格納する
f2 = fitz.open()
f2.insert_pdf(f1, from_page = fpg-1, to_page = tpg-1)
# 文字を入力し、元のPDFファイル名の末部に付け加えて、同じディレクトリの新規ファイルとして保存する
flag = '0'
while flag != '1':
ver = input('元ファイルと異なるファイル名にするため付け加える文字を入力してください :')
path2 = path[0:len(path)-4]+'_'+ver+'.pdf'
if os.path.isfile(path2) == True:
print('パス '+path2+' のファイルは既に存在します')
else:
flag = '1'
f2.save(path2)
print('パス '+path2+' で新規にファイルを保存しました')
# ファイルを閉じる
f1.close()
f2.close()
抽出したいPDFファイルのパスを入力してください : C:\Users\......\......\......\......\......\PDFデータ.pdf
PDFファイルのページ数は 10 です
抽出したい最初のページを入力してください : 3
抽出したい最後のページを入力してください : 4
元ファイルと異なるファイル名にするため付け加える文字を入力してください : 2
パス C:\Users\......\......\......\......\......\PDFデータ_2.pdf で新規にファイルを保存しました
# PythonによるPDFファイルの加工
# 【部分削除】 PDFファイルの一部のページを削除して、上書き保存するか新規ファイルとして保存する
# 必要なモジュールを呼び出す
import os
import fitz
# 一部のページを削除したいPDFファイルのパスを入力する(拡張子が「.pdf」でない場合やファイルが存在しない場合は再入力とする)
flag = '0'
while flag != '1':
path = input('一部のページを削除したいPDFファイルのパスを入力してください :')
if '.pdf' not in path:
print('拡張子が.pdfのファイル名にしてください')
elif os.path.isfile(path) == False:
print('パス '+path+' のファイルは存在しません')
else:
flag = '1'
# 一部のページを削除したいPDFファイルを開いて「f」に格納する
f = fitz.open(path)
# PDFファイルのページ数「npg」を取得して画面表示する
npg = f.page_count
print('PDFファイルのページ数は '+str(npg)+' です')
# 削除したい最初のページ「fpg」を入力する
flag = '0'
while flag != '1':
fpg = int(input('削除したい最初のページを入力してください :'))
if (fpg < 1 or fpg > npg):
print('最初のページは 1 から '+str(npg)+' の範囲です')
else:
flag = '1'
# 削除したい最後のページ「tpg」を入力する
flag = '0'
while flag != '1':
tpg = int(input('削除したい最後のページを入力してください :'))
if (tpg < fpg or tpg > npg):
print('最後のページは '+str(fpg)+' から '+str(npg)+' の範囲です')
else:
flag = '1'
# 削除するページ数「spg」を求める
spg = tpg - fpg + 1
# 「fpg」ページから「tpp」ページまでを削除する(削除するとページ番号が繰り上がるので「fpg」ページを「spg」回削除する)
i = 0
for i in range(spg):
f.delete_page(fpg-1)
# 保存方法を選択し、新規保存の場合は文字を入力し元のPDFファイル名の末部に付け加えて同じディレクトリ内に保存する
hozon = '0'
hozon = input('保存方法を選択してください 上書き保存=1 新規保存=another :')
if hozon == '1':
f.saveIncr()
print('パス '+path+' で上書き保存しました')
else:
flag = '0'
while flag != '1':
ver = input('元ファイルと異なるファイル名にするため付け加える文字を入力してください :')
path2 = path[0:len(path)-4]+'_'+ver+'.pdf'
if os.path.isfile(path2) == True:
print('パス '+path2+' のファイルは既に存在します')
else:
flag = '1'
f.save(path2)
print('パス '+path2+' で新規にファイルを保存しました')
# ファイルを閉じる
f.close()
一部のページを削除したいPDFファイルのパスを入力してください : C:\Users\......\......\......\......\......\PDFデータ.pdf
PDFファイルのページ数は 10 です
削除したい最初のページを入力してください : 2
削除したい最後のページを入力してください : 5
保存方法を選択してください 上書き保存=1 新規保存=another : 0
元ファイルと異なるファイル名にするため付け加える文字を入力してください : 2
パス C:\Users\......\......\......\......\......\PDFデータ_2.pdf で新規にファイルを保存しました
# PythonによるPDFファイルの加工
# 【ファイル内移動】 PDFファイルの特定のページをファイル内の別の位置に移動して、上書き保存するか新規ファイルとして保存する
# 必要なモジュールを呼び出す
import os
import fitz
# ページを移動したいPDFファイルのパスを入力する(拡張子が「.pdf」でない場合やファイルが存在しない場合は再入力とする)
flag = '0'
while flag != '1':
path = input('ページを移動したいPDFファイルのパスを入力してください :')
if '.pdf' not in path:
print('拡張子が.pdfのファイル名にしてください')
elif os.path.isfile(path) == False:
print('パス '+path+' のファイルは存在しません')
else:
flag = '1'
# ページを移動したいPDFファイルを開いて「f」に格納する
f = fitz.open(path)
# PDFファイルのページ数「npg」を取得して画面表示する
npg = f.page_count
print('PDFファイルのページ数は '+str(npg)+' です')
# 移動したいページ「fpg」を入力する
flag = '0'
while flag != '1':
fpg = int(input('移動したいページを入力してください :'))
if (fpg < 1 or fpg > npg):
print('ページは 1 から '+str(npg)+' の範囲です')
else:
flag = '1'
# 移動先のページ「mpg」を入力する
flag = '0'
while flag != '1':
mpg = -1
while (mpg < 0 or mpg > npg):
mpg = int(input('何ページの後ろに移動しますか 先頭に移動なら0 末尾に移動なら'+str(npg)+'です :'))
if (mpg < 0 or mpg > npg):
print('移動先のページ位置は 0 から '+str(npg)+' の範囲です')
if mpg == 0:
ichi = '先頭'
elif mpg == npg:
ichi = '末尾'
else:
ichi = str(mpg) + 'ページの後ろ'
flag = input(str(fpg)+'ページを '+ichi+' に移動させることでいいですか? Yes=1 No=another :')
# 「fpg」を「mpg」の後ろに移動する
if ichi == '末尾':
f.move_page(fpg-1, to = npg-1) # 移動先が末尾の場合は、いったん「fpg」を末尾ページ「npg」の前に移動したうえで
f.move_page(npg-1, to = npg-2) # 元の末尾ページ「npg」を移動したページの前に移動する
else:
f.move_page(fpg-1, to = mpg) # 移動先が末尾以外の場合は、「fpg」を「mpg」の後ろに移動する
# 保存方法を選択し、新規保存の場合は文字を入力し元のPDFファイル名の末部に付け加えて同じディレクトリ内に保存する
hozon = '0'
hozon = input('保存方法を選択してください 上書き保存=1 新規保存=another :')
if hozon == '1':
f.saveIncr()
print('パス '+path+' で上書き保存しました')
else:
flag = '0'
while flag != '1':
ver = input('元ファイルと異なるファイル名にするため付け加える文字を入力してください :')
path2 = path[0:len(path)-4]+'_'+ver+'.pdf'
if os.path.isfile(path2) == True:
print('パス '+path2+' のファイルは既に存在します')
else:
flag = '1'
f.save(path2)
print('パス '+path2+' で新規にファイルを保存しました')
# ファイルを閉じる
f.close()
ページを移動したいPDFファイルのパスを入力してください : C:\Users\......\......\......\......\......\PDFデータ.pdf
PDFファイルのページ数は 10 です
移動したいページを入力してください : 4
何ページの後ろに移動しますか 先頭に移動なら0 末尾に移動なら10です : 10
4ページを 末尾 に移動させることでいいですか? Yes=1 No=another : 1
保存方法を選択してください 上書き保存=1 新規保存=another : 0
元ファイルと異なるファイル名にするため付け加える文字を入力してください : 2
パス C:\Users\......\......\......\......\......\PDFデータ_2.pdf で新規にファイルを保存しました
# PythonによるPDFファイルの加工
# 【ファイル結合】 PDFファイルの連続したページを抽出し別のPDFファイルに結合して、上書き保存するか新規ファイルとして保存する
# 必要なモジュールを呼び出す
import os
import fitz
# 抽出したいPDFファイルのパスを入力する(拡張子が「.pdf」でない場合やファイルが存在しない場合は再入力とする)
flag = '0'
while flag != '1':
path1 = input('抽出したいPDFファイルのパスを入力してください :')
if '.pdf' not in path1:
print('拡張子が.pdfのファイル名にしてください')
elif os.path.isfile(path1) == False:
print('パス '+path1+' のファイルは存在しません')
else:
flag = '1'
# 抽出したいPDFファイルを開いて「f1」に格納する
f1 = fitz.open(path1)
# 抽出したいPDFファイルのページ数「npg1」を取得して画面表示する
npg1 = f1.page_count
print('抽出したいPDFファイルのページ数は '+str(npg1)+' です')
# 抽出したい最初のページ「fpg」を入力する
flag = '0'
while flag != '1':
fpg = int(input('抽出したい最初のページを入力してください :'))
if (fpg < 1 or fpg > npg1):
print('最初のページは 1 から '+str(npg1)+' の範囲です')
else:
flag = '1'
# 抽出したい最後のページ「tpg」を入力する
flag = '0'
while flag != '1':
tpg = int(input('抽出したい最後のページを入力してください :'))
if (tpg < fpg or tpg > npg1):
print('最後のページは '+str(fpg)+' から '+str(npg1)+' の範囲です')
else:
flag = '1'
# 結合先のPDFファイルのパスを入力する(拡張子が「.pdf」でない場合やファイルが存在しない場合は再入力とする)
flag = '0'
while flag != '1':
path2 = input('結合先のPDFファイルのパスを入力してください :')
if '.pdf' not in path2:
print('拡張子が.pdfのファイル名にしてください')
elif os.path.isfile(path2) == False:
print('パス '+path2+' のファイルは存在しません')
else:
flag = '1'
# 結合先のPDFファイルを開いて「f2」に格納する
f2 = fitz.open(path2)
# 結合先のPDFファイルのページ数「npg2」を取得して画面表示する
npg2 = f2.page_count
print('結合先のPDFファイルのページ数は '+str(npg2)+' です')
# 結合先のページ位置「mpg」を入力する
flag = '0'
while flag != '1':
mpg = -1
while (mpg < 0 or mpg > npg2):
mpg = int(input('結合先のページ位置を入力してください 先頭に結合なら0 末尾に結合なら'+str(npg2)+'です :'))
if (mpg < 0 or mpg > npg2):
print('結合先のページ位置は 0 から '+str(npg2)+' の範囲です :')
if mpg == 0:
ichi = '先頭'
elif mpg == npg2:
ichi = '末尾'
else:
ichi = str(mpg) + 'ページの後ろ'
flag = input('結合先のページ位置は '+ichi+' でいいですか? Yes=1 No=another :')
# 抽出したPDFファイルの「fpg」から「tpg」を結合先のPDFファイルの「mpg」の後ろに結合する
f2.insert_pdf(f1, from_page = fpg-1, to_page = tpg-1, start_at = mpg)
# 保存方法を選択し、新規保存の場合は文字を入力し結合先のPDFファイル名の末部に付け加えて同じディレクトリ内に保存する
hozon = '0'
hozon = input('保存方法を選択してください 上書き保存=1 新規保存=another :')
if hozon == '1':
f2.saveIncr()
print('パス '+path2+' で上書き保存しました')
else:
flag = '0'
while flag != '1':
ver = input('結合先のファイルと異なるファイル名にするため付け加える文字を入力してください :')
path3 = path2[0:len(path2)-4]+'_'+ver+'.pdf'
if os.path.isfile(path3) == True:
print('パス '+path3+' のファイルは既に存在します')
else:
flag = '1'
f2.save(path3)
print('パス '+path3+' で新規にファイルを保存しました')
# PDFファイルを閉じる
f1.close()
f2.close()
抽出したいPDFファイルのパスを入力してください : C:\Users\......\......\......\......\......\抽出PDFデータ.pdf
抽出したいPDFファイルのページ数は 10 です
抽出したい最初のページを入力してください : 5
抽出したい最後のページを入力してください : 10
結合先のPDFファイルのパスを入力してください : C:\Users\......\......\......\......\......\結合PDFデータ.pdf
結合先のPDFファイルのページ数は 2 です
結合先のページ位置を入力してください 先頭に結合なら0 末尾に結合なら2です : 0
結合先のページ位置は 先頭 でいいですか? Yes=1 No=another : 1
保存方法を選択してください 上書き保存=1 新規保存=another : 0
結合先のファイルと異なるファイル名にするため付け加える文字を入力してください : 2
パス C:\Users\......\......\......\......\......\結合PDFデータ_2.pdf で新規にファイルを保存しました