winziprint.py: Add option to add letterhead
This commit is contained in:
@ -16,7 +16,7 @@ import weasyprint
|
|||||||
import pypdf
|
import pypdf
|
||||||
|
|
||||||
|
|
||||||
VERSION = __version__ = '0.1.0'
|
VERSION = __version__ = '0.2.0'
|
||||||
SOCKET_ADDRESS = ('127.0.0.1', 30983)
|
SOCKET_ADDRESS = ('127.0.0.1', 30983)
|
||||||
|
|
||||||
BATCH_SIZE = 10
|
BATCH_SIZE = 10
|
||||||
@ -50,7 +50,7 @@ def convert(input_files: list[str],
|
|||||||
tmp_file_names = []
|
tmp_file_names = []
|
||||||
page_nums = []
|
page_nums = []
|
||||||
|
|
||||||
html_files = [file.lstrip('!') for file in input_files if not file.endswith('.pdf')]
|
html_files = [file.lstrip('!#') for file in input_files if not file.endswith('.pdf')]
|
||||||
total_steps = len(html_files) + math.ceil(len(html_files) / BATCH_SIZE) + 1
|
total_steps = len(html_files) + math.ceil(len(html_files) / BATCH_SIZE) + 1
|
||||||
steps = [0]
|
steps = [0]
|
||||||
|
|
||||||
@ -67,21 +67,41 @@ def convert(input_files: list[str],
|
|||||||
batch = html_files[i:i + BATCH_SIZE]
|
batch = html_files[i:i + BATCH_SIZE]
|
||||||
tmp_page_nums += convert_part(tmp_file, batch, next_step, encoding=encoding)
|
tmp_page_nums += convert_part(tmp_file, batch, next_step, encoding=encoding)
|
||||||
|
|
||||||
|
letterhead = None
|
||||||
merger = pypdf.PdfWriter()
|
merger = pypdf.PdfWriter()
|
||||||
i = 0
|
i = 0
|
||||||
for n, file_name in enumerate(input_files):
|
for n, file_name in enumerate(input_files):
|
||||||
p0 = len(merger.pages)
|
p0 = len(merger.pages)
|
||||||
if file_name.endswith('.pdf'):
|
if file_name.endswith('.pdf'):
|
||||||
merger.append(file_name.lstrip('!'))
|
if file_name.startswith('#'):
|
||||||
|
r = pypdf.PdfReader(file_name.lstrip('!#'))
|
||||||
|
letterhead = r.pages[0]
|
||||||
|
del r
|
||||||
|
else:
|
||||||
|
merger.append(file_name.lstrip('!#'))
|
||||||
else:
|
else:
|
||||||
batch_page_nums = tmp_page_nums[i // BATCH_SIZE * BATCH_SIZE:(i // BATCH_SIZE + 1) * BATCH_SIZE]
|
batch_page_nums = tmp_page_nums[i // BATCH_SIZE * BATCH_SIZE:(i // BATCH_SIZE + 1) * BATCH_SIZE]
|
||||||
page_start = sum(batch_page_nums[:i % BATCH_SIZE])
|
page_start = sum(batch_page_nums[:i % BATCH_SIZE])
|
||||||
merger.append(tmp_file_names[n // BATCH_SIZE], pages=(page_start, page_start + tmp_page_nums[i]))
|
if file_name.startswith('#'):
|
||||||
|
r = pypdf.PdfReader(tmp_file_names[n // BATCH_SIZE])
|
||||||
|
letterhead = r.pages[0]
|
||||||
|
del r
|
||||||
|
else:
|
||||||
|
merger.append(tmp_file_names[n // BATCH_SIZE], pages=(page_start, page_start + tmp_page_nums[i]))
|
||||||
i += 1
|
i += 1
|
||||||
p1 = len(merger.pages)
|
p1 = len(merger.pages)
|
||||||
page_nums.append(p1 - p0)
|
page_nums.append(p1 - p0)
|
||||||
if padding and file_name[0] != '!' and len(merger.pages) % 2 != 0:
|
if padding and file_name[0] != '!' and len(merger.pages) % 2 != 0:
|
||||||
merger.add_blank_page()
|
if letterhead:
|
||||||
|
merger.add_page(letterhead)
|
||||||
|
letterhead = None
|
||||||
|
else:
|
||||||
|
merger.add_blank_page()
|
||||||
|
if letterhead:
|
||||||
|
merger.insert_page(letterhead, index=0)
|
||||||
|
merger.insert_blank_page(index=1)
|
||||||
|
page_nums.pop(0)
|
||||||
|
page_nums.insert(0, 1)
|
||||||
merger.write(output_files)
|
merger.write(output_files)
|
||||||
merger.close()
|
merger.close()
|
||||||
del merger
|
del merger
|
||||||
|
Reference in New Issue
Block a user