def main(): parser = argparse.ArgumentParser( prog='ca6fix', description= "Fix some disappointmented points in Computer Architecture Quantitative Approach 6th Edition Japanese translation PDF file.", usage='ca6fix -i ca6.pdf -o ca6_fixed.pdf', add_help=True) parser.add_argument('-i', '--input', help='input PDF file', required=True) parser.add_argument('-o', '--output', help='output PDF file', required=True) args = parser.parse_args() reader = PdfFileReader(args.input) writer = PdfFileWriter() for p in range(reader.getNumPages()): page = reader.getPage(p) writer.addPage(page) writer.insertBlankPage(None, None, 4) for index in outline: add_outline(writer, index, 21) writer.setPageLayout('/TwoPageRight') writer.addMetadata({ '/Title': 'コンピュータアーキテクチャ 定量的アプローチ[第6版]', '/Author': 'ジョン・L・ヘネシー, デイビッド・A・パターソン(著), 中條拓伯, 天野英晴, 鈴木 貢(訳)' }) with open(args.output, 'wb') as fh: writer.write(fh)
def frasers2up(inputPdfFileWriter): edited_file = Pdfwrite() blank_file = Pdfwrite() leftpage = inputPdfFileWriter.getPage(0) leftx = leftpage.mediaBox.upperRight[0] lefty = leftpage.mediaBox.upperRight[1] for page in range(0, inputPdfFileWriter.getNumPages() - 1, 2): leftpage = inputPdfFileWriter.getPage(page) rightpage = inputPdfFileWriter.getPage(page + 1) leftx = leftpage.mediaBox.upperRight[0] lefty = leftpage.mediaBox.upperRight[1] blank_file.insertBlankPage(leftx, lefty, 0) blank_page = blank_file.getPage(0) blank_page.mergeTranslatedPage(rightpage, leftx, 0, 1) blank_page.mergePage(leftpage) edited_file.addPage(blank_page) # leftpage, leftx, 0, True) return edited_file
def process_the_pdf(): confirm = tk.messagebox.askyesno("Doing the thing", "Are you sure you want to do the thing?") if confirm == True: try: pdf = Pdfread(pdf_path.get()) wf = Pdfwrite() wf.appendPagesFromReader(pdf) for i in range(blank_start.get()): wf.insertBlankPage(0) for i in range(end_blank_pages.get()): wf.addBlankPage() # ! --> here's where the shuffle goes, pos save temp pdf here? list_pages = [] for i in range(wf.getNumPages()): list_pages.append(i) list_sigs_pages = [] for group in chunker(list_pages, sig_thickness_x4.get()): list_sigs_pages.append(group) newpageorder = shufoutput(list_sigs_pages) newpdf = Pdfwrite() for page in newpageorder: newpdf.addPage(wf.getPage(page)) temp = Pdfwrite() # up2 = turninto2up(newpdf) temp = newpdf destpath = pdf_output_path.get() with open(destpath, 'wb+') as out: temp.write(out) up2in = Pdfread(destpath) up2 = Pdfwrite() for i in range(up2in.getNumPages()): temp = up2in.getPage(i) up2.addPage(temp) up2 = frasers2up(up2) # up2 = turninto2up(up2in) with open(destpath, "wb+") as up2out: up2.write(up2out) tk.messagebox.showinfo( "Finished", "Finished, and maybe it even worked this time!") except FileNotFoundError: tk.messagebox.showerror( "File not found", "Either the input file or the output files is wrong.\nOr both of them. Who knows?" ) pass else: pass