2014/10/8頃のことです。
gentoo Linux環境下のlibreoffice writerで日本語縦書きPDFを出力したときのこと。
文書を右綴じに設定していたのですが、出力結果をacroreadで表示してみると、右綴じが効いていません。
探し回ってみたところ、下記のサイト様より情報を得ました。
技術日記@kiwanami 大量のPDFファイルを右綴じに変えたい
出力文書を見てみると、確かにViewerPreferences.DirectionがR2Lになっていません。
どうやら2014/10/8現在、lowriterではこの設定を出力する術はなさそうでしたので、スクリプトで対応することにしました。
前述のサイトではJavaを使用していましたが、個人的に使い慣れているPythonを使用しました。
PythonでPDFをハンドリングする方法ということで、ご覧ください。
さすがにPDFフォーマットをばらすのもの骨ですので、ライブラリを探したところ、
というのが使いやすそうだということになりました。
ただ、python3には未対応なようでpython2環境下でのみ動作確認しました。
次のようなコードになります。
def pdfR2L(a_src, a_dest):
# --------------------------------------------------------------------------
from pdfrw import PdfReader, PdfWriter
from pdfrw.objects import PdfDict, PdfName
# --------------------------------------------------------------------------
src = PdfReader(a_src)
dest = PdfWriter()
dest.addpages(src.pages)
dest.trailer = src
if dest.trailer.Root.ViewerPreferences:
dest.trailer.Root.ViewerPreferences.Direction = PdfName.R2L
else:
dest.trailer.Root.ViewerPreferences = PdfDict(Direction = PdfName.R2L)
dest.trailer.Root.PageLayout = PdfName.TwoColumnRight
dest.write(a_dest)
PdfReader(a_src)の引数、a_srcは、open(...)したファイルハンドルなどread()が定義されているものなら何でも受け入れてくれます。
同様に、PdfWriter().write(a_dest)のa_destはwrite(...)が定義されているものを受け付けます。
これをまとめて、コマンドラインにしたものを、習作としてBitbucketにあげました。ライセンスはThe MIT License (MIT)です。ま、ご自由にどうぞということで。
https://bitbucket.org/hanepjiv/pdfr2l
自分はgitよりも、mercurial hgの方が性に合うのですが(それゆえBitbucketです)、練習ということでgitを使用しています。
Pythonのsetup.pyやら、コマンドライン引数解析のargparseやらも含んでいますが、1ファイルの小さなスクリプトです。ドキュメントは、--helpで表示される機械翻訳したものしかないのですが、動かしていただければわかるかと思います。
0 件のコメント:
コメントを投稿