Ejemplo n.º 1
0
def createpdf_pisa(pagename):
    "creates a pdf file from a saved page using pisa (python module)"
    import ho.pisa as pisa
    if (not exists(pagename + ".pdf", image=True)) or OVERWRTIE:
        infile = open(FOLDER + os.sep + pagename + '.html', 'ro')
        outfile = open(FOLDER + os.sep + pagename + '.pdf', 'wb')
        if VERBOSE: print("Converting " + pagename + " to pdf...")
        pdf = pisa.CreatePDF(infile,
                             outfile,
                             FOLDER,
                             link_callback=fetch_resources)
        outfile.close()
        if pdf.err:
            return pdf.err
        return 0
Ejemplo n.º 2
0
def render_to_pdf(template_src, context_dict):
    template = loader.get_template(template_src)
    context = Context(context_dict)
    html = template.render(context)
    result = StringIO.StringIO()
    MEDIA_URL = getattr(settings, 'MEDIA_ROOT')
    css = open(cur_dir + '/css/pisa.css').read()
    pdf = pisa.CreatePDF(StringIO.StringIO(html.encode("ISO-8859-1")),
                         result,
                         default_css=css)
    if not pdf.err:
        response = HttpResponse(result.getvalue(), mimetype='application/pdf')
        response['Content-Disposition'] = 'filename=boletim.pdf'
        return response
    return http.HttpResponse('We had some errors<pre>%s</pre>' %
                             cgi.escape(html))
Ejemplo n.º 3
0
def HTML2PDF(data, filename, open=False):

    """
    Simple test showing how to create a PDF file from
    PML Source String. Also shows errors and tries to start
    the resulting PDF
    """

    pdf = pisa.CreatePDF(
        cStringIO.StringIO(data),
        file(filename, "wb"))

    if open and (not pdf.err):
        pisa.startViewer(filename)

    return not pdf.err
Ejemplo n.º 4
0
def helloWorld():
    filename = __file__ + ".pdf"

    lc = myLinkLoader(database="some_name", port=666).getFileName

    pdf = pisa.CreatePDF(
        u"""
            <p>
            Hello <strong>World</strong>
            <p>
            <img src="apath/some.png">
        """,
        file(filename, "wb"),
        link_callback = lc,
        )
    if not pdf.err:
        pisa.startViewer(filename)
Ejemplo n.º 5
0
def report_regiao(request, regiao='NE'):

    if request.POST:
        if 'regiao' in request.POST:
            regiao = request.POST['regiao']

    REGIAO_CHOICES = dict(UnidadeFederativa.REGIAO_CHOICES)

    projetos = Projeto.objects.all()

    camaras = CasaLegislativa.objects.filter(tipo__sigla='CM')

    tabelas = list()
    # Geral
    convenios = Convenio.objects.filter(casa_legislativa__tipo__sigla='CM')
    tabela = casas_estado_to_tabela(camaras, convenios, regiao)
    tabela["projeto"] = _(u"Geral")

    tabelas.append(tabela)

    for projeto in projetos:
        convenios_proj = convenios.filter(projeto=projeto)
        tabela = casas_estado_to_tabela(camaras, convenios_proj, regiao)
        tabela["projeto"] = projeto.nome
        tabelas.append(tabela)

    data = datetime.datetime.now().strftime('%d/%m/%Y')
    hora = datetime.datetime.now().strftime('%H:%M')
    pisa.showLogging()
    response = HttpResponse(content_type='application/pdf')
    response[
        'Content-Disposition'] = 'attachment; filename=RelatorioRegiao_' + regiao + '.pdf'
    #tabelas = ({'projeto':"PI"},{'projeto':"PML"},)
    t = loader.get_template('convenios/tabela_regiao.html')
    c = Context({
        'tabelas': tabelas,
        'regiao': REGIAO_CHOICES[regiao],
        'data': data,
        'hora': hora
    })
    pdf = pisa.CreatePDF(t.render(c), response)
    if not pdf.err:
        pisa.startViewer(response)

    return response
Ejemplo n.º 6
0
def testSimple(
    data="""Hello <b>World</b><br/><img src="img/test.jpg"/>""",
    dest="test.pdf"):

    """
    Simple test showing how to create a PDF file from
    PML Source String. Also shows errors and tries to start
    the resulting PDF
    """

    pdf = pisa.CreatePDF(
        cStringIO.StringIO(data),
        file(dest, "wb")
        )

    if pdf.err:
        dumpErrors(pdf)
    else:
        pisa.startViewer(dest)
Ejemplo n.º 7
0
def testBackgroundAndImage(
    src="test-background.html",
    dest="test-background.pdf"):

    """
    Simple test showing how to create a PDF file from
    PML Source String. Also shows errors and tries to start
    the resulting PDF
    """

    pdf = pisa.CreatePDF(
        file(src, "r"),
        file(dest, "wb"),
        log_warn = 1,
        log_err = 1,
        path = os.path.join(os.getcwd(), src)
        )

    dumpErrors(pdf)
    if not pdf.err:
        pisa.startViewer(dest)
