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
Esempio n. 2
0
    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
Esempio n. 3
0
 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
Esempio n. 4
0
    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})
Esempio n. 5
0
    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')
Esempio n. 6
0
def extractTextFromPdfStream(stream):
    reader = PdfFileReader(stream)
    return '\n'.join(
        reader.getPage(i).extractText() for i in range(reader.getNumPages()))
Esempio n. 7
0
def readTheFile(fName):
    return PdfFileReader(file(fName, "rb"))
Esempio n. 8
0
from pyPdf.pdf import PdfFileWriter, PdfFileReader
from



if __name__ == '__main__':

    output = PdfFileWriter()
    input1 = PdfFileReader('D:\Anaconda\workspace\\vtk_bucket\\1.pdf')
    print('ok')