wkpdf --- URLからPDFを作成

FileMakerのソリューションで、コマンドラインによって、指定のURLからPDFを作成…という機能を実装する要望があったため、wkpdfをインストールした。

wkpdf の特徴

    < >
  • HTMLレンダリングに WebKit を使用
  • < >
  • JavaScript も効くので、Safari の表示とほぼ近いレンダリング結果になる
  • < >
  • --username --password オプションを指定することで、Basic認証などにも対応
  • < >
  • 当然、出力結果のPDFファイルは、画像ではないので、テキスト検索が効く
  • < >
  • サムネイルとしては使いにくい※ 画像ファイル形式での出力不可/サイズ指定切り出し不可

Install

MacRuby

wkpdf は MacRuby を使用する。
    < >
  1. MacRuby の公式ダウンロードページから、Latest Stable Release の standalone binary installer のパッケージをダウンロードする。※  2012/03/21 現在、MacRuby 0.10
  2. < >
  3. 解凍してできるインストーラパッケージをダブルクリックして指示に従いインストールする。

wkpdf

通常の gem を使ったインストール
sudo gem update --systemsudo gem install wkpdf
※ 当然、インストール後の Update も…
gem update wkpdf
で、OK。

Usage

Basic Usage

基本的には…
wkpdf --source http://foo.com/ --output foo.pdf
というように、--source オプションで、取得元URL を、--output オプションで、出力先PDF名を指定する。※ 出力先PDFパスと考えてOK

Other Usage

以下が、wkpdf --help の出力結果である。
--output, -o <s>: Output PDF filename--source, -s <s>: URL or filename (supported protocols: http, https, ftp, file), ifnot present read from stdin (default: /dev/stdin)--paper, -p <s>: Paper size (folio | ledger | letterSmall | legal | a0 | a1 | a2 |statement | quarto | b4 | a3 | b5 | a4 | executive | letter | a5 |a4small | custom:WxH | 10x14 | tabloid) (default: a4)--orientation, -r <s>: (landscape | portrait) (default: portrait)--hcenter, -c: Center horizontally (default: true)--vcenter, -e: Center vertically--paginate, -a: Enable pagination (default: true)--margins, -m <i+>: Paper margins in points (T R B L) (V H) or (M)--caching, -i: Load from cache if possible (default: true)--timeout, -t <f>: Set timeout to N seconds (default: 3600.0)--stylesheet-media, -y <s>: Set the CSS media value (default: screen)--user-stylesheet, -u <s>: URL or path of stylesheet to use--user-script <s>: URL or path of script to use--print-background, -n: Display background images--ignore-http-errors, -g: Generate PDF despite, e.g., a 404 error--username <s>: Authenticate with username--password, -w <s>: Authenticate with password--enable-plugins, -b: Enable plugins--enable-javascript, -l: Enable javascript (default: true)--save-delay <f>: Wait N seconds after loading to generate PDF (default: 0.0)--version, -v: Print the version and exit--help, -h: Show this message--debug, -d: Print debug output
出力用紙サイズ (--paper) や用紙方向 (--orientation) 、ページネーション (--pagination) などの出力様式指定も一通り指定できるし、Basic認証の向こうのURL も対応するので、シンプルに必要最低限のことはできる。

Notice

URL中に、アンパサンドやクエスチョンが入る場合は、URL を シングル(or ダブル)クォーテーションで括ってやる必要がある。※ もちろん、出力パスにスペースが入る場合なども同様。URL中に、日本語が入っていると、その部分をUTF-8 URLエンコードしてやらないとエラーになる。※ 対処策を勘案中 (2012/03/21 20:30:49)

対処策 (2012/03/22 13:03:09)

GetAsURLEncoded ( URL ) だと、スラッシュやコロンなどまでURLエンコードされてしまうので、「一文字ずつ改行区切りにして non-ASCII だけを…」とかあほみたいに考えていたけど、ほぼ以下の通りで解決。"'" & URLDecode ( GetAsURLEncoded ( URL ) ) & "'"カスタム関数 URLDecode は、www.briandunning.com/cf/528-------------------------------------Ruby 側に対処するという手法だと、Rubyで日本語を含むURLを扱うな話なんだろね。これをやっちまうと、Updateされたときに上書きされちまうだろうし、変更箇所などの詳細を覚えておく自信もないし、今回は FileMaker 側で対処することに。

0コメント

  • 1000 / 1000