wkhtmltopdfの使い方

Debian+PHPでwkhtmltopdf を触る機会があったので、軽くまとめを。

まずこれはなんぞや。ってところから。

帳票出力したりするのに、PDFを出力することがよくありますよね。
そんなときに使えるミドルウェアの一つです。
ほかにも、mPDFとか、TCPDF とかがあります。

そんな中でも、頭一つ飛び抜けているのが、今回利用したwkhtmltopdfです。

HTMLからPDFを得ることが出来るのですが、HTMLの解釈部分にWebKitが使われており
CSS3やHTML5等ももそのままの形で出力できます。

で。帳票というと、Header, Footer(見出しとページ数とか)がつきものですよね。。

Debianを利用している環境であれば

# apt-get install wkhtmltopdf

でインストールし

$ wkhtmltopdf http://www.yahoo.co.jp yahoo.pdf

といった感じで、pdf出力ができます。

----------- ここから先は、header, footerを利用する人のみ必要な箇所です。 ---------------------

上記のバージョンではQTのパッチがあたっていないためheader, footerを指定することが出来ません。

なので、もしインストールしている人は

# apt-get purge wkhtmltopdf

するか、インストールしっぱなしでもいいので、公式サイトからパッケージをダウンロードして展開する必要があります。

公式サイトから、最新(2016/07/08時点では、0.12.3.2 が最新でした。

で、このファイル、よく見るとxz という拡張子がついており、tar.gzのように、tar xzvf では解凍できません。
tar Jxvf wkhtmltox-0.12.3_linux-generic-amd64.tar.xz
で、解凍します(tarのバージョンによります。詳しくはググってください)
また、上記はx64です。i386の場合は、素直にx86バージョンをダウンロードして下さい。

解凍したフォルダを、/usr/local/wkhtmltopdf 等にコピー(移動でもかまいませんよ?)して・・・
いよいよ、本番のheader, footerを入れる作業に入ります。

「wkhtmltopdfの使い方」続きを読む

Pythonでwebページのキャプチャを取得

今日もPython

というわけで、PythonでChromeDriverを使って、キャプチャ取得する方法をまとめます。

PC/Mobileを引数で指定して、Mobileの場合はChromeのモバイルエミュレートで
取得する事にしました。

JavaでもChromeDriver使えるのですが、「すっごく重い」「メモリ食いまくり」でした。
代替案として出てきたのがPythonです。
以下、実際のコードを交えながら説明していきます。

まず。前提として、サーバーに導入されていないであろう、chromedriverはインストールしておいてください。
chromedriverは、apt-get, yum にて導入可能なはずです。

インストールできない場合は、こちら より、ダウンロードして任意のパスへ導入してください。

また、普通にpythonを使っているだけだと、python用のselenium, xvfbwrapperも入ってないはずなので
pip install selenium
pip install xvfbwrapper

をコンソールで実行し、インストールしてください(rootに準ずる権限が必要です)

「Pythonでwebページのキャプチャを取得」続きを読む

Pythonで簡単マルチスレッド(マルチプロセスではない)

続けての記事になりますが、Pythonって、ほかの言語を触っている人なら入り口がとても広い言語だと私は思います。
強いて言うと、インデントの縛りが鬱陶しい位でしょうか。

今回は、マルチスレッドを簡単に実装する方法についてちょっとまとめてみました。

よろしければお付き合いください。

「Pythonで簡単マルチスレッド(マルチプロセスではない)」続きを読む

お久しぶりです&777TOWNで「ファイルの更新に失敗しました」エラー(解消済み

この記事をご覧のみなさま、お久しぶりです。atLastです。

体調面等の調整で、数か月空いてしまいました。

また、技術系の記事をまとめていきたいと思いますので、今後ともよろしくお願いします。

さて。今日の本題。
777TOWNを遊ぼうとして、「ファイルの更新に失敗しました」のエラーが発生する場合に
有効な対処が見つかりましたので、書き残しておきます。

※公式で報告されている方法ではありません
※PC(特にネットワーク回り)への知識が必要です。(ということにしておきます)

以下の方法は、私の環境依存の可能性もありますので、必ず解決するとは限りません。

環境は
・OS: Windows10 x64

「お久しぶりです&777TOWNで「ファイルの更新に失敗しました」エラー(解消済み」続きを読む

一身上の都合により、しばらくお休みします。

体調面での悪化により、毎日書くのが無理になりました。

ぼちぼち更新しますので、宜しくお願いします。

AjaxRequestなんだけど、HTTP_X-Requested-Withを付けない

$.ajax({
	type: 'GET',
	url: '/analyze/',
	data: 'lang=ja&device=desktop&url=' + encodeURI(_target_url),
	beforeSend: function(xhr){
		xhr.setRequestHeader('X-Requested-With', {toString: function(){ return ''; }});
	},
)};

jqueryのbeforeSendを使うことで、送信前にリクエストヘッダの書き換えを行い X-Requested-Withの値を空にすることで、Ajaxリクエストと認識させない

PhantomJSで、UserAgentをランダム化する

PhantomJSとは、QtWebKitをベースとしたヘッドレスブラウザです。

Googleで検索すると、オートテストや、スクリーンキャプチャなどに用いられています。

オートテストの項目の中で、「ページの表示速度をチェックする。」という事があると思います。

このとき、PhantomJSのexamplesについてくる、「loadspeed.js」がほぼそのまま利用できるのですが
ランダムなUserAgentでのテストを要求されるパターンもあるかと思います。

ここでは、PhantomJSに対し、ランダムなUserAgentを設定する方法を紹介します。

「PhantomJSで、UserAgentをランダム化する」続きを読む

博多屋台風酒場 うおっしょい!にて唐揚げを食べる!

博多屋台風酒場 うおっしょい!

にて、唐揚げを食べてきました。
10個で900円。
噂によると、かなり大きいとか。
食べきれるでしょうか。

8個食べきれば勝ち(2個は同行者が食べました)。という勝負にのってやってきました。

そして、やってきました。唐揚げ10個!

「博多屋台風酒場 うおっしょい!にて唐揚げを食べる!」続きを読む

nginx+php5.6+xhprof+XH GUI+Callgraph(Graphviz)の構築

今回、作成したPHPプログラムのどこにボトルネックがあるかを調べるために

XHProf
XH GUI
CallGraph(Graphviz)

のプロファイル環境を構築しました。

以下、インストール時のメモです。

「nginx+php5.6+xhprof+XH GUI+Callgraph(Graphviz)の構築」続きを読む

let's encryptを使ってみる

このblogをご覧の皆さん、あけましておめでとうございます。
今後ともよろしくご愛顧のほどお願いいたします。

新年1発目のネタは、Let's Encryptという、SSLの証明機関のオープンソース版みたいなものを
試してみました。

残念ながら、このblogが動いているサーバーでは動作しなかったので(Debian stretch)
VM上に、Debian Jessieをインストールして検証しました。
ちなみに、Debian stretchで動かない原因は「gccのバグ」です。
早めに修正されて、deb展開されることを祈っています
(海外フォーラムで見る限りだと、すでにbackportsされているようなのですが。)

「let's encryptを使ってみる」続きを読む

  • entry21ツイート
  • Google+