업무상 서명해서 스캔한 PDF와 Office에서 PDF로 변환한 두 PDF 문서를 머지할 일이 잦아
배운적은 없지만 python으로 야매코딩.
macOS의 미리보기에서 필요한 페이지만 드래그해서 머지하는게 가장 깔끔한 방법이지만,
Windows만 있는 환경에서 할 필요도 있어서 만듬
import sys
from PyPDF2 import PdfFileWriter, PdfFileReader
def usage():
print("#" * 100)
print('''
[PDFCAT] by alexken@TTA
A.pdf [a~b] + B.pdf [c~d] -> C.pdf
Usage:
$ python {} A.pdf a b B.pdf c d
'''.format(sys.argv[0]))
print("#" * 100)
def merge_pdf(pdf_a, pdf_b):
try:
in_pdf_a = PdfFileReader(pdf_a["name"])
in_pdf_b = PdfFileReader(pdf_b["name"])
out_c = PdfFileWriter()
if pdf_a["from"] == 0:
pdf_a["from"] = 1
if pdf_a["to"] == 0:
pdf_a["to"] = in_pdf_a.getNumPages()
if pdf_b["from"] == 0:
pdf_b["from"] = 1
if pdf_b["to"] == 0:
pdf_b["to"] = in_pdf_b.getNumPages()
for i in range(pdf_a["from"]-1, pdf_a["to"]):
print( "{} page:{}".format(pdf_a["name"], i+1) )
out_c.addPage(in_pdf_a.getPage(i))
print( "+" )
for i in range(pdf_b["from"]-1, pdf_b["to"]):
print( "{} page:{}".format(pdf_b["name"], i+1) )
out_c.addPage(in_pdf_b.getPage(i))
with open("C.pdf", "wb") as outputStream:
out_c.write(outputStream)
except:
print(">>>> Fail to Merge")
if __name__ == "__main__":
if len(sys.argv) == 7:
merge_pdf({"name":sys.argv[1],"from":int(sys.argv[2]),"to":int(sys.argv[3])},
{"name":sys.argv[4],"from":int(sys.argv[5]),"to":int(sys.argv[6])})
else:
usage()
from PyPDF2 import PdfFileWriter, PdfFileReader
def usage():
print("#" * 100)
print('''
[PDFCAT] by alexken@TTA
A.pdf [a~b] + B.pdf [c~d] -> C.pdf
Usage:
$ python {} A.pdf a b B.pdf c d
'''.format(sys.argv[0]))
print("#" * 100)
def merge_pdf(pdf_a, pdf_b):
try:
in_pdf_a = PdfFileReader(pdf_a["name"])
in_pdf_b = PdfFileReader(pdf_b["name"])
out_c = PdfFileWriter()
if pdf_a["from"] == 0:
pdf_a["from"] = 1
if pdf_a["to"] == 0:
pdf_a["to"] = in_pdf_a.getNumPages()
if pdf_b["from"] == 0:
pdf_b["from"] = 1
if pdf_b["to"] == 0:
pdf_b["to"] = in_pdf_b.getNumPages()
for i in range(pdf_a["from"]-1, pdf_a["to"]):
print( "{} page:{}".format(pdf_a["name"], i+1) )
out_c.addPage(in_pdf_a.getPage(i))
print( "+" )
for i in range(pdf_b["from"]-1, pdf_b["to"]):
print( "{} page:{}".format(pdf_b["name"], i+1) )
out_c.addPage(in_pdf_b.getPage(i))
with open("C.pdf", "wb") as outputStream:
out_c.write(outputStream)
except:
print(">>>> Fail to Merge")
if __name__ == "__main__":
if len(sys.argv) == 7:
merge_pdf({"name":sys.argv[1],"from":int(sys.argv[2]),"to":int(sys.argv[3])},
{"name":sys.argv[4],"from":int(sys.argv[5]),"to":int(sys.argv[6])})
else:
usage()