2013-02-28 4 views
0

Я использую библиотеку trml2pdf в Python, но даже когда я использую примеры, я получаю пустой PDF-файл. Я запускаю его следующим образом: trml2pdf.py ex5.rml> out.pdfPython - trml2pdf, генерирующий пустой PDF

Когда я открываю файл в Acrobat, он пуст/пуст. Но когда я анализирую содержимое текстового редактора, я вижу следующее.

Сгенерированный PDF:

%PDF-1.4 

%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com 

% 'BasicFonts': class PDFDictionary 

1 0 obj 

% The standard fonts dictionary 

<< /F1 2 0 R 

/F2 3 0 R 

/F3 4 0 R >> 

Пример PDF:

%PDF-1.3 
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com 
% 'BasicFonts': class PDFDictionary 
1 0 obj 
% The standard fonts dictionary 
<< /F1 2 0 R 
/F2 3 0 R 
/F3 4 0 R 
/F4 5 0 R 
/F5 6 0 R >> 

Что я делаю неправильно? Почему я получаю пустые строки на выходе?

Спасибо!

Вот основной RML, которая также возвращает пустой PDF:

<!DOCTYPE document SYSTEM "rml_1_0.dtd"> 
<document filename="example_1.pdf"> 
<stylesheet> 
</stylesheet> 
<pageDrawing> 
    <drawCentredString x="4.1in" y="5.8in"> 
     Hello World. 
</drawCentredString> 
</pageDrawing> 
</document> 
+0

Возможно, вам стоит показать нам файл rml. Вы пробовали с минимальным rml? –

+0

Да, я попробовал с минимальным rml. Я также пробовал разные. Сказав это, если синтаксический анализатор несчастлив - он терпит неудачу с сообщением (недопустимое значение тега). Таким образом, он кажется счастливым, и он создает документ. Просто он содержит эти странные разрывы строк. –

+0

Очень сложно помочь, если вы не дадите нам некоторый минимальный код rml, чтобы увидеть проблему. –

ответ

2

Я использую z3c.rml во многих веб-приложений за последние 6-8 месяцев, и никогда не сталкивались с серьезной проблемой. rml2pdf Команда из этого пакета способна генерировать PDF-файл для общего ресурса, который вы использовали.

Вам следует попробовать.

#Install z3c.rml 
[sudo] pip install z3c.rml 

# create a new rml document 
vim example.rml 

# rum rml2pdf command to convert this rml to pdf 
rml2pdf example.rml 

# You should have desired PDF file now 
+0

Так что, может быть, теперь вы ответите на этот вопрос? http://stackoverflow.com/questions/25821336/wrong-breaking-columns-in-reportlab-rml –

+1

Отлично! В вашем ответе был задан вопрос https://stackoverflow.com/questions/33951499/how-to-remove-the-default-footers-when-using-rml2pdf –

1

Я использую trml2pdf и успешно работает, здесь я отправляю мой код, так что вы можете взглянуть

from django.template.loader import get_template 
from django.template.context import Context 
import trml2pdf 
def invoicepdf(request): 
    template = get_template('invoice.rml') 
    context = Context({ 
     'name': "XXXXXXXXXX", 
     'date':_date, 
     'subtotal':1909201, 
     'total': 345789 

    }) 
    xmlstring = template.render(context) 
    pdfstr = trml2pdf.parseString(xmlstring) 
    response = HttpResponse(mimetype='application/pdf') 
    response.write(pdfstr) 
    response['Content-Disposition'] = 'attachment; filename=invoice.pdf' 
    return response 

RML Код

invoice.rml

<!-- This is very Invoice RML template for illustrative purposes. --> 
<!-- A basic RML template has three sections. The 'template'  --> 
<!-- section is where you define fixed position elements, along --> 
<!-- with 'frames' containing flowing text. The 'stylesheet' --> 
<!-- section contains re-useable text style definitions. The  --> 
<!-- 'story' section contains the text and graphics which fill --> 
<!-- up the frames defined in the template section.    --> 
<!-- For more information, please read the documentation at  --> 
<!-- http://www.reportlab.com/software/documentation/    --> 

<!DOCTYPE document SYSTEM "rml.dtd"> 
<document filename="invoice.pdf"> 
    <!-- left margin --> 
<template title="Invoices" author="Atul jain" allowSplitting="20"> 
<pageTemplate id="first"> 
    <frame id="first" x1="34.0" y1="28.0" width="530" height="786"/> 
    <pageGraphics> 
    <lines>0.3cm 27.0cm 20cm 27.0cm</lines> 
    </pageGraphics> 
</pageTemplate> 
</template> 
<story> 
<para> 
    <font color="white"> </font> 
</para> 
<para><b>Name:- {{name}} </b></para> 
<para><b>Date:- {{date}} </b></para> 
    <blockTable colWidths="385.0,60.0,85.0"> 
    <tr> 
    <td> 
     <para> 
     <font color="white"> </font> 
     </para> 
    </td> 
    <td> 
     <para>Net Total:</para> 
    </td> 
    <td> 
     <para>{{subtotal}} INR;</para> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <para> 
     <font color="white"> </font> 
     </para> 
    </td> 
    <td> 
     <para><b>Total:</b></para> 
    </td> 
    <td> 
     <para><b>{{total}} INR;</b></para> 
    </td> 
    </tr> 
</blockTable> 
</story> 
</document> 
Смежные вопросы