【问题标题】:Better way to generate PDF from python3从 python3 生成 PDF 的更好方法
【发布时间】:2012-08-03 15:17:13
【问题描述】:

我的应用程序正在使用 PyQt4 和 Python3(我不知道如何将其反向移植到 python2.7)。我需要导出 PDF 并打印到纸上。由于 ReportLab 和 POD 都支持 python3,因此我对报告工具的搜索无处可去。不知何故,我设法用这种……麻烦的方式创建了 PDF 文件。

tekstStampa = (str("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%sIme stranke:     %s%sBroj predmeta: %s%sSudski broj:      %s%s%sPredmet otvoren: %s%sDatum rasprave:  %s u %s sati%s%sStatus stranke:    %s%sStatus predmeta: %s%sTip postupka:       %s%sVrednost spora:   %s dinara.%s%sSud:                      %s%sSudska jedinica:   %s%sSudija:                  %s%s%sNapomena: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s" %
            (zaglavlje1,'<br>',zaglavlje2,'<br>',zaglavlje3,'<br>',zaglavlje4,'<br>','<br>',
            linija,'<br>','<br>','<br>',prazno50,zaglavlje5,brPredmeta,'<br>',prazno51,'<font size="1">datum štampanja: ',datumStampe,'</font><br>','<br>',
            tempime, '<br>',brPredmeta,'<br>', tempsudskibr,'<br>','<br>',
            tempdatumtuzba, '<br>', tempdatumRas,tempvreme,'<br>','<br>',
            tempstatusstr,'<br>',tempstatusPredmeta,'<br>',temptip,'<br>',tempvrednost,'<br>','<br>',
            tempsud,'<br>',tempsudska,'<br>',tempsudija,'<br>','<br>',
            '<br>',tempnapomena,'<br>','<br>',
            linija, '<br>', '<br>',futer1,'<br>',
            futer2,'<br>',
            futer3,'<br>',
            futer4,'<br>',
            futer5,'<br>',)))

            self.ui.textStampa.setHtml(str(tekstStampa).replace('\\n','\r'))

如您所见,它非常混乱,但输出看起来可以接受。不太好,只能接受。 Example

现在,我需要生成一些东西like this。列应放置在固定位置,列宽是预先确定的。行是从列表中生成的,列表是从数据库中查询的。查询很好,我可以得到数据,但是页面格式正在杀死我。

我曾尝试使用 HTML 标签(即预格式化文本的 PRE,但它看起来很难看)但我无法完成我想要的。

提前谢谢你。

【问题讨论】:

  • 好的,我发现了一些有用的东西;可以(呃!)编写纯 HTML 并像这样格式化它。好的! stackoverflow.com/questions/9263556/…
  • 这个解决了。使用 HTML 语法,将其放入 QTextEdit,然后打印它是要走的路。
  • 几个小时后,SO应该让您自己发布答案并接受它。

标签: pdf python-3.x pyqt reporting


【解决方案1】:
for tuple in sviaktivni: # extract variables from list of tuples
            tempid,ime,brPredmeta,statusStr,sudskiBr ,sudija ,datumRasprave, vreme, zaduzen,datumZaduzenja = tuple
            brojac +=1
            tekst = ('<html><head><title></title>' #variable which contains HTML tables
                        '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>'
                        '<style></style>'
                        '</head>'
                        '<body>'
                            '<table align ="center" border="0" width="100%" style="table-layout:fixed">'
                                '<tr height="10%">'
                                        '<td  align="left" width="3%">'+str(brojac)+' </td>'
                                        '<td  align="left" width="15%">'+ime+' </td>'
                                        '<td  align="left" width="10%"> '+brPredmeta+' </td>'
                                        '<td  align="left" width="10%"> '+statusStr+' </td>'
                                        '<td  align="left" width="10%"> '+sudskiBr+' </td>'
                                        '<td  align="left" width="18%"> '+sudija+' </td>'
                                        '<td  align="left" width="15%"> '+zaduzen+' </td>'
                                        '<td  align="left"> '+datumZaduzenja+' </td>'
                                    '</tr>'
                            '</table>'
                        '</body>'
                    '</html>')

            self.ui.textStampa.append(tekst) #append with every iteration 

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 2014-04-15
    • 2012-07-10
    相关资源
    最近更新 更多