Ejemplo n.º 8
0
def testCGI(data="Hello <b>World</b>"):

    """
    This one shows, how to get the resulting PDF as a
    file object and then send it to STDOUT
    """

    result = cStringIO.StringIO()

    pdf = pisa.CreatePDF(
        cStringIO.StringIO(data),
        result
        )

    if pdf.err:
        print "Content-Type: text/plain"
        print
        dumpErrors(pdf)
    else:
        print "Content-Type: application/octet-stream"
        print
        sys.stdout.write(result.getvalue())
Ejemplo n.º 9
0
    def __call__(self):
        response = self.request.response
        title = self.context.Title()
        ftitle = "/tmp/%s_CV.pdf" % (title)
        filename = ftitle

        attachment = 'attachment; filename=%s' % (ftitle)
        f = file(filename, "wb")
        pdf_template = ViewPageTemplateFile('templates/pdf-view.pt')(self)

        response.setHeader('Content-Type', 'application/pdf')
        response.setHeader('Content-Disposition', attachment)
        pdf = pisa.CreatePDF(pdf_template.encode("UTF-8"), response)
        f.flush()
        f.close()

        if not pdf.err:
            return response
        else:
            # Something is wrong
            # Fledge this out later
            pass
 def filter(self, 
         script_name, 
         path_info, 
         environ,
         status, 
         headers, 
         body): 
     topdf = environ.get("pisa.topdf", "")        
     if topdf:            
         dst = StringIO.StringIO()
         result = pisa.CreatePDF(
             body,
             dst,
             show_error_as_pdf=True,
             )
         headers = [
             ("content-type", "application/pdf"),
             ("content-disposition", "attachment; filename=" + topdf)
             ] 
         body = dst.getvalue()              
     return status, headers, body
     
Ejemplo n.º 11
0
def createPDF(inputFile):
    input = open(inputFile).read()
    output = file(pdf, "wb")
    pisa.showLogging()
    pisa.CreatePDF(input, output)
    output.close()
Ejemplo n.º 12
0
#!/usr/bin/python

import sys
import re
import glob
import os
import shutil
import MySQLdb
import ho.pisa as pisa

pisa.CreatePDF("pdf_test.htm", "pdf_test.pdf")
Ejemplo n.º 13
0
	def render_to_pdf(self, html):
		pdf = StringIO.StringIO()
		pisa.CreatePDF(html, pdf, encoding='utf-8')
		pdf.seek(0)
		return pdf
Ejemplo n.º 14
0
 def geraPDF(self, nome, texto):
     arq = open('/var/lib/netcontrol/plugins/sarg/files/%s.pdf' % (nome),
                'wb')
     pdf = pisa.CreatePDF(texto, arq)
     arq.close()
Ejemplo n.º 15
0
def create(data, filename):
    f = file(filename, 'wb')
    pdf = pisa.CreatePDF(data, f)
    f.close()
    if not pdf.err:                             
        pisa.startViewer(filename)                
Ejemplo n.º 16
0
def helloWorld():
    filename = __file__ + ".pdf"
    pdf = pisa.CreatePDF(u"Hello <strong>World</strong>", file(filename, "wb"))
    if not pdf.err:
        pisa.startViewer(filename)
