Skip to content

ku-suke/flightbooks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

18f415b · Nov 10, 2023

History

6 Commits
Nov 5, 2023
Nov 5, 2023
Oct 29, 2023
Nov 7, 2023
Nov 7, 2023
Nov 5, 2023
Oct 29, 2023
Nov 7, 2023
Nov 5, 2023
Nov 5, 2023
Nov 5, 2023

Repository files navigation

FlightBooksオープンソース版

https://flightbooks.pub/ のビルド環境をローカルに特化して移植しました。

技術同人誌を気軽に書くためのPDF生成環境です

FlightBooksは技術書典をはじめとする技術同人誌を、気軽に書くためのツールセットです。 Markdownで章ごとに執筆し、config.ymlを書き換えるだけで、同人印刷所に入稿可能なPDFをビルドできます。 同様の執筆環境にはRe:VIEWやVivliostyleがありますが、Flightbooksの特徴としては、エンジニア(とくにWeb系の方)が細かいことを気にせず最低限の設定で同人誌のデータを作れることを目標としています。そのため、あまり自由なレイアウトを作り上げるには不向きです。

TODO

  • 引用、脚注のパーサー調整
  • ドキュメントをわかりやすく
  • Dockerhubにアップしてみたい
  • npm コマンドを定義する

はじめかた

  • 記事をbook配下のNN.mdに書く
  • 画像を埋め込む場合はbook/images配下に設置し、相対パスで埋め込む。
    • リモート画像はネットワーク環境により読み込めない(読み込み完了を待たずにPDF生成する)可能性がある
  • node generate_html.js を実行する
  • node generate_pdf.js を実行する
  • build/配下に成果物が出来上がる

直接実行とDockerイメージ

直接実行の場合、実行環境にNodeJS 20、適切なフォント*とPlaywright対応の実行環境をインストールする必要があります。

付属のDockerイメージには、これら必要な環境をインストールしてありますので、ぜひご活用ください。

docker compose build
docker compose run flightbooks npm install
docker compose run flightbooks node generate_html.js
docker compose run flightbooks node generate_pdf.js

印刷仕様・フォントについて

一般的な印刷所に比べ、同人印刷所は厳密な形式でないPDFも(納期に余裕をもって送れば)対応していただけることが多いです。本エンジンはトンボ(裁ち落とし線)の実装をそぎ落としました。そのため「仕上がりサイズのPDFデータです。文字だけで全画面画像がないので塗りたし対応不要です」という呪文を唱えれば受け取ってもらえる可能性が高いです。

画像については、高解像度(Retina@3x相当以上)をPNG形式で用意することが望ましいです。SVGは問題が起きやすいためPNGにしましょう。高解像度画像が手に入らない場合は「解像度不足でギザギザしても大丈夫です」と伝えましょう。CMYKとは何か知らない場合、あなたが扱っている画像はほとんどの場合RGB形式です。

同人印刷所で印刷可能なPDFを生成するには、フォントをファイル内に埋め込む必要があります。しかしChrome(のSkiaPDFエンジン)の制限により、Noto SansなどOTFフォントに対応していません。Flightbooksではアウトライン化することで対応していましたが、OSS版ではMgen+フォントを利用することで対応しています。template内に再配布の形で含めていますので、詳しくはライセンスファイルとDockerfileをお読みください。

ライセンスについて

本リポジトリのコードはMITライセンスとします。再配布物に関してはそれぞれのライセンスをご覧ください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published