This recipe shows how to convert the data stored in a Berkeley DB database to PDF, using the xtopdf toolkit for PDF creation. It should work on either Linux/Unix or Windows.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | # BSDDBToPDF.py
# Program to convert Berkeley DB (BSD DB) data to PDF.
# Uses Python's bsdd library (deprecated in Python 3),
# and xtopdf.
# Author: Vasudev Ram - http://www.dancingbison.com
import sys
import bsddb
from PDFWriter import PDFWriter
try:
# Flag 'c' opens the DB read/write and doesn't delete it if it exists.
fruits_db = bsddb.btopen('fruits.db', 'c')
fruits = [
('apple', 'The apple is a red fruit.'),
('banana', 'The banana is a yellow fruit.'),
('cherry', 'The cherry is a red fruit.'),
('durian', 'The durian is a yellow fruit.')
]
# Add the key/value fruit records to the DB.
for fruit in fruits:
fruits_db[fruit[0]] = fruit[1]
fruits_db.close()
# Read the key/value fruit records from the DB and write them to PDF.
with PDFWriter("fruits.pdf") as pw:
pw.setFont("Courier", 12)
pw.setHeader("BSDDBToPDF demo: fruits.db to fruits.pdf")
pw.setFooter("Generated by xtopdf")
fruits_db = bsddb.btopen('fruits.db', 'c')
print "FRUITS"
print
pw.writeLine("FRUITS")
pw.writeLine(" ")
for key in fruits_db.keys():
print key
print fruits_db[key]
print
pw.writeLine(key)
pw.writeLine(fruits_db[key])
pw.writeLine(" ")
fruits_db.close()
except Exception, e:
sys.stderr.write("ERROR: Caught exception: " + repr(e) + "\n")
sys.exit(1)
|
To run the program, you need Python >= 2.5, Reportlab 1.21, bsddb that comes with the Python standard library.
The program is a demo; it creates a Berkeley DB database called fruits.db, populates it with a few sample records, and then reads back those records and writes them to a PDF file, using the xtopdf toolkit,
More details are available at this blog post, along with some background about Berkeley DB, and a screenshot of the output PDF created:
http://jugad2.blogspot.in/2014/01/publish-berkeley-db-data-to-pdf-with.html