从python3生成PDF的更好方法

时间:2012-08-03 15:17:14

标签: pdf python-3.x pyqt reporting

我的应用程序正在使用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。色谱柱应放置在固定位置,色谱柱宽度是预先确定的。行从列表生成,从数据库查询。 Quering很好,我可以获取数据,但PAGE FORMATTING正在杀死我。

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

提前谢谢。

1 个答案:

答案 0 :(得分:0)

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