def encrypt(self, decrypt=None): # Create PDF writer object pdf_writer = PdfFileWriter() with open(self.pdf, 'rb') as pdf_file: # Read opened PDF file pdf_reader = pypdf3_reader(pdf_file, decrypt) # Add each page from source PDF for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) pdf_writer.addPage(page) # Apply encryption to writer object pdf_writer.encrypt(self.user_pw, self.owner_pw, use_128bit=self.encrypt_128, allow_printing=self.allow_printing, allow_commenting=self.allow_commenting, overwrite_permission=self.overwrite_permission) # todo: add metadata adding functionality pdf_writer.addMetadata({ '/Producer': 'pdfconduit', '/Creator': 'HPA Design', '/Author': 'HPA Design', }) # Write encrypted PDF to file with open(self.output, 'wb') as output_pdf: pdf_writer.write( output_pdf, progress_bar=self.progress_bar, progress_bar_enabled=self.progress_bar_enabled) return self.output
def start_Encryption(self): global filename try: if self.filename[0] and self.userPassword.text( ) and self.ownerPassword.text(): pfw = PdfFileWriter() pdffile = PdfFileReader(self.filename[0]) total_pages = pdffile.numPages for page in range(total_pages): current_page = pdffile.getPage(page) pfw.addPage(current_page) pfw.encrypt(self.userPassword.text(), self.ownerPassword.text()) file = open(self.filename[0].replace('.pdf', '_encrypted.pdf'), 'wb') pfw.write(file) file.close() msg = QMessageBox() msg.setWindowTitle('Done') msg.setIcon(QMessageBox.Information) msg.setText('File encryption done successfully.') msg.exec_() self.filename = '' self.userPassword.setText('') self.ownerPassword.setText('') self.userPassword.setDisabled(True) self.ownerPassword.setDisabled(True) self.startEncryption.setDisabled(True) else: if self.ownerPassword.text() == '': msg = QMessageBox() msg.setWindowTitle('Error') msg.setIcon(QMessageBox.Critical) msg.setText('Owner Password Field is Empty.') msg.exec_() if self.userPassword.text() == '': msg = QMessageBox() msg.setWindowTitle('Error') msg.setIcon(QMessageBox.Critical) msg.setText('User Password Field is Empty.') msg.exec_() except: pass
def add_encryption(path, encryptPath, fileDicts): pdf_writer = PdfFileWriter() for fileName in fileDicts: input_pdf = os.path.join(path, fileName) output_pdf = os.path.join(encryptPath, fileName) pdf_reader = PdfFileReader(input_pdf) for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) pdf_writer.encrypt(user_pwd=fileDicts[fileName], owner_pwd=None, use_128bit=True) #输出文件已存在便删除 if os.path.exists(output_pdf): os.remove(output_pdf) with open(output_pdf, 'wb') as fh: pdf_writer.write(fh)
output.addPage(input1.getPage(1).rotateClockwise(90)) # add page 3 from input1, rotated the other way: output.addPage(input1.getPage(2).rotateCounterClockwise(90)) # alt: output.addPage(input1.getPage(2).rotateClockwise(270)) # add page 4 from input1, but first add a watermark from another PDF: page4 = input1.getPage(3) watermark = PdfFileReader(open("watermark.pdf", "rb")) page4.mergePage(watermark.getPage(0)) output.addPage(page4) # add page 5 from input1, but crop it to half size: page5 = input1.getPage(4) page5.mediaBox.upperRight = (page5.mediaBox.getUpperRight_x() / 2, page5.mediaBox.getUpperRight_y() / 2) output.addPage(page5) # add some Javascript to launch the print window on opening this PDF. # the password dialog may prevent the print dialog from being shown, # comment the the encription lines, if that's the case, to try this out output.addJS("this.print({bUI:true,bSilent:false,bShrinkToFit:true});") # encrypt your new PDF and add a password password = "******" output.encrypt(password) # finally, write "output" to document-output.pdf outputStream = file("PyPDF3-output.pdf", "wb") output.write(outputStream)