You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

40 lines
1.4 KiB

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))