wkpdf --- URLからPDFを作成
FileMakerのソリューションで、コマンドラインによって、指定のURLからPDFを作成…という機能を実装する要望があったため、wkpdfをインストールした。
wkpdf の特徴
- < >
- HTMLレンダリングに WebKit を使用 < >
- JavaScript も効くので、Safari の表示とほぼ近いレンダリング結果になる < >
- --username --password オプションを指定することで、Basic認証などにも対応 < >
- 当然、出力結果のPDFファイルは、画像ではないので、テキスト検索が効く < >
- サムネイルとしては使いにくい※ 画像ファイル形式での出力不可/サイズ指定切り出し不可
Install
MacRuby
wkpdf は MacRuby を使用する。
- < >
- MacRuby の公式ダウンロードページから、Latest Stable Release の standalone binary installer のパッケージをダウンロードする。※ 2012/03/21 現在、MacRuby 0.10 < >
- 解凍してできるインストーラパッケージをダブルクリックして指示に従いインストールする。
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コメント