Python PDF 合并 Windows "Send To" 上下文菜单
Python PDF Merger with Windows "Send To" context menu
我正在尝试使用 Windows "Send To" 上下文菜单将一些 PDF 文件解析为 PyPDF2 合并功能。
作为旁注:
当我将合并应用到文件夹并且 运行 时,合并工作正常
os.listdir('folder')
我试图查明问题所在,但出现了 'EOF' 错误。
pdf 文件有一个有效的 EOF 标记,我已经用多个 PDF 测试了代码。
代码:
import sys
import os
from PyPDF2 import PdfFileMerger
def pdfMerger(files, loc):
merger = PdfFileMerger()
for pdf in files:
try:
merger.append(open(pdf, 'rb'))
except Exception as E:
input(E)
with open(loc + '/combined_pdf.pdf', 'wb') as pdf_out:
merger.write(pdf_out)
if __name__ == '__main__':
if len(sys.argv) > 1:
pdfMerger(sys.argv, os.path.split(sys.argv[1])[0])
有人可以告诉我我做错了什么吗?
感谢您的帮助!
没关系,想通了:
#!/usr/bin/python3
'''
Description:
Merge PDF files in to 1 pdf file in source directory.
'''
import os
import sys
try:
from PyPDF2 import PdfFileMerger
except ImportError as missingModule:
print('could not import PyPDF2', missingModule)
def checkType(arg):
# check if given argument is a directory
if os.path.isdir(arg[1]):
# distil the source path
arg = str(arg[1])
# create a list with only pdf files
pdf_files = [os.path.join(arg, f) for f in os.listdir(arg) if f.endswith('pdf')]
src_loc = arg
return pdf_files, src_loc
# if arguments are pdf files, distil source folder and pdf files
src_loc = os.path.split(sys.argv[1])[0]
pdf_files = sys.argv[1:]
return pdf_files, src_loc
def pdfMerger(args):
files = args[0]
loc = args[1]
merger = PdfFileMerger(strict=False)
for pdf in files:
try:
merger.append(open(pdf, 'rb'))
except Exception as E:
input(E)
with open(loc + '/combined_pdf.pdf', 'wb') as pdf_out:
merger.write(pdf_out)
if __name__ == '__main__':
if len(sys.argv) < 1:
print('Usage: Python PFM.py [directory] / [file, file, etc.]')
pdfMerger(checkType(sys.argv))
我正在尝试使用 Windows "Send To" 上下文菜单将一些 PDF 文件解析为 PyPDF2 合并功能。
作为旁注:
当我将合并应用到文件夹并且 运行 时,合并工作正常
os.listdir('folder')
我试图查明问题所在,但出现了 'EOF' 错误。 pdf 文件有一个有效的 EOF 标记,我已经用多个 PDF 测试了代码。
代码:
import sys
import os
from PyPDF2 import PdfFileMerger
def pdfMerger(files, loc):
merger = PdfFileMerger()
for pdf in files:
try:
merger.append(open(pdf, 'rb'))
except Exception as E:
input(E)
with open(loc + '/combined_pdf.pdf', 'wb') as pdf_out:
merger.write(pdf_out)
if __name__ == '__main__':
if len(sys.argv) > 1:
pdfMerger(sys.argv, os.path.split(sys.argv[1])[0])
有人可以告诉我我做错了什么吗? 感谢您的帮助!
没关系,想通了:
#!/usr/bin/python3
'''
Description:
Merge PDF files in to 1 pdf file in source directory.
'''
import os
import sys
try:
from PyPDF2 import PdfFileMerger
except ImportError as missingModule:
print('could not import PyPDF2', missingModule)
def checkType(arg):
# check if given argument is a directory
if os.path.isdir(arg[1]):
# distil the source path
arg = str(arg[1])
# create a list with only pdf files
pdf_files = [os.path.join(arg, f) for f in os.listdir(arg) if f.endswith('pdf')]
src_loc = arg
return pdf_files, src_loc
# if arguments are pdf files, distil source folder and pdf files
src_loc = os.path.split(sys.argv[1])[0]
pdf_files = sys.argv[1:]
return pdf_files, src_loc
def pdfMerger(args):
files = args[0]
loc = args[1]
merger = PdfFileMerger(strict=False)
for pdf in files:
try:
merger.append(open(pdf, 'rb'))
except Exception as E:
input(E)
with open(loc + '/combined_pdf.pdf', 'wb') as pdf_out:
merger.write(pdf_out)
if __name__ == '__main__':
if len(sys.argv) < 1:
print('Usage: Python PFM.py [directory] / [file, file, etc.]')
pdfMerger(checkType(sys.argv))