import argparse import copy import importlib.metadata as meta import os import platform import subprocess import tempfile import pikepdf from pikepdf import Rectangle if __name__ == '__main__': parser = argparse.ArgumentParser(description='Convert DHL Labels into 4 x 6 in Labels') parser.add_argument('input', help='Input file') parser.add_argument('--version', action='version', version=f'DHLCropper {meta.version("dhlcropper")}') args = parser.parse_args() with pikepdf.Pdf.open(args.input) as my_pdf: new_pdf = pikepdf.new(); page = my_pdf.pages[0] page.rotate(90, True) paper_x, paper_y = (288, 432) new_pdf.add_blank_page(page_size=(paper_x, paper_y)) upper = copy.copy(page) lower = copy.copy(page) upper.mediabox = [20, 485, 260, 780] lower.mediabox = [355, 485, 570, 780] new_pdf.pages[0].add_overlay(upper, rect=Rectangle(5, 205, paper_x - 5, paper_y)) new_pdf.pages[0].add_overlay(lower, rect=Rectangle(0, 0, paper_x, 200)) tempfile = tempfile.NamedTemporaryFile(delete=False) new_pdf.save(tempfile) if platform.system() == 'Darwin': # macOS subprocess.call(('open', tempfile.name)) elif platform.system() == 'Windows': # Windows os.startfile(tempfile.name) else: # linux variants subprocess.call(('xdg-open', tempfile.name))