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 main(): parser = argparse.ArgumentParser( prog='ca6fix', description= "Fix some disappointmented points in Computer Architecture Quantitative Approach 6th Edition Japanese translation PDF file.", usage='ca6fix -i ca6.pdf -o ca6_fixed.pdf', add_help=True) parser.add_argument('-i', '--input', help='input PDF file', required=True) parser.add_argument('-o', '--output', help='output PDF file', required=True) args = parser.parse_args() reader = PdfFileReader(args.input) writer = PdfFileWriter() for p in range(reader.getNumPages()): page = reader.getPage(p) writer.addPage(page) writer.insertBlankPage(None, None, 4) for index in outline: add_outline(writer, index, 21) writer.setPageLayout('/TwoPageRight') writer.addMetadata({ '/Title': 'コンピュータアーキテクチャ 定量的アプローチ[第6版]', '/Author': 'ジョン・L・ヘネシー, デイビッド・A・パターソン(著), 中條拓伯, 天野英晴, 鈴木 貢(訳)' }) with open(args.output, 'wb') as fh: writer.write(fh)
def pdf_add_Stamp(path, file, stamp): with open(os.path.join(path, file), 'rb') as pdf: pdf_reader = PdfFileReader(pdf) with open(os.path.join(path, stamp), 'rb') as file_stamp: watermark = PdfFileReader(file_stamp) first_page = pdf_reader.getPage(0) first_page_watermark = watermark.getPage(0) first_page.mergePage(first_page_watermark) pdf_writer = PdfFileWriter() pdf_writer.addPage(first_page) pdf_writer.addMetadata({ '/NumeroCadastre': 'LaTeteAToto', # # '/Title': 'PDF in Python' }) file_out = open(os.path.join(path, 'new_w_stamp.pdf'), 'wb') pdf_writer.write(file_out) # pdf.close() file_out.close() watermark.close()
def pdf_add_metadata(path, file, key, value, out_file, out_path=''): if out_path == '': out_path = path with open(os.path.join(path, file), 'rb') as pdf: try: pdf_reader = PdfFileReader(pdf) metadata = pdf_reader.getDocumentInfo() print(metadata) pdf_writer = PdfFileWriter() pdf_writer.appendPagesFromReader(pdf_reader) pdf_writer.addMetadata({ '/' + key: value, # # '/Title': 'PDF in Python' }) file_out = open(os.path.join(out_path, out_file), 'wb') pdf_writer.write(file_out) # pdf.close() file_out.close() # print('File ' + os.path.basename(file) + ' has ' + str(pg) + ' page(s)') except ValueError: print(ValueError, 'rrrt')
def add_watermark(file_stream, mark, out, info): """把水印添加到pdf中""" pdf_output = PdfFileWriter() #input_stream = open(pdf_file_in, 'rb') pdf_input = PdfFileReader(file_stream, strict=False) pdf_info = pdf_input.getDocumentInfo() # 获取PDF文件的页数 pageNum = pdf_input.getNumPages() # 读入水印pdf文件 pdf_watermark = PdfFileReader(open(mark, 'rb'), strict=False) # 给每一页打水印 for i in range(pageNum): page = pdf_input.getPage(i) page.mergePage(pdf_watermark.getPage(0)) # page.compressContentStreams() # 压缩内容 pdf_output.addPage(page) # 加密码 #pdf_output.encrypt(user_pwd='', owner_pwd='12345',use_128bit=True) pdf_output.addMetadata(pdf_info) # 可以更改一些属性值 pdf_output.addMetadata({'/Comment': '新的属性', '/Title': '新的标题'}) pdf_output.write(open(out, 'wb'))
# -*- coding:utf-8 -*- # Author:Liu Hongliang from PyPDF4 import PdfFileReader, PdfFileWriter source_file = open("f:\\c1.pdf", "rb") fin = PdfFileReader(source_file) info = dict(fin.getDocumentInfo()) info['/ModDate'] = info['/CreationDate'] print(info) dest_file = open("f:\\c2.pdf", "wb") fout = PdfFileWriter() fout.addMetadata(info) fout.appendPagesFromReader(fin) fout.write(dest_file) source_file.close() dest_file.close()
embeddedFilesDictionary.update( {NameObject("/EmbeddedFiles"): embeddedFilesNamesDictionary}) myPdfFileWriterObj._root_object.update( {NameObject("/Names"): embeddedFilesDictionary}) else: myPdfFileWriterObj._root_object["/Names"]["/EmbeddedFiles"][ "/Names"].append(createStringObject(fname)) myPdfFileWriterObj._root_object["/Names"]["/EmbeddedFiles"][ "/Names"].append(filespec) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('config', help='Path to config file.') args = parser.parse_args() with open(args.config) as f: config = json.load(f) fr = PdfFileReader(config['dstFileName'], 'rb') fw = PdfFileWriter() fw.appendPagesFromReader(fr) for key in config['pdfInfo']: fw.addMetadata({key: config['pdfInfo'][key]}) for oneAttachment in config['pdfAttachments']: with open(oneAttachment['srcFileName'], 'rb') as oneAttachmentFile: attachmentData = oneAttachmentFile.read() appendAttachment(fw, oneAttachment['attFileName'], attachmentData) with open(config['dstFileName'] + '.finalized.pdf', 'wb') as file: fw.write(file)