Domain: reportlab.org
Stories and comments across the archive that link to reportlab.org.
Comments · 10
-
reportlab
Maybe reportlab fits your needs. It leverages the python language to make pdf documents going from low-level drawings to complex table layouts and page layout.
Much easier than LaTeX if you have needs that don't fit in one of the standard templates, and its programmability makes it more powerful yet. -
You forgot this library
There is also http://www.reportlab.org/ and open-source incarnations of RML (OpenRML and TinyRML). This is Python library, but works with Java via Jython.
-
For the Pythonista wanting charts and graphs...
... there's matplotlib and there's reportlab for PDFs. Both are excellent open source packages, and I can tell you from experience that reportlab has outstanding support. I recently posted a question to their mailing list and received three intelligent replies within an hour.
-
Re:PDF is too complicated
See also:
http://www.reportlab.org/ -
Re:PDF open?
Here's the The Adobe PDF reference, for if you want to implement applications that use PDF. In particular, you might want to read Section 1.5 of the PDF Reference, "Intellectual Property". In summary, it says that they'll enforce their copyright on the PDF specification in order to keep the standard accurate, but grant you the right to implement the standard pretty much however you like.
Some apps that do so, without licensing the Adobe PDf libraries or tools, include:
GhostScript
OpenOffice.org
Scribus
Mac OS X
(specifically the window system, print system, and Preview tool) ... and *LOTS* more, including evince, xpdf, kpdf, libpoppler, and other open source PDF viewing tools/libs, several reporting libraries like ReportLab, etc. -
Re:A *good* PS / EPS tutorial somewhere?If PDF is your ultimate target (and it is a good choice for this sort of thing), then why not generate PDF directly?
Check out a PDF generator such as ReportLab. It's pretty easy to use, with minimal python coding to glue/generate your elements. It handles/automates all the tedious stuff like flowing text, etc.
-
ReportLab
http://www.reportlab.org/
Uses OO python, brilliant and easy to use. I've used it to draw all kinds of publication quality figures, including genetic plasmid maps (I'm into bacterial genomics). -
Gaping hole in the Open Source Software
This is one of those big, gaping holes in open source software. I swear most open source programmers don't even understand the question. Let me try:
Alice is an expert in some area of business. She can even wrap her head around simple databases. How can she write database apps without having to call Bob, the resident Unix hacker who doesn't want to waste his time coding simple data entry screens.
What tools can Alice use? Open Office is workable now, and although pretty clumsy, compares to the VB .net "way". Alice has to learn quite a lot to get there, though.
There's http://pythoncard.sourceforge.net/samples/custdb.h tmlPythonCard, which is looking very nice: Python is a very newbie friendly language. If you use this, then ReportLab (http://www.reportlab.org/) might be a good choice for reporting tools.
There's Rekall, I've not used it at all, although it looks pretty good.
And then there is GNU Enterprise http://gnue.org/. It is eventually supposed to be an ERP system, but currently the project team is working on what appears to be a very sweet set of db app development tools. Rumor is that it's at a usable point, but I've never been able to crawl through the install process (even on Debian).
There are more, but I haven't found any really good ones. -
A Fujitsu scanner, SANE and Quartz Python bindingsSuch as the fi-4120c is what I'd recommend. You might have to stretch your budget a bit. The cheap HP sheet feeders are very unreliable; we went through two HP 5550c's enduring constant paper jams before switching to a better (Fujitsu) scanner.
Unfortunately you don't have much use for something like Acrobat Capture because you have handwritten notes to deal with. To process the files, SANE and/or TWAIN interfaces are reasonably easy to write code for. The cool thing about SANE is that you can run the saned daemon on any Mac or Linux box, and with a couple of lines of config file changes, it's instantly available over the network from any Mac, Windows, or Unix box (there are TWAIN bridges for Mac/Windows so it even shows up in Photoshop and so forth); there are also standalone GUI clients like XSane.
I wrote a document management system in Python/wxWidgets (for Windows) in about a month part-time, and it works very well. Either on Mac or Windows, PDF makes sense because of the ubiquity of the viewers, even if you lose a bit in compression compared to more optimized formats such as DjVu. On Windows you can easily embed the Acrobat ActiveX control; on Mac OS X you have native PDF support, Panther's Preview kicks ass, and there are several open-source PDF browsing components such as the ones out of TeXShop or Glen Low's Graphviz port you can embed in your own app.
Given a choice I would probably pick the Mac to do this project, because of the wonderful Quartz/CoreGraphics Python bindings. You can just draw right to PDF, and place PDF files as if they were images; for example, here's a short script to rotate a bunch of PDF files (sorry, Slashdot destroys Python indentation):
#!/usr/bin/python
You could also use ReportLab, but because a lot of the PDF processing code is written in Python it's somewhat slower and memory-hogging for high-volume use. (I used ReportLab on Windows for the above project, and use CoreGraphics Python bindings for my research, so I do know what I'm talking about mostly
from CoreGraphics import *
import math, sys
for inputPDFPath in sys.argv[1:]:
inputProvider = CGDataProviderCreateWithFilename(inputPDFPath)
&n bsp; inputPDF = CGPDFDocumentCreateWithProvider(inputProvider)
&n bsp; if inputPDF is None:
print >> sys.stderr, \
"unable to open '%s': perhaps is not a PDF file?" % inputPDFPath
continue
outputContext = CGPDFContextCreateWithFilename(
inputPDFPath + '-rotated.pdf', None)
for pageNumber in xrange(1, inputPDF.getNumberOfPages() + 1):
mediaBox = inputPDF.getMediaBox(pageNumber)
rotatedBox = CGRectMake(0, 0, mediaBox.getMaxY(), mediaBox.getMaxX())
outputContext.beginPage(rotatedBox)
outputContext.saveGState()
outputContext.translateCTM(0, rotatedBox.size.height)
outputContext.rotateCTM(-math.pi/2)
outputContext.drawPDFDocument(mediaBox, inputPDF, pageNumber)
outputContext.restoreGState()
outputContext.endPage()
outputContext.finish() :) -
Python's ReportLab
I personally have had very good luck with ReportLab. If you would like to use Python, look no further.