Ejemplo n.º 17
0
def report(request, report_id, template_name="report/report.html"):
    if request.user.is_staff:
        rtype = get_object_or_404(ReportType, id=report_id)
        if not request.user.is_superuser:
            if rtype.permissao.count() and not len([val for val in  rtype.permissao.all() if val in request.user.groups.all()]):
                raise Http404
        rtadmin = admin.site._registry[rtype.modelo.model_class()]

        campos_dinamicos = {}
        for filtro in rtadmin.list_filter:
            if type(filtro) == type(()):
                filtro = filtro[0]
            if "__" in filtro:
                filtro = filtro[:filtro.index("__")]
            field = get_field(rtype.modelo.model_class(), filtro)
            
            if type(field) == models.BooleanField:
                choices = (('1', _(u'Sim')), ('0', _(u'Não')), ('', _(u'Todos')))
                campos_dinamicos[filtro] = forms.ChoiceField(required=False, choices=choices, label=_(field.verbose_name), widget=forms.RadioSelect())

            elif type(field) == models.CharField:
                if field.choices:
                    choices = field.choices
                    campos_dinamicos[filtro] = forms.MultipleChoiceField(required=False, choices=choices, label=_(field.verbose_name), widget=forms.CheckboxSelectMultiple())
                else:
                    choices = set()
                    for obj in rtype.modelo.model_class().objects.all():
                        choices.add((get_value(obj, filtro), get_value(obj, filtro)))
                    choices = list(choices)
                    campos_dinamicos[filtro] = forms.MultipleChoiceField(required=False, choices=choices, label=_(field.verbose_name), widget=forms.SelectMultiple())

            elif type(field) == models.DateField or type(field) == models.DateTimeField:
                choices = (('q', _(u'Qualquer data')), ('h', _(u'Hoje')), ('m', _(u'Este mês')), ('a', _(u'Este ano')))
                campos_dinamicos[filtro] = forms.ChoiceField(required=False, choices=choices, initial='q', label=_(field.verbose_name), widget=forms.RadioSelect())

            elif type(field) == models.ForeignKey or type(field) == models.OneToOneField:
                queryset = rtype.modelo.model_class()._meta.get_field(filtro).rel.to.objects.all()
                campos_dinamicos[filtro] = forms.ModelMultipleChoiceField(required=False, queryset=queryset, label=_(field.verbose_name), widget=forms.SelectMultiple())
            else:
                choices = set()
                for obj in rtype.modelo.model_class().objects.all():
                    choices.add((get_value(obj, filtro), get_value(obj, filtro)))
                choices = list(choices)
                campos_dinamicos[filtro] = forms.MultipleChoiceField(required=False, choices=choices, label=_(field.verbose_name), widget=forms.SelectMultiple())

        FilterForm = type('', (forms.Form,), campos_dinamicos)

        if request.method == "POST":

            response = HttpResponse(content_type='application/pdf')
            response['Content-Disposition'] = 'attachment; filename=%s.pdf' % smart_str(rtype.titulo).replace(" ", "_")
            queryset = rtype.modelo.model_class().objects.all()

            for field_name in rtadmin.list_filter:
                field = get_field(rtype.modelo.model_class(), field_name)

                sql = {}
                if type(field) == models.DateField or type(field) == models.DateTimeField:
                    try:
                        value = request.POST[field_name]
                        if value == 'q': pass
                        elif value == 'h': sql["%s__day" % field_name] = datetime.now().day
                        elif value == 'm': sql["%s__month" % field_name] = datetime.now().month
                        elif value == 'a': sql["%s__year" % field_name] = datetime.now().year
                    except: pass
                elif type(field) == models.BooleanField:
                    try:
                        value = request.POST[field_name]
                        sql["%s" % field_name] = value
                    except: pass
                else:
                    try:
                        value = request.POST.getlist(field_name)
                        if len(value) == 0: continue
                        sql["%s__in" % field_name] = value
                    except: pass

                query = models.Q(**sql)
                queryset = queryset.filter(query)

            campos = rtype.campos.replace('[', '').replace(']', '').replace('u\'', '').replace('\'', '').replace(',', '').split(' ')
            list_report = []
            for c in campos:
               list_report.append(rtadmin.list_report[get_key(c)])
            try:
                model = str(queryset.model)
            except:
                model = str(queryset)
            if "PendenciaProcesso" in model:
                html = html_report_pendencias(smart_str(rtype.cabecalho), list_report, queryset)
            else:
                html = html_report_generic(smart_str(rtype.cabecalho), list_report, queryset)
            import logging

            class PisaNullHandler(logging.Handler):

                def emit(self, record):

                    pass
            log = logging.getLogger(__name__)
            log.addHandler(PisaNullHandler())
            pdf = pisa.CreatePDF(html, response)
            return response
        else:
            form = FilterForm()
            return render_to_response(template_name, {
                'form': form,
                'title': rtype.titulo,
                'rtype': rtype,
                'rtadmin' : rtadmin,
            }, context_instance=RequestContext(request))
    else:
        raise PermissionDenied
Ejemplo n.º 18
0
    def html_to_pdf(self,
                    req,
                    html_pages,
                    book=True,
                    title='',
                    subject='',
                    version='',
                    date=''):

        self.env.log.debug('WikiPrint => Start function html_to_pdf')

        page = Markup('\n<div><pdf:nextpage /></div>'.join(html_pages))

        #Replace PageOutline macro with Table of Contents
        if book:
            #If book, remove [[TOC]], and add at beginning
            page = page.replace('[[pdf-toc]]', '')
            page = Markup(self.get_toc()) + Markup(page)
        else:
            page = page.replace('[[pdf-toc]]', self.get_toc())

        page = self.add_headers(req,
                                page,
                                book,
                                title=title,
                                subject=subject,
                                version=version,
                                date=date)
        page = page.encode(self.default_charset, 'replace')
        css_data = self.get_css(req)

        pdf_file = StringIO.StringIO()

        auth_cookie = hex_entropy()
        loader = linkLoader(self.env, req, auth_cookie)

        #Temporary authentication
        self.env.log.debug("Storing temporary auth cookie %s for user %s",
                           auth_cookie, req.authname)
        db = self.env.get_db_cnx()
        cursor = db.cursor()
        cursor.execute(
            "INSERT INTO auth_cookie (cookie,name,ipnr,time) "
            "VALUES (%s, %s, %s, %s)",
            (auth_cookie, req.authname, '127.0.0.1', int(time.time())))
        db.commit()

        pdf = pisa.CreatePDF(page,
                             pdf_file,
                             show_errors_as_pdf=True,
                             default_css=css_data,
                             link_callback=loader.getFileName)
        out = pdf_file.getvalue()
        pdf_file.close()

        cursor.execute("DELETE FROM auth_cookie WHERE cookie=%s",
                       (auth_cookie, ))
        db.commit()

        self.env.log.debug('WikiPrint => Finish function html_to_pdf')

        return out