Last active
February 3, 2021 15:03
-
-
Save GluTbl/259c40e47d03f9887aff4cebeda23a1d to your computer and use it in GitHub Desktop.
Pdf Duplex printing split file
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python3 | |
import argparse | |
import os | |
import sys | |
from pathlib import Path | |
from PyPDF2 import PdfFileWriter, PdfFileReader | |
#/home/v/Downloads/Ancient_merged.pdf | |
from PyPDF2.pdf import PageObject, NameObject, RectangleObject, NullObject, DictionaryObject | |
def isfileexist(path:str)->bool: | |
my_file = Path(path) | |
if my_file.is_file(): | |
print(f"File \"{path}\" aready exist!!!") | |
return True | |
return False | |
parser = argparse.ArgumentParser() | |
parser.add_argument('-f', '--pdf_file') | |
parser.add_argument('-s', '--suffix') | |
parser.add_argument('-r', '--reverse' ,action='store_true') | |
parser.add_argument('-m', '--modified' ,action='store_true') | |
args = parser.parse_args() | |
########### | |
suffix="" | |
if args.suffix is not None: | |
suffix=args.suffix+"_" | |
################ | |
if args.pdf_file is None: | |
print("Please insert pdf file") | |
sys.exit() | |
############### | |
flag_reverse_even=False | |
if args.reverse: | |
print("Even page will make reverse...") | |
flag_reverse_even=True | |
################ | |
modified_file_storage=None | |
if args.modified: | |
modified_file_storage=f"{suffix}{os.path.splitext(args.pdf_file)[0]}_Modified.pdf" | |
print(f"Soring if filed is modified in \"{modified_file_storage}\"") | |
odd_file=f"{suffix}{os.path.splitext(args.pdf_file)[0]}_Odd_Print_First.pdf" | |
even_file=f"{suffix}{os.path.splitext(args.pdf_file)[0]}_Even_Print_Second.pdf" | |
######exit if file aready exist | |
if isfileexist(odd_file): | |
sys.exit() | |
if isfileexist(even_file): | |
sys.exit() | |
############################## | |
my_file = Path(args.pdf_file) | |
if not my_file.is_file(): | |
print(f"There is no such file \"{args.pdf_file}\"") | |
sys.exit() | |
inputpdf = PdfFileReader(open(args.pdf_file, "rb")) | |
odd_output = PdfFileWriter() | |
even_output = PdfFileWriter() | |
print("Starting job\n") | |
odd_pages=[] | |
evenpages=[] | |
for i in range(inputpdf.numPages): | |
if i % 2==1:#it is even page | |
evenpages.append(i) | |
else: | |
odd_pages.append(i) | |
flag_same_page=len(evenpages) == len(odd_pages) | |
for odd_page in odd_pages: | |
odd_output.addPage(inputpdf.getPage(odd_page)) | |
if flag_reverse_even: | |
evenpages.reverse() | |
if not flag_same_page: | |
#######create a blank page ######### | |
########################### | |
blank_page = PageObject.createBlankPage(inputpdf) | |
######################################### | |
even_output.addPage(blank_page) | |
for even_page in evenpages: | |
even_output.addPage(inputpdf.getPage(even_page)) | |
if not flag_reverse_even and not flag_same_page: | |
even_output.addBlankPage() | |
print("\n") | |
with open(odd_file , "wb") as outputStream: | |
odd_output.write(outputStream) | |
with open(even_file , "wb") as outputStream: | |
even_output.write(outputStream) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment