def encrypt_file(self): path = self.file_selector.getpath() if not path: messagebox.showerror(MESSAGE_TITLE, "You must select a PDF file.") return if not self.password.get(): messagebox.showerror(MESSAGE_TITLE, "You must enter a password.") return pdf_reader = PdfFileReader(path) if pdf_reader.isEncrypted: messagebox.showwarning(MESSAGE_TITLE, "File is already encrypted.") return pdf_writer = PdfFileWriter() for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) pdf_writer.encrypt(self.password.get()) save_path = save_as_pdf(parent=self) if not save_path: messagebox.showerror(MESSAGE_TITLE, "You must specify a file save path") if save_path[-4:].lower() != ".pdf": save_path += ".pdf" with Path(save_path).open(mode="wb") as save_file: pdf_writer.write(save_file) messagebox.showinfo(MESSAGE_TITLE, "PDF encrypted.")
def add_watermark(file_path, file_stage, fileno): """把水印添加到pdf中""" pdf_input = PdfFileReader(file_path) if pdf_input.isEncrypted: return pdf_info = pdf_input.getDocumentInfo() w, h = pdf_input.getPage(0).mediaBox[2:] # 页面尺寸转换为毫米 page = (int(w) * 0.3528, int(h) * 0.3528) # 创建水印文件 #mark = str(int(time.time()))+'.pdf' #mark = os.path.join('d:/', mark) mark = create_watermark(page, file_stage, fileno) # 读入水印pdf文件 pageNum = pdf_input.getNumPages() pdf_output = PdfFileWriter() pdf_watermark = PdfFileReader(open(mark, 'rb'), strict=False) for i in range(pageNum): page = pdf_input.getPage(i) page.mergePage(pdf_watermark.getPage(0)) pdf_output.addPage(page) #print('merg 结束...' + str(datetime.now())) # 加密码 pdf_output.encrypt(user_pwd='', owner_pwd='12345', use_128bit=True) pdf_output.addMetadata(pdf_info) pdf_output.write(open(file_path, 'wb'))
def add_encryption(input_pdf, output_pdf, password): pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(input_pdf) for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) pdf_writer.encrypt(user_pwd=password, owner_pwd=None, use_128bit=True) with open(output_pdf, 'wb') as out: pdf_writer.write(out)
def encrypt(input, output, password, verbosity, **kwargs): """encrypt pdf. pdfcli encrypt source.pdf -o crypted.pdf -p password """ source = PdfFileReader(input) output_pdf = PdfFileWriter() for page in source.pages: output_pdf.addPage(page) output_pdf.encrypt(user_pwd=password) if verbosity >= 1: click.echo("Writing %s" % output.name) output_pdf.write(output)
def add_encryption(input_pdf, output_pdf, password): """ PDF加密 :param input_pdf: :param output_pdf: :param password: :return: """ pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(input_pdf) for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) pdf_writer.encrypt(user_pwd=password, owner_pwd=None, use_128bit=True) with open(output_pdf, 'wb') as fh: pdf_writer.write(fh)
def encrypt_pdf(self, inputpdf, outpdf, password): """ 加密pdf inputpdf: 输入的pdf名称,包含路径 outpdf: 输出的pdf名称,不包含路径 """ pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(inputpdf) for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) pdf_writer.encrypt(user_pwd=password, use_128bit=True) # 默认为40bit加密 with open(self.processed + outpdf, 'wb') as f: pdf_writer.write(f) # print("文档加密完成!") return "文档加密完成!"
def encrypt_pdf(input_file: str, password: str): """ Encrypts a file using PyPDF4 library. Precondition: File is not encrypted. """ pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(open(input_file, 'rb'), strict=False) if pdf_reader.isEncrypted: print(f"PDF File {input_file} already encrypted") return False, None, None try: # To encrypt all the pages of the input file, you need to loop over all of them # and to add them to the writer. for page_number in range(pdf_reader.numPages): pdf_writer.addPage(pdf_reader.getPage(page_number)) except utils.PdfReadError as e: print(f"Error reading PDF File {input_file} = {e}") return False, None, None # The default is 128 bit encryption (if false then 40 bit encryption). pdf_writer.encrypt(user_pwd=password, owner_pwd=None, use_128bit=True) return True, pdf_reader, pdf_writer
def encrypt_single_pdf(input_file, output_file, password): """Encrypt single pdf as another file Args: input_file: input file path name output_file: output file path name password: password used when encryption Return: None """ with open(input_file, 'rb') as input_stream: reader = PdfFileReader(input_stream) writer = PdfFileWriter() #writer.appendPagesFromReader(reader) for page in range(reader.getNumPages()): writer.addPage(reader.getPage(page)) writer.encrypt(password) for page in range(reader.getNumPages()): a = writer.getPage(page) #a.scaleTo(480, 270) with open(output_file, 'wb') as output_stream: writer.write(output_stream)