2012-01-09 39 views
4

我正在尋找一個python庫,我可以使用它繪製簡單的形狀和字符,然後保存到文件中(格式可轉換爲pdf)。我寧願如果我不需要運行X服務器。繪製簡單的形狀並保存到文件(pdf)

E.g.可能看起來像這樣

import drawing_lib 
obj = drawing_lib.Object() 
for i in range(5): 
    obj.draw_line(from=(i*10, 20), to=(i*10+10, 35)) 
obj.save_pdf('five_inclined_lines.pdf') 

任何想法?

回答

6

你可以用開羅做到這一點。

import math,cairo 

width, height = 768,768 
surface = cairo.PDFSurface ("circle.pdf", width, height) 
ctx = cairo.Context (surface) 
ctx.set_source_rgb(1,1,1) 
ctx.rectangle(0,0,width,height) 
ctx.fill() 
ctx.set_source_rgb(1,0,0) 
ctx.move_to(width/2,height/2) 
ctx.arc(width/2,height/2,512*0.25,0,math.pi*2) 
ctx.fill() 
ctx.show_page() 

參見:

+0

我是一個理想的情況,我想先寫繪圖命令,然後設置寬度和高度以適合所有內容(無邊框說),而不必事先設置固定的寬度和高度。任何人有任何想法如何做到這一點? – 2012-01-13 13:34:20

+1

在版本1.10中,cairo引入了一個RecordingSurface,您可以在其中記錄您的繪圖命令,並在完成後詢問其「墨跡」。然後,您可以創建PDF高度擬合的pdf表面,並通過命令'ctx.paint()'繪製記錄表面的內容。請參閱:http://cairographics.org/manual/cairo-Recording-Surfaces.html – 2012-01-14 17:26:45

+0

@DovGrobgeld:我試圖得到這個工作,並遇到[一些問題](https://stackoverflow.com/questions/25066437/作物開羅生成-PDF)。也許你有想法? – Richard 2014-07-31 19:07:43

1

有幾個這樣的庫。

就我個人而言,我會推薦reportlab因爲它的高度多功能性。

相關問題