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