def make_watermark_pdf(self, number, attachment): ''' 给PDF类型的文件打水印 :param number: :param attachment: :return: ''' print u'准备给PDF打水印----看以下输出的日志是否正确-通用模块' print attachment print number b = self._filestore() a = b + '/' + attachment[0]['store_fname'].split('/')[0] + "/" old_file_name = attachment[0]['store_fname'].split('/')[1] c = canvas.Canvas(a + u"shuiyin.pdf") c.setFont("Courier", 35) # 设置水印文字的灰度 c.setFillGray(0.4, 0.4) # 设置水印文件,并将文字倾斜45度角 c.saveState() c.rotate(45) # 旋转角度 c.translate(500, 100) # 重设中心点 c.drawCentredString(100, 270, number) # c.translate(200, 350) # 重设中心点 c.drawCentredString(0, 0, number) # 绘制一个以坐标为中心的字符串 # # c.translate(400, 50) # 重设中心点 c.drawCentredString(-100, -300, number) c.restoreState() c.save() output = PdfFileWriter() aa = file(b + '/' + attachment[0]['store_fname'], 'rb') input1 = PdfFileReader(aa) bb = file(a + u'shuiyin.pdf', 'rb') water = PdfFileReader(bb) # 获取pdf文件的页数 pageNum = input1.getNumPages() # 给每一页打水印 for i in range(pageNum): page = input1.getPage(i) page.mergePage(water.getPage(0)) output.addPage(page) # 最后输出文件 outStream = file(a + u'shuchuwenjian.pdf', 'wb') output.write(outStream) aa.close() bb.close() outStream.close() os.chdir(a) os.remove("shuiyin.pdf") # 删除水印文件 os.remove(old_file_name) # 删除上次源文件 os.rename('shuchuwenjian.pdf', old_file_name) # 添加水印的文件改名
def _merge_pdf(self, documents, both_sides=False): print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" print "merge_pdf %s" % (both_sides) print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" """Merge PDF files into one. :param documents: list of path of pdf files :returns: path of the merged pdf """ blankpdfstr = '''JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURl Y29kZT4+CnN0cmVhbQp4nDPQM1Qo5ypUMFAwALJMLU31jBQsTAz1LBSKUrnCtRTyuAIVAIcdB3IK ZW5kc3RyZWFtCmVuZG9iagoKMyAwIG9iago0MgplbmRvYmoKCjUgMCBvYmoKPDwKPj4KZW5kb2Jq Cgo2IDAgb2JqCjw8L0ZvbnQgNSAwIFIKL1Byb2NTZXRbL1BERi9UZXh0XQo+PgplbmRvYmoKCjEg MCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCA0IDAgUi9SZXNvdXJjZXMgNiAwIFIvTWVkaWFCb3hb MCAwIDU5NSA4NDJdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kgdHJ1ZT4+ L0NvbnRlbnRzIDIgMCBSPj4KZW5kb2JqCgo0IDAgb2JqCjw8L1R5cGUvUGFnZXMKL1Jlc291cmNl cyA2IDAgUgovTWVkaWFCb3hbIDAgMCA1OTUgODQyIF0KL0tpZHNbIDEgMCBSIF0KL0NvdW50IDE+ PgplbmRvYmoKCjcgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL1BhZ2VzIDQgMCBSCi9PcGVuQWN0aW9u WzEgMCBSIC9YWVogbnVsbCBudWxsIDBdCi9MYW5nKGZyLUZSKQo+PgplbmRvYmoKCjggMCBvYmoK PDwvQ3JlYXRvcjxGRUZGMDA1NzAwNzIwMDY5MDA3NDAwNjUwMDcyPgovUHJvZHVjZXI8RkVGRjAw NEMwMDY5MDA2MjAwNzIwMDY1MDA0RjAwNjYwMDY2MDA2OTAwNjMwMDY1MDAyMDAwMzMwMDJFMDAz NT4KL0NyZWF0aW9uRGF0ZShEOjIwMTIxMTAzMTQ0NzEwKzAxJzAwJyk+PgplbmRvYmoKCnhyZWYK MCA5CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDIyNiAwMDAwMCBuIAowMDAwMDAwMDE5IDAw MDAwIG4gCjAwMDAwMDAxMzIgMDAwMDAgbiAKMDAwMDAwMDM2OCAwMDAwMCBuIAowMDAwMDAwMTUx IDAwMDAwIG4gCjAwMDAwMDAxNzMgMDAwMDAgbiAKMDAwMDAwMDQ2NiAwMDAwMCBuIAowMDAwMDAw NTYyIDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA5L1Jvb3QgNyAwIFIKL0luZm8gOCAwIFIKL0lE IFsgPEYyMjBCNDlBNjRDOEEzRDY3QUFBQzNCODAwNkI5RkRDPgo8RjIyMEI0OUE2NEM4QTNENjdB QUFDM0I4MDA2QjlGREM+IF0KL0RvY0NoZWNrc3VtIC83NzUwQTAyMEVFNEUwQkU5NjVGMzBDNTND MkRGNUFGNgo+PgpzdGFydHhyZWYKNzM2CiUlRU9GCg==''' writer = PdfFileWriter() blank_page = PdfFileReader( StringIO.StringIO(blankpdfstr.decode("base64"))).pages[0] streams = [ ] # We have to close the streams *after* PdfFilWriter's call to write() for document in documents: pdfreport = file(document, 'rb') streams.append(pdfreport) reader = PdfFileReader(pdfreport) for page in range(0, reader.getNumPages()): writer.addPage(reader.getPage(page)) if reader.getNumPages() % 2 and both_sides: writer.addPage(blank_page) merged_file_fd, merged_file_path = tempfile.mkstemp( suffix='.html', prefix='report.merged.tmp.') with closing(os.fdopen(merged_file_fd, 'w')) as merged_file: writer.write(merged_file) for stream in streams: stream.close() return merged_file_path
def create(self): """ Create PDF """ print "[+] The password is " + self.password writer = PdfFileWriter() input_pdf = PdfFileReader(file(self.filename, "rb")) for page in range(0, input_pdf.getNumPages()): writer.addPage(input_pdf.getPage(page)) output_stream = file(self.outputname, "wb") writer.encrypt(self.password, use_128bit=True) #max security by lib writer.write(output_stream) output_stream.close() print "[+] Done"
def make_book(files, oname): from pyPdf import PdfFileWriter, PdfFileReader print 'Generating PDF booklet.' output = PdfFileWriter() for x in files: print x input1 = PdfFileReader(file(x, 'rb')) output.addPage(input1.getPage(0)) outputStream = file(oname, 'wb') output.write(outputStream) outputStream.close()
def cut_pdf(ifile, ofile, leftsize, rightsize): pdf = PdfFileReader(file(ifile, 'rb')) out = PdfFileWriter() for page in pdf.pages: page.mediaBox.upperRight = rightsize page.mediaBox.lowerLeft = leftsize out.addPage(page) ous = file(ofile, 'wb') out.write(ous) ous.close()
def write_pdf(pdf, name, suffix, start, end, metadata=None): if metadata == None: title = _('Unknown') author = _('Unknown') else: title = metadata.title author = authors_to_string(metadata.authors) out_pdf = PdfFileWriter(title=title, author=author) for page_num in range(start, end + 1): out_pdf.addPage(pdf.getPage(page_num)) with open('%s%s.pdf' % (name, suffix), 'wb') as out_file: out_pdf.write(out_file)
def merge_pdf(url_list): # Download each PDF and merge them into one giant PDF, post this giant PDF to anonfiles.com, add URL to scraperwiki database output = PdfFileWriter() for url in url_list: if url[0] == "http://www.cota.com/assets/Riding-Cota/Schedules/Current/083.pdf": url[0] = "http://www.cota.com/assets/Riding-Cota/Schedules/Current/83.pdf" url[1] = "83.pdf" if url[0] == "http://www.cota.com/assets/Riding-Cota/Schedules/Current/039.pdf": url[0] = "http://www.cota.com/assets/Riding-Cota/Schedules/Current/39.pdf" url[1] = "39.pdf" if url[0] == "http://www.cota.com/assets/Riding-Cota/Schedules/Current/021.pdf": url[0] = "http://www.cota.com/assets/Riding-Cota/Schedules/Current/21.pdf" url[1] = "21.pdf" if url[0] == "http://www.cota.com/assets/Riding-Cota/Schedules/Current/016S.pdf": url[0] = "http://www.cota.com/assets/Riding-Cota/Schedules/Current/16S.pdf" url[1] = "16S.pdf" if url[0] == "http://www.cota.com/assets/Riding-Cota/Schedules/Current/015.pdf": url[0] = "http://www.cota.com/assets/Riding-Cota/Schedules/Current/15.pdf" url[1] = "15.pdf" pdf_file = os.system("wget %s" % url[0]) input1 = PdfFileReader(file('/tmp/%s' % url[1], "rb")) numPages = input1.getNumPages() print "number of pages = %s" % (numPages) page1 = input1.getPage(0) page2 = input1.getPage(1) output.addPage(page1) output.addPage(page2) if numPages == 3: page3 = input1.getPage(2) output.addPage(page3) final_page_count = output.getNumPages() print "Number of Pages in Final = %s" % (final_page_count) outputStream = file("/tmp/bus.pdf", "wb") output.write(outputStream) outputStream.close() reply = os.system('curl -kF "[email protected];filename=bus.pdf" https://anonfiles.com/api/hotlink -o "reply.txt"') with open('reply.txt', 'r') as f: read_data = f.read() data_dict = { 'Title':'Link to COTA Bus Schedule', 'URL':read_data, } scraperwiki.sqlite.save(unique_keys=['Title', 'URL'], data=data_dict)
def render_multipage(drawing, opts, outbuf=None): if opts.pagesize in name2size: pagesize = name2size[opts.pagesize] else: pagesize = opts.pagesize or letter border = opts.border or 1 * cm landscape = opts.landscape or False pgwidth, pgheight = pagesize if not landscape \ else (pagesize[1], pagesize[0]) #print "drawing width, height:", drawing.width/inch, drawing.height/inch if drawing.width > pgwidth - 2 * border: scalefact = (pgwidth - 2 * border) / float(drawing.width) drawing.scale(scalefact, scalefact) else: scalefact = 1.0 #border *= scalefact dwidth = drawing.width * scalefact dheight = drawing.height * scalefact output = PdfFileWriter() if not outbuf: outfile = file(opts.outfile, "wb") else: outfile = outbuf buf = StringIO() renderPDF.drawToFile(drawing, buf) lower = dheight pgnum = 0 while lower >= 0: if pgnum == 0: delta = 0.0 else: delta = 2 * border * pgnum buf.seek(0) tmp = PdfFileReader(buf) page = tmp.getPage(0) box = page.mediaBox uly = float(box.getUpperLeft_y()) * scalefact upper = uly + border + delta - pgnum * pgheight #lower = uly+border+delta-(pgnum+1)*pgheight lower = upper - pgheight box.setUpperRight((pgwidth - border, upper)) box.setUpperLeft((-border, upper)) box.setLowerRight((pgwidth - border, lower)) box.setLowerLeft((-border, lower)) output.addPage(page) pgnum += 1 output.write(outfile) return pgnum, scalefact
def ayir(dosya_yolu , sayfa1): """pdf dosyasının başından sayfa1'e, sayfa1'den sonuna kadar iki tabe pdf dosyası oluşturur """ try: kaynak = PdfFileReader(open(dosya_yolu, "rb")) islem0 = PdfFileWriter() islem1 = PdfFileWriter() hedef0 = open("data0.pdf", "wb") hedef1 = open("data1.pdf", "wb") if sayfa1<0: sayfa1 *=(-1) for i in range(int(sayfa1)): islem0.addPage(kaynak.getPage(i)) for i in range(int(sayfa1),kaynak.getNumPages()): islem1.addPage(kaynak.getPage(i)) islem0.write(hedef0) islem1.write(hedef1) hedef0.close() hedef1.close() print "»» pdf oluşturuldu" except: print "»» pdf oluşturulamadı"
def generate_inspection_report(request, lot_number): report = Report.objects.get(lot_number=lot_number) outputPDF = PdfFileWriter() packet = StringIO() # create a new PDF with Reportlab p = canvas.Canvas(packet, pagesize=letter) p.drawString(25 * mm, 212 * mm, report.origin_po) if report.origin_wo: p.drawString(45 * mm, 210 * mm, "WO# %s" % report.origin_wo) p.drawCentredString(95 * mm, 212 * mm, str(report.created_at.date())) p.drawCentredString(165 * mm, 216 * mm, report.vendor.name) p.setFont("Helvetica", 9) if report.heat_number: p.drawString(155 * mm, 207 * mm, "HEAT # %s" % report.heat_number) if report.mfg_lot_number: p.drawString(155 * mm, 205 * mm, "MFG Lot # %s" % report.mfg_lot_number) p.drawString( 155 * mm, 203 * mm, "%s Lot # %s" % (settings.PDF_COMPANY_SHORT_NAME, report.lot_number)) p.setFont("Helvetica", 9) if report.raw_material is False: p.drawCentredString(43 * mm, 95 * mm, report.part_number.part_number) else: p.drawCentredString(43 * mm, 176 * mm, report.part_number.part_number) p.drawCentredString(45 * mm, 170 * mm, str(report.part_number.specification)) p.save() #move to the beginning of the StringIO buffer packet.seek(0) new_pdf = PdfFileReader(packet) # read your existing PDF existing_pdf = PdfFileReader( file(settings.PDF_INSPECTION_REPORT_TEMPLATE, "rb")) # add the "watermark" (which is the new pdf) on the existing page page = existing_pdf.getPage(0) page.mergePage(new_pdf.getPage(0)) outputPDF.addPage(page) # finally, write "output" to a real file action.send(request.user, verb="generated an inspection report", target=report) return outputPDF