winziprint.py: Add option to add letterhead
This commit is contained in:
@ -16,7 +16,7 @@ import weasyprint
|
||||
import pypdf
|
||||
|
||||
|
||||
VERSION = __version__ = '0.1.0'
|
||||
VERSION = __version__ = '0.2.0'
|
||||
SOCKET_ADDRESS = ('127.0.0.1', 30983)
|
||||
|
||||
BATCH_SIZE = 10
|
||||
@ -50,7 +50,7 @@ def convert(input_files: list[str],
|
||||
tmp_file_names = []
|
||||
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
|
||||
steps = [0]
|
||||
|
||||
@ -67,21 +67,41 @@ def convert(input_files: list[str],
|
||||
batch = html_files[i:i + BATCH_SIZE]
|
||||
tmp_page_nums += convert_part(tmp_file, batch, next_step, encoding=encoding)
|
||||
|
||||
letterhead = None
|
||||
merger = pypdf.PdfWriter()
|
||||
i = 0
|
||||
for n, file_name in enumerate(input_files):
|
||||
p0 = len(merger.pages)
|
||||
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:
|
||||
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])
|
||||
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
|
||||
p1 = len(merger.pages)
|
||||
page_nums.append(p1 - p0)
|
||||
if padding and file_name[0] != '!' and len(merger.pages) % 2 != 0:
|
||||
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.close()
|
||||
del merger
|
||||
|
Reference in New Issue
Block a user