2009年6月12日金曜日

vtkコンパイルエラー

新しく5.4.2が出たけれども相変わらずコンパイルエラーが出るのでメモ
tif_fax3sm.c: Cannot create output file.と出たら。

chmod +w ./VTK/Utilities/vtktiff/tif_fax3sm.c
http://www.vtk.org/Bug/view.php?id=7813

2009年6月11日木曜日

マクロの設置場所 (pythonでOpenOffieをあやつる。)

pythonで作成したマクロは
$HOME./.openoffice.org/3/user/Scripts/の下にpythonを掘って入れよう。

pythonでOpenOffieをあやつる。

spreadsheetをCSVにしようとはじめたが嵌まった。なんぼやってもplane textで保存できなかった。
保存するときの引数を渡すときそれぞれがオブジェクトだということを忘れてました。
結局こう
saveProperty=[]

p=PropertyValue()
p.Name="FilterName"
p.Value="Text - txt - csv (StarCalc)"
saveProperty.append(p)

p=PropertyValue()
p.Name="FilterOptions"
p.Value="44,34,76,1"
saveProperty.append(p)

p=PropertyValue()
p.Name="SelectionOnly"
p.Value=True
saveProperty.append(p)

doc.storeToURL(unohelper.systemPathToFileUrl(fname), tuple(saveProperty))

ちなみにpythonでoooを操るときはそっけなくてあちこち行かなければならないAPIみるよりhttp://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.xhtmlのほうがましかも。

2009年6月8日月曜日

reportlabでバーコード

http://two.pairlist.net/pipermail/reportlab-users/2008-November/007685.html
を写経してPDFにバーコードに文字列付けてhumanReadableで出力しようとしたところ。
Traceback (most recent call last):
File "./barcode2.py", line 16, in
barcode.drawOn(pdf,50*mm,250*mm)
File "/usr/lib/python2.6/dist-packages/reportlab/platypus/flowables.py", line 105, in drawOn
self._drawOn(canvas)
File "/usr/lib/python2.6/dist-packages/reportlab/platypus/flowables.py", line 89, in _drawOn
self.draw()#this is the bit you overload
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 219, in draw
self.drawHumanReadable()
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 164, in drawHumanReadable
self.annotate(x+width/2.,-y,s,fontName,fontSize)
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 176, in annotate
getattr(canv,func)(text,x,y)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfgen/canvas.py", line 1287, in drawCentredString
width = self.stringWidth(text, self._fontname, self._fontsize)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfgen/canvas.py", line 1392, in stringWidth
(fontSize,self._fontsize)[fontSize is None])
File "/build/buildd/python-reportlab-2.3/src/rl_addons/rl_accel/_rl_accel.c", line 1104, in stringWidthU
File "/build/buildd/python-reportlab-2.3/src/rl_addons/rl_accel/_rl_accel.c", line 1147, in _instanceStringWidthU
AttributeError: decode
とエラー。
調べてみるとcommon.pyの line 176
175: else: func = 'drawString'
176: getattr(canv,func)(text,x,y)
177: canv.restoreState()
でcanvas.pyのline 1283のdrawCentredStringを呼んでいるけれど、定義はこう
1283: def drawCentredString(self, x, y, text):
ということで
176: getattr(canv,func)(x, y, text)
でしょう。

追記:patchを投げておきました。trunkは変わっています。