パーソナルツール
現在位置: ホーム 日々のメモ書き Topics PDF

PDF

2008年01月09日

AcroTeX

by TANIGUCHI Takaki — last modified 2008年01月09日 00時20分
Filed Under:

何やら面白そうなパッケージ。PDFのフォーム機能などが使えるようだ。

eformsパッケージしか使っていません。eformman.pdfを流し読みしてみた。\textFieldを使うと文字を入力するフォームが使える。
\usepackage[dvipdfm]{eforms} として読み込んでごにょごにょやると文字の入力ができるPDFの出来上がり。JavaScripと組み合わせるともっと面白いことができるんだと思うけどとりあえずはこんなもん。

2008年01月06日

reportlab勉強中

by TANIGUCHI Takaki — last modified 2008年01月06日 00時27分
Filed Under:

reportlabの勉強を開始する。

  • 大きくわけて二つのモードがあると思ってよい。線と文字を配置するモード。文章や表などを適当に流しこむモード。
  • Frameを使うと小さな描画領域が作らると思えばよい。
  • Templateは使う必要はない。

2007年09月30日

evinceで日本語PDF

by TANIGUCHI Takaki — last modified 2007年09月30日 00時31分
Filed Under:

evinceで日本語が出ない。

xpdf-japaneseを入れる。えー。

rml.dtdを探して

by TANIGUCHI Takaki — last modified 2007年09月30日 00時31分
Filed Under:

RMLのDTDを探す。

前に使っていたのに行方不明になって探すことに。reportlabのパッケージにもないなと思ったが…
http://www.reportlab.com/docs/ にありました。

2007年09月22日

acroread 8

by TANIGUCHI Takaki — last modified 2007年09月22日 23時19分
Filed Under:

debian-multimediaのacroreadが8になった。

日本語が出なくなったが慌てず騒がずダイアログに表示されているAdobeのサイトにアクセスしてフォントをインストールする。ディレクトリを/usr/libにするのがポイント。

2007年09月16日

trml2pdfで日本語を使う

by TANIGUCHI Takaki — last modified 2007年09月16日 14時24分
Filed Under:

ReportLabの挙動を学んだところでtrml2pdfで日本語を通るようにする。

UnicodeCIDFontを登録するようにすればいいということがわかった。オリジナルのRMlではdocinit内でregisterCIDFontを使って指定してる。じゃあ、それを解釈するように変更すればいいんだなというのが以下のパッチ。

diff -rN -u old-trml2pdf/trml2pdf/trml2pdf.py new-trml2pdf/trml2pdf/trml2pdf.py
--- old-trml2pdf/trml2pdf/trml2pdf.py 2007-09-16 14:19:49.475214466 +0900
+++ new-trml2pdf/trml2pdf/trml2pdf.py 2007-09-16 14:19:49.975179240 +0900
@@ -35,7 +35,8 @@
#
# Change this to UTF-8 if you plan tu use Reportlab's UTF-8 support
#
-encoding = 'latin1'
+# encoding = 'latin1'
+encoding = 'utf-8'

def _child_get(node, childs):
clds = []
@@ -142,6 +143,7 @@
from reportlab.lib.fonts import addMapping
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
+ from reportlab.pdfbase.cidfonts import UnicodeCIDFont

for node in els:
for font in node.getElementsByTagName('registerFont'):
@@ -152,7 +154,11 @@
addMapping(name, 0, 1, name) #italic
addMapping(name, 1, 0, name) #bold
addMapping(name, 1, 1, name) #italic and bold
+ for font in node.getElementsByTagName('registerCidFont'):
+ name = font.getAttribute('faceName').encode('ascii')
+ pdfmetrics.registerFont(UnicodeCIDFont(name))
+
def render(self, out):
el = self.dom.documentElement.getElementsByTagName('docinit')
if el:

これで日本語が通ることを確認した。なおRMLファイルはutf-8にすること。

<!DOCTYPE document SYSTEM "rml.dtd">
<document filename="example_1.pdf">
<docinit>
<registerCidFont faceName="HeiseiKakuGo-W5"/>
</docinit>
<pageDrawing>
<setFont name="HeiseiKakuGo-W5" size="8"/>
<drawCentredString x="2in" y="10in">
こんにちは世界 ゴシック
</drawCentredString>
</pageDrawing>
</document>

元のコードを見ればわかるがTTFontの登録は実装してある。Tinyだけあって最小の努力なのかね。もうちょっと気を使ってもらえるとありがたい。

これでJasperReportsをPythonから無理矢理使おうなんていう頭の痛いことは頑張らなくてもいいようになったかな。

ReportLabで日本語を使う

by TANIGUCHI Takaki — last modified 2007年09月16日 13時58分
Filed Under:

まずはReportLabで日本語を使う方法。

# -*- encoding: utf-8 -*-
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont

c = canvas.Canvas("hello.pdf")

pdfmetrics.registerFont(UnicodeCIDFont('HeiseiMin-W3'))
c.setFont('HeiseiMin-W3', 16)
c.drawString(100,620,u"こんにちは世界 明朝体")

pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5'))
c.setFont('HeiseiKakuGo-W5', 16)
c.drawString(100,640,u"こんにちは世界 ゴチック体")
c.showPage()
c.save()

こんな感じです。ちょっと古い資料だとUnicodeCIDFontを使わないでCIDFontを使っていたりするがドキュメントによると2.0からはUnicodeCIDFontを使うべきらしい。

trml2pdfの日本語の調査

by TANIGUCHI Takaki — last modified 2007年09月16日 00時01分
Filed Under:

trml2pdfに日本語を通す方法をさらに調べる。

ReportLab自体はCIDフォントを適切に設定すれば日本語は通る。オリジナルのRML2PDFは日本語のサポートもされている。だけどtrml2pdfはCIDフォントの登録する命令が実装されてないようだ。そこをなんとかすればいいのかな?

2007年09月09日

python-trml2pdf

by TANIGUCHI Takaki — last modified 2007年09月09日 23時49分
Filed Under:

python-trml2pdf - Converter of Report Markup Language (RML) file to PDF

RMLというXMLからPDFに変換する。日本語はデフォルトで通らなかった。トーフになってしまう。バックエンドのReportLabの問題かもしれないので調査してみるべし。コマンド自体はlatin1エンコーディングが埋め込まれているのでutf-8を使うと文句を言われる。とりあえず手で書き直して放置する。

takaki's twitter
焼酎風味の水に500円も取ろうとはどういう店だ。 2010年03月09日 22時53分
ジョブカードなる糞エクセル方眼紙を埋め中。心が折れそうだ。 2010年03月08日 22時16分
Excel方眼紙がOOoで崩れるわけだが。 2010年03月04日 22時49分
嫌味言ってりゃ世の中良くなるわけでもなし 2010年03月04日 22時06分
どう考えても風邪だがタイミングが悪すぎる 2010年03月02日 23時51分
Affiliate