PyJaPDFというモジュールを使えば出来るようだ。
--引用--
Pisa は HTML/XHTML と CSS から PDF を生成するものです。2010年2月1日時点では、まだ日本語に対応しておらず、フォントとしては Courier, Helvetica, Times, Symbol 程度しか扱えないものです。しかし基盤としては ReportLab を利用しており、若干の修正を加えることで、日本語の出力が可能になります。
---
http://pyjapdf.linxs.org/home/pisa
インターネット上にある断片化された情報を切り取って、リブログする。 主にソフトウェア、Ubuntu関連、CPUなど気になったニュース、また、日々の面白い出来事やニュースもリブログします。
2011年3月15日火曜日
2011年3月11日金曜日
Django + PythonでPDF作成
1.インストール
easy_install -U reportlab
2.実行
PDFレイアウトをちまちま書いていくのは大変なので、
テンプレート画像を読み込んで、そこに記入していく方式をとってみる。
これで仕上がったPDFを印刷してみるとわかるけど、
テンプレート内に入っている文字はドットが荒くなるので、
線の枠組みだけテンプレートに書いて、文字は別途挿入した方がいい。
あとテンプレートのサイズはソースコード内に記述したサイズにすると
原寸大で描画できる。
参照リンク
http://docs.nullpobug.com/django-doc-ja/trunk/howto/outputting-pdf.html
http://d.hatena.ne.jp/piro_suke/20070704/1183561248
http://tt-house.com/2009/12/python-reportlab-pdf.html
easy_install -U reportlab
2.実行
from reportlab.pdfgen import canvas from django.http import HttpResponse def some_view(request): response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=somefilename.pdf' p = canvas.Canvas(response) #帳票レイアウト描画 p.drawString(100, 100, "Hello world.") p.showPage() p.save() return response
PDFレイアウトをちまちま書いていくのは大変なので、
テンプレート画像を読み込んで、そこに記入していく方式をとってみる。
from reportlab.pdfgen import canvas #!/user/bin/env python # -*- coding: utf-8 -*- from django.http import HttpResponse from reportlab.pdfgen import canvas from reportlab.lib.units import mm # Create your views here. def sample1(request): response = HttpResponse(mimetype='application/pdf') #response['Content-Disposition'] = 'attachment; filename=c:\\tmp\\somefilename.pdf' response['Content-Disposition'] = 'attachment; filename=somefilename.pdf' p = canvas.Canvas(response) #テンプレート読み込み(A4サイズ[595x841], テンプレートサイズ[453x785]) _lft = 30 _top = 10 _rit = 20 _btm = 10 _wid = 210 - _lft - _rit _hei = 297 - _top - _btm p.drawInlineImage("c:\\tmp\\test.png", _lft*mm, _btm*mm, # width=_wid*mm, # height=_hei*mm, # preserveAspectRatio=True ) #記入項目 p.drawString(0*mm, 0*mm, "Hello world1.") p.drawString(40*mm, 100*mm, "Hello world2.") p.drawString(40*mm, 200*mm, "width=%d, height=%d" % (_wid*mm, _hei*mm)) p.showPage() p.save() return response
これで仕上がったPDFを印刷してみるとわかるけど、
テンプレート内に入っている文字はドットが荒くなるので、
線の枠組みだけテンプレートに書いて、文字は別途挿入した方がいい。
あとテンプレートのサイズはソースコード内に記述したサイズにすると
原寸大で描画できる。
参照リンク
http://docs.nullpobug.com/django-doc-ja/trunk/howto/outputting-pdf.html
http://d.hatena.ne.jp/piro_suke/20070704/1183561248
http://tt-house.com/2009/12/python-reportlab-pdf.html
2011年3月10日木曜日
pythonで扱う文字列について
Linuxは「UTF-8」、Windowsは「Shift-JIS」という認識だったけど、
実は間違いであるw
Windowsは拡張Shift-JISというものを使っていて、
エンコードの際に"Shift-JIS"を指定していると
「㎡」こういうコードは範囲外なのでエンコードエラーになる。
なので、通常Windowsが使用するエンコードに合わせるなら
"CP932"で覚えておいたほうがよさそう。
実は間違いであるw
Windowsは拡張Shift-JISというものを使っていて、
エンコードの際に"Shift-JIS"を指定していると
「㎡」こういうコードは範囲外なのでエンコードエラーになる。
なので、通常Windowsが使用するエンコードに合わせるなら
"CP932"で覚えておいたほうがよさそう。
ラベル:
Python
2011年3月9日水曜日
pythonでLZH形式ファイルを解凍する
UNLHA32.DLLを利用した解凍方法など検索すると
---
(Windowの場合)
windll.UNLHA32.Unlha(0, r'x -r1 -n "%s\\%s" "%s\\" *.*' % (path, fname, path), None, 0)
---
こういうやり方でできるものがあった。
もっとシンプルやりたかったので別の探してみたら見つけた。
前提条件:
・VC++が入っている事。
basetsd.hが無いとエラーが出たらKoderよりヘッダソースをコピーしてくる。
http://www.koders.com/c/fid4BF9F859DE62B18F2A3C47B66D776CDDE9D75AF4.aspx
1.インストール
easy_install、pipのパスが通ってない場合はフォルダ移動して(例:d:\traclight\python\scripts)
% easy_install http://svn.neotitans.net/lhafile/
% pip install http://svn.neotitans.net/lhafile/
実行。
コンパイル成功して
python\Lib\lzhlib.pyd
が入っていたらインストール完了。
2.使い方
追記:
使ってみてみたらまだバグがあるらしいので注意。
2011.05.27
作者the-o様に修正していただきました!
thank you:)
参考URL
http://trac.neotitans.net/wiki/lhafile
---
(Windowの場合)
windll.UNLHA32.Unlha(0, r'x -r1 -n "%s\\%s" "%s\\" *.*' % (path, fname, path), None, 0)
---
こういうやり方でできるものがあった。
もっとシンプルやりたかったので別の探してみたら見つけた。
前提条件:
・VC++が入っている事。
basetsd.hが無いとエラーが出たらKoderよりヘッダソースをコピーしてくる。
http://www.koders.com/c/fid4BF9F859DE62B18F2A3C47B66D776CDDE9D75AF4.aspx
1.インストール
easy_install、pipのパスが通ってない場合はフォルダ移動して(例:d:\traclight\python\scripts)
% easy_install http://svn.neotitans.net/lhafile/
% pip install http://svn.neotitans.net/lhafile/
実行。
コンパイル成功して
python\Lib\lzhlib.pyd
が入っていたらインストール完了。
2.使い方
import lhafile # Create Lhafile instance from filename f = lhafile.Lhafile('foo.lzh') # Print each file informaion in archive file. for info in f.infolist(): print info # Extract data from archive f.read('bar.txt')
追記:
2011.05.27
作者the-o様に修正していただきました!
thank you:)
参考URL
http://trac.neotitans.net/wiki/lhafile
ラベル:
Python
2011年3月7日月曜日
Debianで無線LANモジュールを使う
手元にあるUSBタイプの無線LAN(Planex製 GW-USMicron)をDebian環境で
使ってみた。
このGW-USMicronという製品に使われている無線モジュールICはRT2870が使われているらしいので、
「Debian RT2870」で検索すると、
http://wiki.debian.org/rt2870sta
DebianWikiにやり方が解説されているものを発見。
内容を読むと、aptitudeでインストールでOKぽい。
そんなわけで、さっそくやってみた。
1.aptソース(資源)の設定。
/etc/apt/sources.list
deb http://ftp.us.debian.org/debian squeeze main contrib non-free
2.無線ツールのインストール。
aptitude update
aptitude install firmware-ralink wireless-tools
3.モジュール読み込み、起動。
modprobe rt2870sta
iwconfig
ifconfig wlan0 up
ソースコンパイルする覚悟だったけど、apt使えて便利だなー。
使ってみた。
このGW-USMicronという製品に使われている無線モジュールICはRT2870が使われているらしいので、
「Debian RT2870」で検索すると、
http://wiki.debian.org/rt2870sta
DebianWikiにやり方が解説されているものを発見。
内容を読むと、aptitudeでインストールでOKぽい。
そんなわけで、さっそくやってみた。
1.aptソース(資源)の設定。
/etc/apt/sources.list
deb http://ftp.us.debian.org/debian squeeze main contrib non-free
2.無線ツールのインストール。
aptitude update
aptitude install firmware-ralink wireless-tools
3.モジュール読み込み、起動。
modprobe rt2870sta
iwconfig
ifconfig wlan0 up
ソースコンパイルする覚悟だったけど、apt使えて便利だなー。
ラベル:
debian
2011年3月1日火曜日
WinCEでUSBシリアル変換ケーブルを使う。
WinCEでUSB-シリアル変換ケーブルをできるようにするには、
変換ケーブルに使われているICチップが「PL2303」でないといけないようだ。
ドライバと必要なUSB-RS232C変換ケーブルをメモしておく。
追記:2011.04.04
より簡単な方法を見つけた。
秋月電商のUSBシリアルケーブルを使う場合(PL2303チップ)
http://www.prolific.com.tw/eng/downloads.asp?id=31
上記サイトからCABをダウンロード&インストールするだけでよい。
COMポート番号はCOMポート一覧の一番下に表示されるCOM**(MOC**は除く)になる。
WinCE6にて動作確認済み。
<旧手順>
↓↓↓上記ドライバ以外で行う場合↓↓↓
[手順]
1.ドライバのダウンロードとケーブルを用意する。
2.ドライバのインストールはDLLをWindowsフォルダにコピー。
レジストリ設定ファイルがあれば、RegEditから設定ファイルのインポート。
3.USB-シリアル変換ケーブルを挿す。
4.RS232C設定アプリがあればアプリで設定する。
通信テストして動けばOK。
他の情報を探したい場合は、Googleの検索ワードで、「CE PL2303」など
「OS名とチップ名」を合わせて検索すると良くヒットしやすい気がする。
○ドライバ
WindowsCE2.0以降(CDC ACM準拠のUSBモデムやPL2303、FTDI用のシリアルデバイスドライバ)
http://z.apps.atjp.jp/ce/
WinCE6.0用
http://solarisintel.cocolog-nifty.com/blog/2010/12/windows-ce6-pl2.html
http://solarisintel.cocolog-nifty.com/blog/2010/09/ce6232usbdll-44.html
○変換ケーブル
PL2303系のチップ
・秋月電子 USBシリアル変換ケーブル
http://akizukidenshi.com/catalog/g/gM-02746/
http://akizukidenshi.com/catalog/g/gM-00720/
・エレコム UC-SGT
http://www2.elecom.co.jp/cable/usb/uc-s/gt/
参考URL
http://www.geocities.jp/le_grand_concierge2/_geo_contents_/diy/USB_Serial_exchange/USB_Serial_exchange.htm
http://wiki.tomocha.net/Windows_Vista_USB-RS232C.html
変換ケーブルに使われているICチップが「PL2303」でないといけないようだ。
ドライバと必要なUSB-RS232C変換ケーブルをメモしておく。
追記:2011.04.04
より簡単な方法を見つけた。
秋月電商のUSBシリアルケーブルを使う場合(PL2303チップ)
http://www.prolific.com.tw/eng/downloads.asp?id=31
上記サイトからCABをダウンロード&インストールするだけでよい。
COMポート番号はCOMポート一覧の一番下に表示されるCOM**(MOC**は除く)になる。
WinCE6にて動作確認済み。
<旧手順>
↓↓↓上記ドライバ以外で行う場合↓↓↓
[手順]
1.ドライバのダウンロードとケーブルを用意する。
2.ドライバのインストールはDLLをWindowsフォルダにコピー。
レジストリ設定ファイルがあれば、RegEditから設定ファイルのインポート。
3.USB-シリアル変換ケーブルを挿す。
4.RS232C設定アプリがあればアプリで設定する。
通信テストして動けばOK。
他の情報を探したい場合は、Googleの検索ワードで、「CE PL2303」など
「OS名とチップ名」を合わせて検索すると良くヒットしやすい気がする。
○ドライバ
WindowsCE2.0以降(CDC ACM準拠のUSBモデムやPL2303、FTDI用のシリアルデバイスドライバ)
http://z.apps.atjp.jp/ce/
WinCE6.0用
http://solarisintel.cocolog-nifty.com/blog/2010/12/windows-ce6-pl2.html
http://solarisintel.cocolog-nifty.com/blog/2010/09/ce6232usbdll-44.html
○変換ケーブル
PL2303系のチップ
・秋月電子 USBシリアル変換ケーブル
http://akizukidenshi.com/catalog/g/gM-02746/
http://akizukidenshi.com/catalog/g/gM-00720/
・エレコム UC-SGT
http://www2.elecom.co.jp/cable/usb/uc-s/gt/
参考URL
http://www.geocities.jp/le_grand_concierge2/_geo_contents_/diy/USB_Serial_exchange/USB_Serial_exchange.htm
http://wiki.tomocha.net/Windows_Vista_USB-RS232C.html
ラベル:
WinCE
登録:
投稿 (Atom)