@@ -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+
74101class 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