def base(context, pdf_file, funcionario=False): output = PdfFileWriter() input = PdfFileReader(file(os.path.join(settings.PDF_ROOT, pdf_file), 'rb')) pagina_numero = 0 # create response object response = HttpResponse(content_type='application/pdf') if funcionario: response['Content-Disposition'] = 'attachment; filename=expediente_natural.pdf' else: response['Content-Disposition'] = 'attachment; filename=registro_natural.pdf' # get number of pages num_pages = input.getNumPages() if not funcionario: # fill first page buffer = StringIO() # create string buffer for PDF pdf = canvas.Canvas(buffer, pagesize=letter) pdf.drawString(450, 659, date.today().strftime("%d/%m/%Y")) pdf.drawString(41, 559, u'{nombres} {apellidos}'.format(nombres=unicode(context['pst'].nombres), apellidos=unicode(context['pst'].apellidos))) pdf.drawString(41, 525, u'{rif} / {ci}'.format(rif=unicode(context['pst'].rif), ci=unicode(context['pst'].cedula))) pdf.save() # put on watermark from buffer watermark = PdfFileReader(buffer) page1 = input.getPage(0) page1.mergePage(watermark.getPage(0)) buffer.seek(0) # add processed pdf page output.addPage(page1) # paginas Copia de la Cedula de Identidad output, pagina_numero = pager(output, input.getPage(1), pagina_numero) try: ci = PdfFileReader(file(os.path.join(settings.MEDIA_ROOT, unicode(context['pst'].archivo_cedula)), 'rb')) output, pagina_numero = pager(output, ci.getPage(0), pagina_numero) except: output, pagina_numero = pager(output, input.getPage(2), pagina_numero) # paginas RIF output, pagina_numero = pager(output, input.getPage(3), pagina_numero) try: rif = PdfFileReader(file(os.path.join(settings.MEDIA_ROOT, unicode(context['pst'].archivo_rif)), 'rb')) output, pagina_numero = pager(output, rif.getPage(0), pagina_numero) except: output, pagina_numero = pager(output, input.getPage(4), pagina_numero) # paginas Recibo de Servicio output, pagina_numero = pager(output, input.getPage(5), pagina_numero) servicio_file_format = unicode(context['pst'].archivo_servicio).split('.')[-1] try: if servicio_file_format in ['pdf', 'PDF']: servicio = PdfFileReader( file(os.path.join(settings.MEDIA_ROOT, unicode(context['pst'].archivo_servicio)), 'rb')) output, pagina_numero = pager(output, servicio.getPage(0), pagina_numero) else: buffer2 = StringIO() servicio = canvas.Canvas(buffer2, pagesize=letter) w = 500 h = 700 servicio.drawImage(os.path.join(settings.MEDIA_ROOT, unicode(context['pst'].archivo_servicio)), letter[0] / 2 - w / 2, letter[1] / 2 - h / 2, width=w, height=h, mask='auto') servicio.save() watermark = PdfFileReader(buffer2) page6 = input.getPage(6) page6.mergePage(watermark.getPage(0)) output, pagina_numero = pager(output, page6, pagina_numero) buffer2.seek(0) except: output, pagina_numero = pager(output, input.getPage(6), pagina_numero) # paginas Foto tipo Carnet output, pagina_numero = pager(output, input.getPage(7), pagina_numero) buffer3 = StringIO() foto = canvas.Canvas(buffer3, pagesize=letter) w = 120 h = 160 foto.drawImage(os.path.join(settings.MEDIA_ROOT, unicode(context['pst'].archivo_pasaporte)), letter[0] / 2 - w / 2, letter[1] / 2 - h / 2, width=w, height=h, mask='auto') foto.save() watermark = PdfFileReader(buffer3) page8 = input.getPage(8) page8.mergePage(watermark.getPage(0)) output, pagina_numero = pager(output, page8, pagina_numero) return response, input, output, pagina_numero