TCPDFでもFPDFでもFPDIでもFPDI_TMPLでもなんだかこのあたりの一群のライブラリはよく分かってなかったりしますが・・・・。
そもそも右綴じって?
PDFのプロパティでこんな感じです。Acrobatで開いた時のプレファレンス。
英語で言うとBinding Directionで、PDFファイルをテキストエディタで開くと
<< /Type /Catalog /Version /1.7 /Pages 1 0 R /Names << >> /ViewerPreferences << /Direction /L2R /Duplex /DuplexFlipLongEdge >> /PageLayout /TwoColumnRight /PageMode /UseNone
って思いっきり書いてあったりします。
tcpdf内では、tcpdf.phpに
protected function _putviewerpreferences() { $vp = $this->viewer_preferences; $out = ' /ViewerPreferences <<'; if ($this->rtl) { $out .= ' /Direction /R2L'; } else { $out .= ' /Direction /L2R'; }
って出力するときに指定してるので、setR2L()でrtlプロパティを設定することで決めるようになっている。
既にあるPDFファイルの綴じ方向ってどうやって???
PDFをインポートして加工して出力っていうのをしてたので、元のPDFがR2Lなのかどうかをチェックする必要が。
grepで
テキスト形式領域内にあるので、grepで
grep -e "ViewerPreferences.*/Direction */R2L" foo.pdf
とかしても一応分かることは分かる。
FPDIのパーサを使う
だけど、まぁ、FPDIを使って他のファイルをsetSourceFileでインポートする時にViewerPreferencesをパースしてくれるのかな・・・と言うことで調査。
parsersプロパティがprivateかどうかは分かりませんが、
$pagecount = $fpdi->setSourceFile($pdffile); $fpdi->parsers[$pdffile]->root[1][1]["/ViewerPreferences"][1]["/Direction"][1];
で調べたら30個ほどやってみてだいたい間違ってなかったのでおそらくここに入っているんだろう。
ということで。
こんな感じで。
$pagecount = $fpdi->setSourceFile($pdffile); if ($fpdi->parsers[$pdffile]->root[1][1]["/ViewerPreferences"][1]["/Direction"][1] == '/R2L'){ $fpdi->setRTL(true); }