2016-05-12 11 views
-1

作成したプログラムのテキストファイルではなく、PDFファイルを生成しようとしています。PythonでのPDF生成

私の問題は、私が必要としているものすべてが本質的にテキストファイルの代わりにPDFにprintすることですので、私はreportlabを見てきました。

現在のテストコード、それは動作しますが、私はポジショニングについて困惑していると、すべての行がページの最後の実行、誰かが位置決めがあるReportLabの

from reportlab.pdfgen import canvas 
def genText(): 
    text =["Call me Ishmael.", 
     "Some years ago- never mind how long precisely- having little or no money in my purse,", 
     "and nothing particular to interest me on shore,", 
     "I thought I would sail about a little and see the watery part of the world."] 
    return text 

def testText(page,text): 

    from reportlab.lib.units import inch 

    textobject = page.beginText() 
    textobject.setTextOrigin(inch, 2.5*inch) 
    textobject.setFont("Helvetica-Oblique", 14) 
    for line in text: 
     textobject.textLine(line) 

    page.drawText(textobject)  

page = canvas.Canvas("JIMTEST.pdf") 
text = genText() 
testText(page, text) 
page.showPage() 
page.save() 

データをどのように動作するかで私に助言してください可能性があり実際に私のプログラムによって出力:私はあなたがReportLabののカモノハシの一部を見てsugggest

--------------------------------------------------------- 
Milk Company: Bobbys Milk 
Haulier: Jims Hauliers 
Truck: T55JHH 

Driver: 123  Route: 852 
    Joe Bloggs 

Everyday Collection 

MilkType: Ordinary 

--------------------------------------------------------- 
Last TankWash 

Start Time: 2016/03/31 13:30:32 
Finsished: 14:21:03 
Litres: 9451 
Temperature: 70.0 deg_C 

    770500 CREAMERY 

--------------------------------------------------------- 
Locn     Litres 

    770083 Wyrill 
Coll  1643 2.0 deg_C smp 143 
2016/04/01 06:40:28 

    770084 Foster 
Coll  2242 1.0 deg_C smp 28 
2016/04/01 07:17:57 

    770080 Dugdale 
Coll  8237 4.0 deg_C smp 49 
2016/04/01 08:02:39 

    770086 Cragg 
Coll  4591 1.7 deg_C smp 68 
2016/04/01 09:00:17 

    770051 D & S Spence 
Coll  2868 3.7 deg_C smp 83 
2016/04/01 10:06:11 

    770500 CREAMERY 
delyFZ -19581 
Tank#  0 Ower# 3805 
2016/04/01 11:14:11 


--------------------------------------------------------- 
Milk Collected: 19581 
Milk OnBoard: 0 
--------------------------------------------------------- 
Estimated Print Time at: 2016/04/01 11:14:16 

おかげ

+0

ここでの質問は何ですか? – Selcuk

+0

@Selcuk申し訳ありませんが、私は、レポートラボでのポジショニングの仕組みと、ページがオフラインで実行されるかどうかを検出する方法についてのヘルプが必要です。 – Jim

+1

Google reportlabでのポジショニングの使い方については、https://dzone.com/articles/reportlab-mix-fixed-content – Eliethesaiyan

答えて

1

パラグラフは、HTMLのDIVコンテナとほとんど同じように動作し、ドキュメントの最後にテキストを自動的に折り返します。クーゼの

from reportlab.lib.pagesizes import A4 
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer 
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle 

def genText(): 
    text = ["Call me Ishmael.", 
     "Some years ago- never mind how long precisely- having little or no money in my purse,", 
     "and nothing particular to interest me on shore,", 
     "I thought I would sail about a little and see the watery part of the world."] 
    return text 

styles = getSampleStyleSheet() 
doc = SimpleDocTemplate("my_doc.pdf", pagesize=A4) 
Story=[] 
text = genText() 
for t in text: 
    Story.append(Paragraph(t, styles["Normal"])) 
Story.append(Spacer(10, 10)) 
t = "lorem ipsum " * 100 
Story.append(Paragraph(t, styles["Normal"])) 
doc.build(Story) 

あなたはまた、キャンバスやカモノハシを混在させることができます - これはあなたが軌道に乗るためだけに最小限の例です。

要素を配置するには、プラチナスTableを見ることをお勧めします。