pdftk.exe
Ghostscriptを呼び出さずに、のみに依存する回答を更新しました
ユーザー@mmjによって提供された回答は、以前は問題なく機能していましたが、GSバージョン9.20と9.50の間のどこかで機能しなくなりました。@Adobeが提供するソリューションも知っています。ただし、1つ以上のファイルを選択し、右クリック→[送信]を選択して、Windows(10)エクスプローラーから定期的なタスクを実行するのが好きです。pdftk.exe
これは、 (2.02でテストされた)を使用してページの総数をカウントし、すべてを単一のファイルに抽出するPythonスクリプト(3.8と互換性があります)です。入力として複数のPDFを受け入れる必要があります。pdftk.exe
Pythonがあり、PATH内にあることを確認してください。
これに名前extract-pdf-pages-py.cmd
を付けて、次の場所に配置しshell:sendto
ます。
python %APPDATA%\Microsoft\Windows\SendTo\extract-pdf-pages-py.py %*
extract-pdf-pages-py.py
同じフォルダに次のものを入れます。
#!/usr/bin/python3
# put as extract-pdf-pages-py.py to shell:sendto
import os
import subprocess
import re
import sys
import mimetypes
def is_tool(name):
from shutil import which
return which(name) is not None
if not is_tool('pdftk'):
input('pdftk.exe not within PATH. Aborting...')
raise SystemExit("pdftk.exe not within PATH.")
sys.argv.pop(0)
for j in range(len(sys.argv)):
input_pdf = sys.argv[j]
if 'application/pdf' not in mimetypes.guess_type(input_pdf):
input(f"File {input_pdf} is not a PDF. Skipping...")
continue
savefile = input_pdf.rstrip('.pdf')
numpages = subprocess.Popen(f"pdftk \"{input_pdf}\" dump_data", shell=True, stdout=subprocess.PIPE)
output1 = str(numpages.communicate()[0])
output2 = re.search("NumberOfPages: ([0-9]*)", output1)
number_of_pages = int(output2.group(1))
for i in range(1, number_of_pages + 1):
os.system(f"pdftk \"{input_pdf}\" cat {i} output \"{savefile}\"{i:04d}.pdf")
私はこの回答(@Adobeによるスクリプト)とその回答( )のコードを使用しましis_tool
た。