업무상 서명해서 스캔한 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()