[reportlab-users] Broken PDFs with multiBuild and file objects

Holger Hoffmann reportlab-users@reportlab.com
Thu, 02 Jan 2003 00:20:16 +0100


--==========1199602363==========
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,

BaseDocTemplate.multiBuild with a file object as parameter
seems to produce a broken pdf document. If I use a filename
as parameter all goes well. With a file object as parameter
a broken pdf is generated. I've attached a script which
demostrates this.

The problem is that BaseDocTemplate.multiBuild makes multiple
passes and generates one complete pdf document in each pass. If
I use a filename as parameter to multiBuild, PDFDocument.SaveToFile
opens and closes the file in every pass. If I use a file
object as parameter, I get 2 pdf documents in one file.

... Holger

--

PublicKey: http://www.stud.uni-potsdam.de/~hoeffi/hohoff.pgp
Fingerprint: 38D8 D583 A95D 4D53 D6A4 FCA3 4E04 194B FFAF 29C9
--==========1199602363==========
Content-Type: application/octet-stream; name="test.py"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test.py"; size=1629

ZnJvbSByZXBvcnRsYWIubGliLnVuaXRzIGltcG9ydCBpbmNoCmZyb20gcmVwb3J0bGFiLmxpYi5w
YWdlc2l6ZXMgaW1wb3J0IEE0CmZyb20gcmVwb3J0bGFiLnBsYXR5cHVzLmRvY3RlbXBsYXRlIGlt
cG9ydCBCYXNlRG9jVGVtcGxhdGUsIFBhZ2VUZW1wbGF0ZQpmcm9tIHJlcG9ydGxhYi5wbGF0eXB1
cy5mcmFtZXMgaW1wb3J0IEZyYW1lCmZyb20gcmVwb3J0bGFiLnBsYXR5cHVzLnBhcmFncmFwaCBp
bXBvcnQgUGFyYWdyYXBoCmZyb20gcmVwb3J0bGFiLnBsYXR5cHVzLmZsb3dhYmxlcyBpbXBvcnQg
UGFnZUJyZWFrCmZyb20gcmVwb3J0bGFiLmxpYi5zdHlsZXMgaW1wb3J0IGdldFNhbXBsZVN0eWxl
U2hlZXQKZnJvbSByZXBvcnRsYWIucGxhdHlwdXMudGFibGVvZmNvbnRlbnRzIGltcG9ydCBUYWJs
ZU9mQ29udGVudHMKCmNsYXNzIFRlc3REb2NUZW1wbGF0ZShCYXNlRG9jVGVtcGxhdGUpOgoKICAg
IF9pbnZhbGlkSW5pdEFyZ3MgPSAoJ3BhZ2VUZW1wbGF0ZXMnLCkKCiAgICBkZWYgX19pbml0X18o
c2VsZiwgZmlsZW5hbWUsICoqa3cpOgoJc2VsZi5wYWdlc2l6ZSA9IEE0CiAgICAgICAgZnJhbWUg
PSBGcmFtZShpbmNoKi41LCBpbmNoKi41LCBBNFswXS1pbmNoLCBBNFsxXS1pbmNoLCBpZD0nbm9y
bWFsJykKICAgICAgICBhcHBseShCYXNlRG9jVGVtcGxhdGUuX19pbml0X18sIChzZWxmLCBmaWxl
bmFtZSksIGt3KQogICAgICAgIHNlbGYuYWRkUGFnZVRlbXBsYXRlcyhQYWdlVGVtcGxhdGUoJ25v
cm1hbCcsIFtmcmFtZV0pKQoKICAgIGRlZiBhZnRlckZsb3dhYmxlKHNlbGYsIGZsb3dhYmxlKToK
ICAgICAgICBpZiBmbG93YWJsZS5fX2NsYXNzX18uX19uYW1lX18gPT0gJ1BhcmFncmFwaCc6CiAg
ICAgICAgICAgIGYgPSBmbG93YWJsZQogICAgICAgICAgICBuYW1lNyA9IGYuc3R5bGUubmFtZVs6
N10KICAgICAgICAgICAgaWYgbmFtZTcgPT0gJ0hlYWRpbmcnOgogICAgICAgICAgICAgICAgc2Vs
Zi5ub3RpZnkoJ1RPQ0VudHJ5JywgKDAsIGZsb3dhYmxlLmdldFBsYWluVGV4dCgpLCBzZWxmLnBh
Z2UpKQoKc3R5bGUgPSBnZXRTYW1wbGVTdHlsZVNoZWV0KCkKdG9jID0gVGFibGVPZkNvbnRlbnRz
KCkKc3RvcnkgPSBbXQpzdG9yeS5hcHBlbmQodG9jKQpzdG9yeS5hcHBlbmQoUGFnZUJyZWFrKCkp
CnN0b3J5LmFwcGVuZChQYXJhZ3JhcGgoIkZpcnN0IEhlYWRpbmciLCBzdHlsZVsnSGVhZGluZzEn
XSkpCnN0b3J5LmFwcGVuZChQYXJhZ3JhcGgoIlRoaXMgaXMgYSB0ZXN0LiIsIHN0eWxlWydOb3Jt
YWwnXSkpCnN0b3J5LmFwcGVuZChQYWdlQnJlYWsoKSkKc3RvcnkuYXBwZW5kKFBhcmFncmFwaCgi
U2Vjb25kIEhlYWRpbmciLCBzdHlsZVsnSGVhZGluZzEnXSkpCnN0b3J5LmFwcGVuZChQYXJhZ3Jh
cGgoIlRoaXMgaXMgYSB0ZXN0LiIsIHN0eWxlWydOb3JtYWwnXSkpCgpmaWxlID0gb3BlbigidGVz
dF9maWxlLnBkZiIsICJ3IikKZG9jMSA9IFRlc3REb2NUZW1wbGF0ZShmaWxlLCBwYWdlc2l6ZT1B
NCwgdGl0bGU9J1Rlc3QnKQpkb2MxLm11bHRpQnVpbGQoc3RvcnkpCmZpbGUuY2xvc2UoKQpkb2My
ID0gVGVzdERvY1RlbXBsYXRlKCd0ZXN0X2ZpbGVuYW1lLnBkZicsIHBhZ2VzaXplPUE0LCB0aXRs
ZT0nVGVzdCcpCmRvYzIubXVsdGlCdWlsZChzdG9yeSkK

--==========1199602363==========--