技術書典5のために、同人誌の総集編を作りました。
こえどらぐ発刊の「Linux Users」などに寄稿したもので、同じ書式ファイルを使ってLibreOffice Writerで作成している。
元になった原稿は、1ファイル8ページ分。
これらが溜まってきたので、1冊にまとめる方法。
6ファイルあるのでそれぞれを章として、1章〜6章の総集編を作る。
必要な作業
- 連結する
- 表紙・裏表紙つける
- 目次つける
なのだけれど、連結するのが苦心惨憺。
DTPソフトがいるが、Libre Office Writer はそういったものではないので無理がある。
連結する
手作業で連結
コピペで連結。
追加先のファイルの最後に改ページを入れて、追加元のファイルからコピー&ペースト。
問題
丁寧に個別対応していれば何とかなる。しかしファイルが増えるに従って操作の難易度が増えてくる。GUI操作なので精神的な強迫を受ける。
また、今回は同じ書式ファイルを使っているので問題ないが、別の書式ファイルを使った場合などの手法も探りたかったのでこの方法は使わないことにした。
OOCAT
$ wget http://downloads.sourceforge.net/project/ooopy/ooopy/1.11/OOoPy-1.11.tar.gz
$ tar -xf OOoPy-1.11.tar.gz
$ OOoPy-1.11/ooo_cat -o oootest.odt C90.DELive.odt C91.DELiveAssembly.odt
うまくいきそうだけれど、書式が崩れてしまった
そしてこれも、別々の文書書式を使ったものだと問題がありそうなのでこの方法も使わないことにした。
WordにはRD TOCというのがるらしい
作業のために最低必要なのは目次。目次を別ファイルで作ることができれば、それぞれの目次と章ごとのファイル、表紙をそれぞれPDFにし、結合したPDFファイルを得ればいい。
RD TOCは別ファイルから目次を作る機能。正に今回のための機能?
しかしながらLibreOfficeにはこの機能が無いみたい。残念!
Wordに読み込ませてという方法も考えられるが、書式が崩れる可能性を考えてこの方法も使わないことにした。
PDFで連結
目次だけを別の方法で作ることにした。
今回使ったのは、本文は単にPDFで連結する方法。
まず、 LibreOffice Writerで個別にファイルを開き、ページの表示だけを消す。
「書式」-「ページ」-「ページ」-「ページ番号付け」を「なし」にする。
PDF連結するときはPDFtkを使う。
$ pdftk \
A=C90.DELive.pdf \
B=C91.DELiveAssembly.pdf \
C=C91.DELiveController1.pdf \
D=C92.DELiveController2.pdf \
E=C93.5DELiveController3.pdf \
F=C93.DEAero.pdf \
cat A B C D E F \
output DELiveAllHonbun.pdf
目次をつける
pandocを使ってMarkdownにしてからタイトルを抽出する。
pandocをインストール
$ sudo apt-get install pandoc
1つの章ファイルから目次を抽出してファイルにする
$ pandoc C93.DEAero.odt -o hoge.md --atx-headers
$ grep "^#" hoge.md >> hoge.toc
--atx-headers は、ATX形式の見出しにするもの。
これを、章ファイルごとに行う。
できたhoge.toc を元に、LibreOffice Drawで表紙・目次ファイルを手で作り、pdfで保存。
- 1枚目:表紙
- 2枚目:目次
- 3枚目:後書き
- 4枚目:裏表紙・奥付
LibreOfficeではA4で作成したが、本文はA5なのでサイズを合わせる。
$ pdfjam --outfile cover-20181006-a5.pdf --paper a5paper cover-20181006.pdf
----
pdfjam: This is pdfjam version 2.08.
pdfjam: Reading any site-wide or user-specific defaults...
(none found)
pdfjam: Effective call for this run of pdfjam:
/usr/bin/pdfjam --outfile cover-20181006-a5.pdf --paper a5paper -- cover-20181006.pdf -
pdfjam: Calling pdflatex...
pdfjam: Finished. Output was to 'cover-20181006-a5.pdf'.
review出力pdfの微妙なサイズ違いを修正する
$ pdfinfo G5DEAllhonbun.pdf
Creator: pdftk 2.02 - www.pdftk.com
Producer: itext-paulo-155 (itextpdf.sf.net-lowagie.com)
CreationDate: Sun Oct 7 21:50:13 2018
ModDate: Sun Oct 7 21:50:13 2018
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 48
Encrypted: no
Page size: 428 x 604 pts
Page rot: 0
File size: 12955844 bytes
Optimized: no
PDF version: 1.4
$ pdfinfo cover-20181006-a5.pdf
Creator: TeX
Producer: pdfTeX-1.40.16
CreationDate: Sun Oct 7 23:51:39 2018
ModDate: Sun Oct 7 23:51:39 2018
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 4
Encrypted: no
Page size: 419.528 x 595.276 pts
Page rot: 0
File size: 2284647 bytes
Optimized: no
PDF version: 1.5
ということで、念の為サイズを合わせておく。
$ pdfjam --outfile G5DEAllhonbun-a5.pdf --paper a5paper G5DEAllhonbun.pdf
本文にページ番号をつける
https://qiita.com/SaitoTsutomu/items/5a7bb9ae2e60b327a311
ここにある、addpageを使いました。
addpage には、Python3.6以上が必要らしいです。使えるようにする設定はこちらにまとめました。
「addpageを使うためにUbuntu16.04にPython3.6をインストール」
https://qiita.com/nanbuwks/items/ee59ea79613dc43b0972
$ addpage -o G5DEAllhonbun-a5-addpage.pdf G5DEAllhonbun-a5.pdf -s 3
として、ファイルの3枚目から3,4,5というページ番号が付くようにしました。
表紙・目次ファイルと本文ファイルを合体
$ pdftk A=cover-20181006-a5.pdf B=G5DEAllhonbun-a5-addpage.pdf cat A1 A2 B A3 A4 output G5DEAll-a5.pdf