月別アーカイブ: 2013年10月

白紙のPDF

需要があるかは謎ですが,白紙のPDFを置いてみます。改造や再配布はご自由にどうぞ。
※ B列は,日本で一般的なのは「JIS」の方です。

これらが必要になる場面としては例えば,「幾人かの原稿をまとめて一つのPDFにしたいのだけど,各人の1ページめは必ず奇数ページにこないといけない」ような状況を想定しています。花子さんの原稿が3枚で次に太郎さんの原稿を置く場合,間にこの白紙PDFを挟めば良いかと。pdftk でやるならこうですね。

pdftk hanako.pdf blanksheet-a4-portrait.pdf tarou.pdf cat output all.pdf

Acrobatを持っている場合は新規空白ページを作成する方法(Acrobat X)でも可能なようですが,スクリプトでだーっとやりたい場面が多いので。

なお,これらのPDFは,Ruby と libHaru を用いて以下のようなスクリプトで生成しました。

#!/usr/bin/env ruby
require "hpdf"

sizes = %w(A4 A3 A5 B4 B5 LETTER)
directions = %w(PORTRAIT LANDSCAPE)

directions.each do |direction|
  sizes.each do |size|
    pdf = HPDFDoc.new
    page = pdf.add_page
    page.set_size(eval("HPDFDoc::HPDF_PAGE_SIZE_#{size}"),
                  eval("HPDFDoc::HPDF_PAGE_#{direction}"))
    pdf.save_to_file("blanksheet-#{size.downcase}-#{direction.downcase}.pdf")
  end
end

(2017-05-15 追記)
上記スクリプトは libHaru を用いていましたが,libHaru を Ruby から使う場合は hpdf.so が Ruby のバージョンに依存してしまうのがちょっとつらいところです。

Prawn は Pure Ruby なのが良いですね。というわけで最近PDF生成関係のスクリプトを Prawn で書き直したりしています。A4ポートレートの白紙PDFをPrawnで生成するとしたらこんな感じでしょうか。

#!/usr/bin/env ruby
require "prawn"

Prawn::Document.new(:page_size   => 'A4',
                    :page_layout => :portrait).render_file("hakushi-a4.pdf")

Linuxでxlsxをxlsに変換

LibreOfficeが入っていれば,

libreoffice --headless --invisible --convert-to xls:"MS Excel 97" foo.xlsx

という感じで良いみたいですね。

毎月事務局から送られてくる学食の営業情報のxlsファイルを,htmlに適当にコンバートして公開するのをRubyとSpreadsheetライブラリでやっていたのですが,今月からxlsではなくxlsx形式に変わってしまって,かつSpreadsheetはxlsxに対応してないようなので,この手の変換が必要になりました。

ちなみに学食営業情報ページはこちらです