オライリーのeBook(PDF)の余白をカットする方法
オライリー(O'Reillyじゃないほう)のeBook(といってもPDFなんだけど)はDRMがかかっててPDF Scissorsで余白カットできなくて不便だ。って嘆いていたら id:nobeans さんに良い事教えてもらった。:-)
こりゃええわ、ってことで早速試す。といっても5インチのPRS-350で見られるようにするには、かなりカリカリに余白カットしないとイケないので、もう1冊ごとにトリミング指定したった。そんでも視力弱い人にはつらいかと思う。
だからさ、単に紙媒体をPDFにしただけでeBookって売っちゃアカンよなーって思うわけよ。相当安易なやり方だわな(つうか手抜きって言ったほうが近いかも)。PDFなんて、PCかiPadくらいしかまともに読めんよ。
といっても他の選択肢もSony ReaderかKindleくらいしか無いんだけどね。
#GALAPAGOSはあえてスルー。:-)
ePub流行らすにも、そのプラットフォームが普及してないのが現状か...。って話題変わっちゃった。:-)
一応、個別設定したトリミングの設定を残しておく(元ネタはこちら→http://sakanaya.kir.jp/ymnet/diary/d/20110330)。
use strict; use warnings; # left, bottom, right, top # Apacheクックブック, JavaによるRESTfulシステム構築 #my @offset = (65, 56, -65, -75); # jQueryクックブック, 正規表現クックブック #my @offset = (65, 41, -65, -81); # WSHクリックリファレンス 第2版 #my @offset = (47, 54, -47, -82); # アルゴリズム クイックリファレンス #my @offset = (47, 42, -47, -66); # Windows PowerShellクックブック #my @offset = (65, 55, -65, -76); # プログラマが知るべき97のこと #my @offset = (45, 55, -45, -45); # 正規表現クックブック my @offset = (67, 45, -67, -81); while(<*.pdf>) { next if /-cropped/; open my $in, $_ or die; s/(.*)(\.pdf)$/$1-cropped$2/; open my $out, '>', $_ or die; binmode $in; binmode $out; while(<$in>) { s/(\/CropBox\s*\[\s*([^\[]+)\])/crop($1, $2)/eg; print $out $_; } } sub crop { my @offset = @offset; my @pos = map{int $_ + shift @offset} split /\s+/, $_[1]; my $crop = sprintf '/CropBox[%d %d %d %d]', @pos; my $blank = length($_[0]) - length $crop; warn $_[0] and return $_[0] if $blank < 0; return $crop.(' ' x $blank); }