def create(self, vals): """ Create a message for sending the CommKit after be translated on the local translate plaform. """ if vals.get('direction') == "Beneficiary To Supporter": correspondence = super(Correspondence, self).create(vals) else: sponsorship = self.env['recurring.contract'].browse( vals['sponsorship_id']) original_lang = self.env['res.lang.compassion'].browse( vals.get('original_language_id')) # TODO Remove this fix when HAITI case is resolved # For now, we switch French to Creole for avoiding translation if 'HA' in sponsorship.child_id.local_id: french = self.env.ref( 'child_compassion.lang_compassion_french') creole = self.env.ref( 'child_compassion.lang_compassion_haitien_creole') if original_lang == french: vals['original_language_id'] = creole.id if original_lang.translatable and original_lang not in sponsorship\ .child_id.project_id.field_office_id.spoken_language_ids: correspondence = super( Correspondence, self.with_context(no_comm_kit=True)).create(vals) correspondence.send_local_translate() else: correspondence = super(Correspondence, self).create(vals) # Swap pages for L3 layouts as we scan in wrong order if correspondence.template_id.layout == 'CH-A-3S01-1' and \ correspondence.source != 'compassion': input_pdf = PdfFileReader( BytesIO(base64.b64decode(correspondence.letter_image))) output_pdf = PdfFileWriter() nb_pages = input_pdf.numPages if nb_pages >= 2: output_pdf.addPage(input_pdf.getPage(1)) output_pdf.addPage(input_pdf.getPage(0)) if nb_pages > 2: for i in range(2, nb_pages): output_pdf.addPage(input_pdf.getPage(i)) letter_data = BytesIO() output_pdf.write(letter_data) letter_data.seek(0) correspondence.write( {'letter_image': base64.b64encode(letter_data.read())}) return correspondence
def pair_pages(self): """ construct an empty pdf file object and append as many blank pages to the end to pair the pages. """ paired_pages = PdfFileWriter() for page in PdfFileReader(file(self.job.pdf_file, "rb")).pages: paired_pages.addPage(page) # while paired_pages.getNumPages() % 4 != 0: # paired_pages.addBlankPage() return paired_pages
def get_pdf(self, text, use_design=False): """ Given the text, produces an A4 blank PDF with the text put in the position given by the tranlsation box. :param text: Text to put inside a translation box :param use_design: Set to true to use a design in the background :return: Rendered PDF :rtype: pypdf.PdfFileReader if use_design is False or PdfFileWriter """ self.ensure_one() packet = StringIO.StringIO() can = Canvas(packet, bottomup=0) text_wrap = self._wrap_text(text, can._fontname, can._fontsize) top = self.top * inch left = self.left * inch for line in text_wrap[:self.nb_lines + 1]: can.drawString(left, top, line) top += can._leading can.save() # Move to the beginning of the StringIO buffer packet.seek(0) remaining = '' if len(text_wrap) > self.nb_lines: remaining = ' '.join(text_wrap[self.nb_lines + 1:]) out_pdf = PdfFileReader(packet) if use_design: design_pdf_path = self.env['ir.config_parameter'].get_param( 'sbc_compassion.composition_design') if design_pdf_path: design_pdf = PdfFileReader(file(design_pdf_path, 'rb')) page = design_pdf.getPage(0) page.mergePage(out_pdf.getPage(0)) page.compressContentStreams() out_pdf = PdfFileWriter() out_pdf.addPage(page) return out_pdf, remaining
def preview(self): """ Generate a picture for preview. """ pdf = self._get_pdf(self.sponsorship_ids[0], preview=True) if self.s2b_template_id.layout == 'CH-A-3S01-1': # Read page 2 in_pdf = PdfFileReader(BytesIO(pdf)) output_pdf = PdfFileWriter() out_data = BytesIO() output_pdf.addPage(in_pdf.getPage(1)) output_pdf.write(out_data) out_data.seek(0) pdf = out_data.read() with Image(blob=pdf) as pdf_image: preview = base64.b64encode(pdf_image.make_blob(format='jpeg')) return self.write({'state': 'preview', 'preview_image': preview})
for col in range(ncols): for row in range(nrows - 1, -1, -1): newpage = copy_page(page) bbox = (col * xspace + x0, row * yspace + y0, col * xspace + x0 + width, row * yspace + y0 + height) newpage.cropBox = newpage.artBox = newpage.trimBox = newpage.mediaBox = RectangleObject( bbox) outpdf.addPage(newpage) bboxes.append(bbox) return bboxes if __name__ == '__main__': import sys try: inpdf = PdfFileReader(open(sys.argv[1], 'rb')) ncols = int(sys.argv[2]) nrows = int(sys.argv[3]) except (IndexError, IOError): print "Usage: %s file.pdf ncols nrows [overlap [crop]]" % sys.argv[0] raise SystemExit overlap = map(float, sys.argv[4:6]) if not overlap: overlap = 0.05 crop = map(float, sys.argv[6:10]) if not crop: crop = 0 outpdf, _ = dice(inpdf, ncols, nrows, crop, overlap) write_pdf(outpdf, 'pdfdice.pdf')
def extractTextFromPdfStream(stream): reader = PdfFileReader(stream) return '\n'.join( reader.getPage(i).extractText() for i in range(reader.getNumPages()))
def readTheFile(fName): return PdfFileReader(file(fName, "rb"))
from pyPdf.pdf import PdfFileWriter, PdfFileReader from if __name__ == '__main__': output = PdfFileWriter() input1 = PdfFileReader('D:\Anaconda\workspace\\vtk_bucket\\1.pdf') print('ok')