2015-07-16

golangでpdfに日本語を書き出す

しばらく見ないうちに、draw2dの開発が盛んになっていて、
Stani Michiels氏によってgofpdfを利用したpdfバックグラウンドが
実装されていた。

gofpdfの方で日本語関係の更新がないから期待はしていなかったけど、
やはり日本語が表示できるところまで行き着かない。
なので、draw2dのImageGraphicContextをほぼ丸々写して、
ストロークとして文字を書き出す方式で実装しなおした。
yofu/draw2d

これで一応golangからpdfに日本語の文字を書き出せるようになったが、
テキストとしてではなく図として書き出しているので、
当然文字列の選択等はできない。
良い方法が見つかるまでの代替案として。

package main
import (
"fmt"
"os"
"code.google.com/p/freetype-go/freetype/truetype"
"io/ioutil"
"image"
pdf "github.com/yofu/draw2d/draw2dpdf"
)
var fontfile = "ipam.ttf"
func main () {
dest := pdf.NewPdf("P", "mm", "A4")
gc := pdf.NewGraphicContext(dest)
gc.SetFillColor(image.Black)
b, err := ioutil.ReadFile(fontfile)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
font, err := truetype.Parse(b)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
gc.SetFont(font)
gc.SetFontSize(12)
gc.FillStringAt("こんにちは", 20, 50)
err = pdf.SaveToPdfFile("hello.pdf", dest)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}
view raw main.go hosted with ❤ by GitHub

No comments:

Post a Comment