Skip to content

Commit 8e2c25d

Browse files
committed
Finished first Background/Stamping functionality. Some options still need to be implemented.
1 parent c926b69 commit 8e2c25d

1 file changed

Lines changed: 29 additions & 2 deletions

File tree

pypdfbuilder.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def __init__(self, parent=None):
2828
self.__bg_only_first_page = self.parent.builder.get_variable('bg_only_first_page')
2929
self.__bg_button_label = self.parent.builder.get_variable('bg_options_bg_button')
3030
self.__only_first_button_label = self.parent.builder.get_variable('bg_options_only_first_button')
31+
self.__bg_command.set('BG')
3132

3233
@property
3334
def parent(self):
@@ -71,6 +72,32 @@ def choose_bg_option(self):
7172
self.__only_first_button_label.set('Apply background to only the first page')
7273
self.__bg_button_label.set('Choose Background …')
7374

75+
def save_as(self):
76+
save_filepath = self.parent.get_save_file(widget_title='Save New PDF to …')
77+
if self.__source_filepath and self.__bg_filepath:
78+
out_pdf = PdfFileWriter()
79+
command = self.__bg_command.get()
80+
for p in range(self.__source_pdf_pages):
81+
# new PdfFileReader instances needed for every page merged. See here:
82+
# https://github.com/mstamy2/PyPDF2/issues/100#issuecomment-43145634
83+
source_pdf = PdfFileReader(open(self.__source_filepath, "rb"))
84+
bg_pdf = PdfFileReader(open(self.__bg_filepath, "rb"))
85+
bg_page = bg_pdf.getPage(0)
86+
source_page = source_pdf.getPage(p)
87+
back_page = None
88+
front_page = None
89+
if command == 'STAMP':
90+
front_page = bg_page
91+
back_page = source_page
92+
elif command == 'BG':
93+
front_page = source_page
94+
back_page = bg_page
95+
back_page.mergePage(front_page)
96+
out_pdf.addPage(back_page)
97+
with open(save_filepath, "wb") as out_pdf_stream:
98+
out_pdf.write(out_pdf_stream)
99+
100+
74101
class SplitTabManager:
75102
def __init__(self, parent=None):
76103
self.parent = parent
@@ -372,10 +399,10 @@ def bgtab_choose_number_option(self):
372399
pass
373400

374401
def bgtab_choose_source_file(self):
375-
self.bgtab.choose_source()
402+
self.bgtab.choose_source_file()
376403

377404
def bgtab_choose_bg_file(self):
378-
self.bgtab.choose_bg()
405+
self.bgtab.choose_bg_file()
379406

380407
def bgtab_save_as(self):
381408
self.bgtab.save_as()

0 commit comments

Comments
 (0)