『CSSページ組版入門 第4版』プリントオンデマンド版発売。技術書典5にも出品しますのでどうぞよろしくお願いします。

『CSSページ組版入門 第4版』の日本語版できあがりました。本書はAH FormatterのCSS組版機能をご利用いただくための解説書です。

CSS は,ブラウザ,エディタ,その他のWebアプリケーションで広く使用されています.CSSは,Webデザインのためだけではなく,広範な印刷アプリケーションやPDFとして配布される電子的なページ組版のスタイルシートとしても使えます.

CSS 2.1(と2.2)はページ媒体への出力サポートは最小の提供であり,ページレイアウト機能は力不足です.CSS3は,現在W3Cによって依然として開発中ですが,高度なページレイアウト,多段組,縦組,ハイフネーション,多言語の文字レイアウトなどの専門的な品質の組版に必要なさまざまな機能を定義しています.

CSSをXMLやHTMLのページ媒体デザインのために使うことはまだ一般的ではありませんが,CSS3の開発が進むにつれて増えるものと期待されています.

Antenna House Formatter は,XSL-FOとCSSのふたつのスタイルシートでレイアウトされたHTMLファイルを印刷用のページ上にレイアウトしてPDFを出力します.
W3CのCSS標準プロパティに加えて,ベースライン・グリッドなどの印刷用レイアウトや日本語レイアウトのために独自に拡張した追加プロパティ機能を使って,高度なレイアウト指定を施したページを作成できます.

さらに,独自開発のMathML 3,CGM,SVGの描画機能, PANTONE®スポット・カラーなど精細なグラフィックス指定,PDF/A,PDF/X,PDF/UAなど多用途なPDF作成機能を提供しています.

多くの人はブラウザ上のWeb制作では CSS に精通しており,その中でも非常に精通している人もいれば,それ程でもない人もいます.しかし,ページ組版に CSS を使用するのにあたって精通している人はほとんどいません.本書は,既にCSS を知っているが,ページ組版のために CSS を使用したことがない人を対象として,Antenna House FormatterのCSSページ組版機能を概説しています.

目次
はじめに
第1章 Web とページ媒体
第2章 ボックスによるレイアウト
第3章 オブジェクトの装飾
第4章 段落設定
第5章 段組
第6章 改ページ・ページコンテンツの維持
第7章 文字設定
第8章 MathMLとSVGグラフィクス
第9章 画像配置
第10章 表組
第11章 色指定
第12章 カウンタ
第13章 リスト
第14章 クロスリファレンス(相互参照)
第15章 脚注・傍注
第16章 PDFブックマーク
第17章 日本語文字組版
第18章 ページ設定
第19章 ヘッダとフッタ
第20章 PDF出力
セレクタと疑似要素
参照仕様
索引

販売
10月8日(月)開催の技術書典5に出品、販売いたします。また、アマゾンなどのオンラインストアからプリントオンデマンドで販売いたします。

第4版は英語版を2月のXML Pragueで配布、その後、英語のWebサイトなどで配布を開始しました。日本語版につきましても準備が整い次第、日本のWebサイトよりダウンロードで配布する予定です。

技術書典5
技術書典5の情報
アンテナハウスCAS電子出版は(い02)です。

オンラインストア
アマゾンより予約受付中

CAS-UBで注を作成する方法:脚注、章末注、巻末注

本の本文には注をつけることがあります。注は大きく、脚注、章末注、巻末注に分類できます。この記事では注の扱いを簡単に説明するとともに、CAS-UBで自動的に作れない章末注の編集方法をやや詳しく説明します。

注の種類とCAS-UBの対応

脚注は、一般的に、紙の本ではページの下(横組)または左ページの左端(縦組)に配置します。EPUBの場合は、一般的に、本文の中にそのまま小さめなフォントなど配置することになります。EPUBはまだ今後進化しますので、将来は変化する可能性もあります。CAS-UBでは、脚注専用のマークアップがあります。本文中に脚注のマークアップをすればEPUB/PDFの生成時にそれぞれ自動的に配置します。

章末注は、章毎に章の最後に注をまとめて配置します。CAS-UBには、残念ながら章末注に相当するマークアップはなく、自動生成はできません。章末注を作成するには手作業で編集する必要があります。

巻末注は、一冊の最後に注をまとめて配置します。CAS-UBで注のマークアップをすれば、巻末注を自動的に生成します。本文と巻末注の間に双方向のリンクを設定します。

【参考資料】CAS-UBのマークアップリファレンス

章末注の編集方法

章末注は一般は次のような構成になります。

1. 本文の中で注を付けた位置には注のための合い印を置く。
2. 章の末尾に注の一覧を置く。各項目の先頭には番号を付ける。これは箇条書きを使うと良いでしょう。
3.紙の本では合い印の番号と注の番号を対応付ける。EPUBでは本文から末尾の注へのリンクを置く。PDFでも同じようにリンクを設定すると便利です。

ここで一番難しいのはリンクを設定する方法です。次に、リンクの設定方法を説明します。

リンクは次の2つの要素からなります。

1.リンク先にID(識別子)を設定する。
2.リンク元には、リンクのマークアップ(ID参照)をする。

CAS-UBで自動生成するときは、上の1、2の処理を自動的に行います。しかし、手作業で編集するときは自分で編集する必要があります。次に簡単に説明します。

IDの設定

IDのマークアップは、”:#ID値” (ID値は記事単位でユニークな値)です。これにより任意の位置にID値を付けられます。

例えば、テキストの範囲にID値を付けるときは、

テキスト[[[:#id-value XXX]]]テキスト続き

とします。すると、HTMLは次のようになります。

テキスト<span id="u.201809120621.id-value">XXX</span>テキスト続き

u :ユーザーが付けたIDであることを示します。
201809120621 :記事の識別子(ファイル名のベースネームに相当)
id-value :IDの値

リンクの設定

リンク元にリンクを設定するのは、CAS-UBの編集メニューの「ID参照」を使うと便利です。
リンクを設定したい場所で編集メニューのID参照をクリックすると次のダイヤログが表示されます。

ID参照:のドロップダウンリストには、IDの一覧表が出ます。例えば次のようなリストです。

ユーザーが作成したIDはまとめて表示されていますので、リンク先を選択して、「CAS記法」ボタンをクリックします。すると次のようなマークアップが挿入されます。

リンク元:[[##u.201809120621.id-value|アンカー]]

HTMLでは次のようになります。

リンク元:<a href="201809120621.ent#u.201809120621.id-value">アンカー</a>

これにより、EPUB/PDFを生成したときにリンクが設定されます。

サンプルファイル
次にCAS-UBの出版物サンプルを用意しました。ご活用ください。

作成したEPUB
作成したPDF
元の出版物(CAS-UBの出版物バックアップ)
元の出版物のUBテキスト

PDF生成の新機能:行のベースライン合わせ 簡単な解説

8月23日定期メンテナンスで公開した新機能「PDF生成時の行のベースライン合わせ」について説明します。

これは、2段組のPDFを出力する場合、横組では左右の段、縦組では上下の段で行の位置を揃えるかどうかを設定するものです。

CAS-UBのPDF生成では、見出し、本文、前付け、後付け毎に「PDFレイアウトの詳細設定」で2段組にするかどうかを指定できます。次は、本文だけを2段組みとする設定例です。

8月23日に新しく追加されたのは、次の設定項目です。行のベースライン合わせを「しない」(既定値)から「する」(新設)に変更できるようになりました。なお、このベースライン合わせは「本文」が対象です。

次に簡単な例を示します。左がベースライン合わせを「しない」、右がベースライン合わせを「する」に設定しています。ベースライン合わせをしない場合、上段の図の後で行の位置が下の段とずれています。ベースライン合わせをすると行の位置が下の段と揃うようになります。

このように図版や見出しなどによる行のずれを補正できます。

出版物のページには図、表、大見出し、中見出し、小見出し、箇条書き、整形済み、コラムなどの様々なオブジェクトがあります。これをグリッドに揃えるにはスタイルシートでどのオブジェクトを対象にするかを細かく調整する必要があります。現在のレイアウト設定では、本文の中でも、整形済み(pre)、複数行の見出し、箇条書きなどは調整していません。

なお、ベースライン合わせは、AH Formatterの行グリッド機能(行グリッド axf:baseline-grid / CSS -ah-baseline-grid )を使っています。

AH FormatterのXSL/CSS拡張のページ(オンラインマニュアル)

10月8日(月)「アンテナハウスCAS電子出版」は、『技術書典5』に出典します。

来月10月8日にTechBooster/達人出版会の主催による『技術書典5』が、池袋サンシャインシティの展示ホールD(文化会館ビル2F)で開催されます。

2018年10月8日(祝・月)に技術書典5を開催します!

一般参加者向け正式サイトは9月10日オープンです。

先日配置が発表されましたが、「アンテナハウスCAS電子出版」の配置は、「い02」。入り口近くのとても良い場所のようです。

出品予定は次の書籍ですが、新しいタイトルも用意しておりますので、ぜひ、ご来場ください。お待ちしています。

PDF関係
PDF CookBook 第2巻PDFでこんなことができる!PDF Tool API によるPDF調理法
PDF CookBook PDFでこんなことができる!PDF Tool API によるPDF調理法
PDFインフラストラクチャ解説 第1.1版 電子の紙PDFとその周辺技術を語り尽す
XML関係
MathML数式組版入門Ver1.1
スタイルシート開発の基礎
XSL-FOの基礎【第2版】XMLを組版するためのレイアウト仕様
DITAのすすめ 【第3版】

『技術書典』は2016年6月25日に初回を開催以来、毎回大勢の人に参加していただき、大成功を重ね、規模を拡大してきています。あと、一ヶ月少々の準備期間。主催者は大変と思いますが、今回もぜひ成功して欲しいものです。

『技術書典』同人誌の展示即売会ということですが、CAS-UBで力を入れているプリントオンデマンド本の販売にも大変向いていると思います。プリントオンデマンド本は、現在、アマゾンやhontoを初めとするオンライン書店で販売されています。オンライン書店では、買い手は内容を事前に確認できない、というかなり大きな弱点があります。

しかし、そうかといってニッチなタイトルの本は、従来の方法で印刷・製本して書店流通で販売するのは困難です。その点、『技術書典』のように来場者が現物を手に取って内容を確認できる、というのは本を選ぶ上でも大きな大きなメリットがあります。

初回の様子:6月25日技術書典 大盛況でした。XMLの本にも大きな関心を寄せていただきました。

なお、ご来場が無理な方には、弊社にて直販もしておりますので、よろしければこちらをご覧ください。

アンテナハウス PDF/XML関連技術書POD版直販

電子書籍関連の制作・変換サービスなどのご案内

アンテナハウスでは、電子出版に関連して、主に制作で使用するシステム(ツール)を提供をしています。さらに、ツールを弊社の社内で使用して、次のようなサービスも承っております。

EPUB制作サービス

主に、CAS-UBを使用してのEPUBの制作を受け承ります。これまでの実績としては次のとおりです:
・Kindleなどで販売するEPUBの制作
官公庁向けの報告書などのEPUB化
・学会誌のEPUB化

PDF制作サービス

主にCAS-UBを使用してPDFを制作します。Microsoft Wordなどで作成したPDFと比べて、CAS-UBで制作したPDFは、日本語組版の基本をしっかり守ったPDF版面になります。

EPUBからPDFへの変換サービス

EPUBをPDFに変換します。こちらは、弊社のAH CSS Formatterのアプリケーションとして開発したEPUB to PDF 変換ツールを活用するサービスです。
CAS-UBで制作したEPUBではなくて、様々なツールで制作したEPUBを変換対象とします。このためPDFのでき具合(品質)がもとのEPUB制作方法によって大きく違ってしまうことが難点です。

こちらは、I Love software2 Blogに先日「EPUBをPDFに変換するときの注意事項」として問題を報告しておりますので、ご参照ください。次にポイントだけご紹介します。

・書店(ストア)から購入したDRMのかかったEPUBには対応しておりませんが、出版社や著者さんが持つEPUBがあれば、ご希望のページサイズ、フォントサイズ、ページのマージンなどでPDFに変換します。お値段は1冊/3000円+税となります。
・EPUBの内容をEPUBの持つCSSでの体裁を生かして自動組版でPDF化します。変換のお値段からも推測いただける通り、人手による調整は原則として一切行いません。

一番多く、困るのは、EPUBの中で改行”<br>”や空行”<p></p>”を多用して段落間の空きを作ったり、箇条書きなどで全角空白文字でインデントを作るパターン、次点で”pagebreak”(改ページ)をやたらに使うパターン、またはその複合型です。EPUBにこのような設定がありますと、無駄に白紙ページを量産したり、箇条書きの場合は、折り返した2行目の文字の並びが最初の行より飛び出しすぎていたり、後ろに行き過ぎていたり、変なところで意図しない改行ができたりなど崩れてしまいます。

こういうことがありますと、こんなはずではなかったという期待に沿わないPDFができあがってしまいます。ご注意ください。

過去の関連記事手持ちのEPUBをプリントオンデマンド用PDFに変換。 ツールと変換サービスを提供開始!

CAS記法のマークアップがなぜ必要なのかー図版とキャプションの例

CAS-UBは、原稿テキストに対して、簡易マークアップ(CAS記法)で、階層構造や文脈を付与します。

原稿などの編集にはMicrosoft Wordなどを使っている方が多いでしょう。Microsoft Wordは、画面に印刷レイアウト状態で表示しながら編集しますが、こうした方式はWYSIWYG(みたままを出力)といいます。WYSIWYGに慣れているユーザーにとっては、CAS-UBの簡易マークアップ方式には違和感を感じることと思います。

しかし、CAS-UBではどうしても簡易マークアップが必要です。そこで今日は簡易マークアップがなぜ必要かを図版とキャプションの例で説明したいと思います。

WYSIWYGではレイアウトを視覚的に行います。例えばMicrosoft Wordで次のようなキャプションをつけた図が入った原稿を編集しているとします:

原稿で図の前に一行増えますと、キャプションが次のページに送られて図とキャプションが別のページに分かれてしまいます:

皆さんはこのようなときどうしますか?

おそらく、図とキャプションが別ページになってしまうのを避けるために次のような編集をすることでしょう。

①原稿のテキストを編集して一行短くする
②キャプションの行が同じページになるように図を少し小さくする
③図とキャプションを選択して、改ページ位置の自動修正で「次の段落と分離しない」とする。(この例では図の前で改ページします。)(コメントにより7/2追加)

①、②のような操作はWYSIWYG方式特有です。構造という概念とは無縁です。ちなみに、この原稿を他のツール、例えばInDesignなどで印刷用に仕上げようとします。InDesignの文字の並べ方はMicrosoft Wordとは違うためページ区切りがずれます。Microsoft Wordの上のようなレイアウト操作は無駄だったということになります[1]。③は構造によるページ分割制御ですが、WYSIWYGツールで使う人は少数派のようです。

CAS-UBでは、①紙やPDFのような印刷媒体と、②WebページやEPUBという異なる特性をもつ2種類の媒体を想定して、原稿を再編集しないで両方にワンボタンで出力できます。PDFは自動組版ソフト(AH Formatter[2])によりサーバー上で自動生成します。

原稿に対して、図とキャプションが一体のものであるという構造情報を付与します。そして、この構造を利用してスタイルシートによって図とキャプションが別ページにならないように制御します。つまり構造でレイアウトを制御するのです。

CAS記法では図とキャプションが一体のものであるということを次のように表します。

[[[:fig =透かしの透明度(有無) 
{{WaterMarkSetOpacity-example.png}}
]]]

[[[:fig

]]]

は図のブロック

=透かしの透明度(有無) 

はキャプションです。

次に例を示します。

1. CAS記法を指定しないとき
図の次の行にキャプションを置きます。レイアウトは中央揃え・ゴシックとしました。


次図は上が透かしの透明度を0.2、下が同透明度0.7に設定した結果です。

{{:width=80% WaterMarkSetOpacity-example.png}}

:center 図 透かしの透明度(有無)

PDFを生成しますと次のように泣き分かれてしまいます。

2. CAS記法を指定したとき


次図は上が透かしの透明度を0.2、下が同透明度0.7に設定した結果です。

[[[:fig =透かしの透明度(有無)
{{:width=80% WaterMarkSetOpacity-example.png}}
]]]

PDFを生成しますと次のように、図の前で改ページが入ります。

注意
上の処理の問題点は、図の前で改ページするために大きな空きができてしまうことです。
これを回避するためには、図の前の本文テキストと図の位置関係を自動的に逆転処理するというレイアウト設定もできます。上の例では説明を分かりやすくするため図と本文テキストの入れ替えの設定をしていません。なお、現状では、自動的に図を小さくする処理はできません。

[1] 思い出しましたが、Microsoft Wordは、図の挿入方法によって図を小さくしたときの解像度の扱いが違うので、場合によっては有害です。(参考)Wordに埋め込まれたイメージ画像の解像度はどうなるか?
[2] AH Formatter

CAS-UB 昨日の定期メンテナンスでプリントオンデマンド(POD)用PDF出力機能を拡張しました

出版における、最近のはやり言葉はプリントオンデマンド(POD)なのですが、POD用のPDFと言っても実は結構いろいろあります。これは、印刷会社毎にPOD用の機械が違うためですが、PDFを作成する立場からはちょっと厄介です。

CAS-UBでは、いままでアマゾンのPODサービス仕様に準拠するPDFを出力していました。しかし、お客さんからhontoでPODをしたいという要望があり、今回hontoのPOD仕様を調べて機能追加しました。

○CAS-UBのPDF生成

POD版設定のボタンをクリックすると、現在のPDF設定(判型など)を基準にして、POD版設定を作ります。次の図で値は現在のPDF設定で、推奨値がPODにするときの推奨設定です。

○POD版設定

設定とPDFの見本は次のようになります。
・通常のPDF設定
裁ち切り:なし裁ち切り
トンボ :トンボを出力しない

①アマゾンのPOD
裁ち切り:天地と小口に裁ち切り
トンボ :トンボを出力しない

②hontoのPOD
裁ち切り:四辺に裁ち切り
トンボ :両方のトンボを出力する

○CASブロクPOD関係記事
CAS-UBのデモ動画 新ファイル : POD用PDFを用意して出版する
アマゾンPODの便利な利用法
オンデマンドブックストアでのPOD本の販売のこと
『XSL-FOの基礎 – XML を組版するためのレイアウト仕様』POD出版顛末記
PODで『XSL-FOの基礎』の出版を準備中です。
『PDFインフラストラクチャ解説』POD版とKDP版が揃い踏みとなりました
『Adventures of Huckleberry Finn』英語版POD本をつくりました
デジタル時代の本の再定義。 EPUBはPOD書籍普及のブレーク・スルーになるだろうか?
EPUBをアマゾンPOD用PDFに変換するツール、EPUB vs PDFの相違点など

一回使ったら止められない CAS-UBの超便利機能 UBテキストのご紹介

今年発売の『PDF CookBook』シリーズの制作では、UBテキストが大活躍です。2冊とも、アウトライン(章見出し、節見出し、項見出し)の作成はWordで行いました。アウトラインをCAS-UBにインポートして見出しを作った後のテキスト本文編集作業は、USテキスト形式で、ほとんど行なってしまいました。

さらに、Javaのサンプルプログラムを書いた担当者に、UBテキストを渡してプログラム部分を編集(重複している部分を最初に出現した箇所への参照に)してもらいました。UBテキストはwikiを拡張したものですので、プログラマであれば一目で内容が理解できるようです。

ご参考のために、下記に『PDF CookBook第2巻』の先頭部分のUBテキストをご紹介します。ちょっと長いですが、最初に簡単な解説をまとめます。

簡単な解説
(1) +で始まる一連の行ブロックは、UBテキスト全体、および各記事のヘッダラベルです。これはCAS-UBからUBテキストをダウンロードするときに自動的に付加される部分です。記事の階層構造(章⇒節⇒項)を表します。
(2) 各記事の本文にはCAS記法でマークアップしています。ここで使っている主なマークアップを紹介しますと:
・[[www.antenna.co.jp/ptl/]] :[[~]] URLリンクになります。
・[[[:index:key=あんごうかのアルゴリズム 暗号化のアルゴリズム]]] :単純な索引です。
・((:footnote [[https://ja.wikipedia.org/wiki/RC4]])) :脚注です。
・[[[:tbl =ISO 32000規定によるPDFバージョンと暗号アルゴリズム・暗号キー長の関係 ~ ]]] :表のブロック(表のキャプション)
・|=PDFバージョン|=使用できる暗号アルゴリズム|=暗号キー長| :表のヘッダ(セル)
・|PDF 1.3|RC4|40| :表の本体(セル)
・=狙い・効果 :見出し
・{{:width=50% GetCryptInfo-top.png}} :画像(width=50%は画像の幅指定)
・*ユーザーパスワードのみ設定されていると、… :箇条書きの1項目
・*[[[:mindex [[[:nodisp:prim API]]][[[:second setPassword() :暗号化されたPDF文書を読み込む際のパスワードを設定]]]]]] :親子の索引
・{{{ ~~~ }}} :整形済みブロック

CAS記法でマークアップの一覧表はこちらです

テキストエディタは使い易いものがいろいろあります。しかも、無料のものまであります。テキストエディタによる編集は、Webブラウザから操作するよりも、実に素早く便利です。

ここからUBテキストの例

+ updated: 2018-06-02T06:33:47+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: PDF CookBook 第2巻
+ name: publ

++++++++
+ updated: 2018-06-03T08:46:40+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: はじめに
+ name: i01-0001
+ ahax$parent: publ
+ ahax$entryClass: preface

『PDF CookBook』は、電子の紙PDFを企業向けのシステムで編集したり、加工したりする方法を紹介する本です。いわば、PDFをメイン素材とする料理本です。

(省略)

PDF Tool APIには無料でお使いいただける評価版を用意しています。次のページをご参照ください。

[[www.antenna.co.jp/ptl/]]

本書のプログラム例はJava で作成しています。本書で紹介しているプログラム例は次のページよりダウンロードしていただけます。

[[www.antenna.co.jp/ptl/cookbook/source/]]

(省略)

本書はシリーズ2巻目にあたります。第2巻では、PDF Tool APIの機能のうち第1章セキュリティ、第2章透かし、第3章しおりをテーマに取り上げています。シリーズ初巻には巻番号が付いていませんが、本書の本文中では『PDF CookBook』第1巻として参照しています。

++++++++
+ updated: 2018-06-03T08:46:40+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: セキュリティ
+ name: i02-0001
+ ahax$parent: publ
+ ahax$entryClass: chapter

ISO 32000-1:2008(以下、ISO 32000-1)は権限をもたないユーザーによるPDF文書へのアクセスを防止するための暗号化機能として、共通鍵(パスワード)による暗号化と公開鍵による暗号化の2種類を規定しています。本章の第1節ではパスワードによる暗号化の機能と使い方を説明します。PDF Tool APIは公開鍵による暗号化の機能はありません。

さらに、PDF Tool APIは、ISO 32000-1には規定されていない、独自の閲覧制限機能があります。第3節では独自の閲覧制限の使い方について説明します。

++++++++
+ updated: 2018-06-03T08:46:40+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: パスワードセキュリティ
+ name: i02-0002
+ ahax$parent: i02-0001
+ ahax$entryClass: section

PDF文書の内容はパスワードによって暗号化することで、権限をもたないユーザーによるアクセスを防止できます。ISO 32000-1の用語ではパスワードによる暗号化機能を標準セキュリティハンドラと呼びます。PDFは上位バージョンほど標準セキュリティハンドラの機能が強化されています。

標準セキュリティハンドラは[[[:index:key=あんごうかのアルゴリズム 暗号化のアルゴリズム]]]として[[[:index RC4]]]と[[[:index AES]]]のどちらかを選択します。当初から使われてきたのはRC4ですが、RC4には、既に脆弱性の点で問題が指摘されています((:footnote [[https://ja.wikipedia.org/wiki/RC4]]))。ASE 128の脆弱性は現時点では問題とされていないようです((:footnote [[ http://www.cryptrec.go.jp/topics/cryptrec_20110912_aes_cryptanalysis.html|128ビットブロック暗号AESの安全性について\\ http://www.cryptrec.go.jp/topics/cryptrec_20110912_aes_cryptanalysis.html]]))。

PDFのバージョンによって暗号化に使うキーの長さに制限があります。[[[:index:key=あんごうかのキーちょう 暗号化のキー長]]]はパスワードの文字数(パスワードの長さ)ではなく、標準セキュリティハンドラが内部的に計算して作成する値です。キーの作成方法はISO 32000-1で規定されています。

[[[:tbl =ISO 32000規定によるPDFバージョンと暗号アルゴリズム・暗号キー長の関係
|=PDFバージョン|=使用できる暗号アルゴリズム|=暗号キー長|
|PDF 1.3|RC4|40|
|PDF 1.4|RC4|40/128|

(省略)

|PDF 1.7アドビ拡張|AES|256|
|PDF 2.0|AES|256|

ISO 32000-1の仕様上は、PDF 1.4以降では暗号化のキー長は40ビット超128ビット以下の範囲で8の倍数単位で設定できます。しかし、PDFアプリケーションの多くは128ビットに固定しています。

]]]

PDF Tool APIでは暗号アルゴリズムの種類と暗号キーの長さを指定できます。

PDF Tool APIでは暗号化するときのキー長は40ビット、128ビット(256ビット)のどちらかを指定できます。一方、暗号を解読するときは8の倍数で可変のキー長の指定を受け付けます。

PDF Tool API V5では、AES 40ビットは設定できません((:footnote AESの仕様では暗号のキー長は128ビット以上とされています。ISO 32000-1でAES 40ビットを規定しているのは誤りの可能性があります。いずれにせよ新しく作成するPDF文書に40ビット暗号は使わないことを推奨します。)

(省略)

PDF Tool APIでは、入力PDF文書のバージョンと指定した暗号アルゴリズムと暗号キーの長さの組みによって、出力されるPDF文書のバージョンは、次表のようになります。

[[[:tbl =PDF Tool APIで出力されるPDF文書のバージョン
|=入力PDF文書のバージョン|=RC4 40|=RC4 128|=AES 128|=AES 256
|PDF 1.3|1.3|1.5|1.6|1.7
(省略)
|PDF 1.7|1.7|1.7|1.7|1.7
]]]

PDF文書には、[[[:index ユーザーパスワード]]]と[[[:index オーナーパスワード]]]のどちらか一方または両方を設定できます。ユーザーパスワードはPDF文書を開くためのパスワードです(詳細は[[##e.i02-0004.ユーザーパスワードによるセキュリティの設定]]を参照)。オーナーパスワードはPDF文書の利用権限を設定するパスワードです(詳細は[[##e.201805301211.オーナーパスワード]]を参照)。

ユーザーパスワードとオーナーパスワードは異なっている必要があります。

*ユーザーパスワードのみ設定されていると、ユーザーパスワードを入力してセキュリティの変更や解除ができます。
*オーナーパスワードのみ設定されていると、オーナーパスワードを入力してセキュリティの変更や解除ができます。
*ユーザーパスワードとオーナーパスワードの両方が設定されていると、(省略)

++++++++
+ updated: 2018-06-03T08:46:40+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: セキュリティ情報の取得
+ name: i02-0003
+ ahax$parent: i02-0002
+ ahax$entryClass: subsection

{{:width=50% GetCryptInfo-top.png}}

=狙い・効果

PDF文書のパスワードによる[[[:index:key=セキュリティのじょうほうをしゅとく セキュリティの情報を取得]]]します。

=処理の概要

PDF文書のセキュリティ設定は、PDF文書のトレイラーにある暗号辞書に記録されています。暗号辞書からユーザーパスワードの設定状況とオーナーパスワードの権限設定内容を取得して画面に表示します。入力PDF文書にユーザーパスワードが設定されているとき、PDF文書を開くには正しいパスワードの入力が必要です。

=PDF Tool APIの主な機能

*[[[:mindex [[[:nodisp:prim API]]][[[:second setPassword() :暗号化されたPDF文書を読み込む際のパスワードを設定]]]]]]

(省略)

*[[[:mindex [[[:nodisp:prim API]]][[[:second getType() :権限設定タイプ取得]]]]]]

=プログラム例

{{{
package cookbook;
import jp.co.antenna.ptl.*;
public class GetEncryptInfo {

(省略)

}
}
}}}

=プログラムファイル名

GetEncryptInfo.java

=入出力操作の例

{{:width=80% GetEncryptInfo.png}}

次は暗号化キー長256ビットのAESでオーナーパスワード設定したPDF文書の例です。

{{:width=80% GetEncryptInfo1.png}}

次は暗号化キー長256ビットのAESで添付ファイルのみ暗号化したPDF文書の例です。

{{:width=80% GetEncryptInfo-2.png}}

UBテキストによるフローは次のようになります。特に難しく考えることはなくテキストファイル(UBテキスト)のダウンロードとアップロードが追加になるだけです。

参考資料
[1] UBテキストの使用例 ― 記事の構成を変更する
[2] CAS-UBで編集中の出版物をダウンロードし、テキストエディタで編集し、元に戻す
[3] CAS-UBで編集中の出版物をダウンロードし、テキストエディタで編集し、元に戻す(2)UBテキスト
[4] CAS-UB V5にアップグレードしました。レスポンシブなWebページ生成や、UBテキスト機能の公開などが目玉です。
[5] CAS-UBで編集中の出版物をダウンロードし、テキストエディタで編集し、元に戻す

EPUB3電子出版におけるインターオペラビリティを考える

先日、CAS-UBのあるユーザーである出版社(版元)から、「これまで長いこと、CAS-UBで制作したEPUB3をBookLive!に配信してきたのですが、今度、これができなくなったのでCAS-UBで対応して欲しい。」という連絡をいただきました。

事情を確認しましたところ、「BookLive!に出すには、横書きではpackage.opfのspineにpage-progression-direction=”ltr”の設定が必要であり、設定しないとBookLive!側では入稿エラーになってしまう。今までは、取次がその版元のEPUB3データを修正してからBookLive!に配信していたが、大変なので版元の方で設定して欲しい」ということになったとのことです。

この根拠は、電書協ガイドver1.1.3のP.8に以下のような記載がある[1]こと、

パッケージ文書(Package Document / OPF ファイル)
ページ進行方向の遵守:コンテンツ文書やスタイルシートに記された「-epub-writing-mode」の指定にかかわらず、書籍データの「ページ進行方向」は、パッケージ文書の spine 要素に記された「page-progression-direction」の方向に従う。

さらに、取次から次のような連絡があったとのことです。

「電書協ガイドver1.1.3のP.29にある[sample code]にも「page-progression-direction」の記述があり、同梱されているサンプルファイル内のopfファイルにも「page-progression-direction」の記述がございますので、電書協ガイドver1.1.3に「page-progression-directionは必須」とは明記されておりませんが、電書協ガイドVer1.1.3では「page-progression-direction」の記述を入れることを推奨していると思われます。

「page-progression-direction」を記述していないと、ビューア側で独自に綴じ方向を判断することになりますので、「右綴じ」になるか「左綴じ」になるかはビューア側に任せる、ということになってしまいます。

そうなると、ビューアによっては御社の意図とは反対の綴じ方向になってしまうこともありますので、「綴じ方向が逆になっている」というユーザークレームに発展する恐れもございます。

なお、上記の文章は、電書協ガイドver1.1.3の引用だけでは趣旨が理解しにくいため、一部誤りを訂正のうえ無断転載させていただきました。取次さんも大変ですね。

ちなみにEPUB3.0.1の仕様では、この部分は次のようになっています[2]

page-progression-direction [optional]
The global direction in which the content flows.

Allowed values are ltr (left-to-right), rtl (right-to-left) and default.

When the default value is specified, the Author is expressing no preference and the Reading System may chose the rendering direction. This value must be assumed when the attribute is not specified.

これを見ますと、EPUB3仕様ではpage-progression-directionはオプション(省略可)となっており、しかも、省略されたらデフォルトと解釈しなければならないということです。従って、BookLive!がこうしたEPUB3を入稿エラーにするのは、EPUB3仕様違反となります。

また、電書協ガイドでも、page-progression-directionの該当箇所は、リーディングシステムに期待する動作の項ですから、EPUB3制作者への要求とはされていません。こうしたことから、BookLive!や取次の理解が間違っていると考えます。『「綴じ方向が逆になっている」というユーザークレームに発展する恐れ』って一体誰の発想なんでしょう? ブラックなジョークとしか思えませんが、もしかすると、BookLive!ってアラビア語とかヘブライ語のEPUB3も大量に配信されている世界? それともBookLive!はデフォルトを右開きにするかもしれない異次元空間?

さて、CAS-UBとしてはどうしたら良いでしょうか? 

考えてみますと、この件は「インターオペラビリティ」問題そのものです。

その典型的な例は、WebページとWebブラウザの関係、あるいは、PDF制作者とPDFリーダーの関係に見られます。Webの場合はWebページの文法が少々間違っていてもWebブラウザがなんとか表示できるようにする、という方法で普及してきた、といえます。PDFの場合も同じように少々間違ったPDFであってもAdobeリーダーができるだけ正しく表示しています。それはそれで困ることもありますが。

こうした例を見ますと、少々間違っていても読み手が対応するというのが、概ね利便性が高くなりますし、一般に広く成功を収める秘けつかもしれません。しかし、これは言うのは易しいのですが、リーダーを作る側に相当な体力が要求されます。ビジネスの成功は技術ではなく体力と気力によってもたらされるのが真実かもしれません。BookLive!のような正しいものを拒絶するというのは商売がへたなのでしょう。

(今回の場合、CAS-UBが作るEPUB3は仕様上は正しいですので、上の論点とは若干ズレがあります。念のため。)あまり仕様論・原則論にこだわらない解決策を考えようかと思案しております。

2018/6/22追記
2018年6月21日の定期保守更新にて、下記の仕様変更を行いました。
EPUB生成で、横書の出版物の.opf ファイルの に page-progression-direction=”ltr” を常に入れるように仕様を変更します。EPUBの仕様では、横書のとき page-progression-direction=”ltr” は省略可能ですが、省略を許していない販社があることへの対応です。

この問題は、CAS-UBで当面アラビア語やヘブライ語のような右から左に書く言語のEPUBを作れなくなるという制限が生まれることです。しかし、実際に問題になることはないでしょう。
定期保守更新の全体

[1] 『電書協 EPUB 3 制作ガイド ver.1.1.3』(2014/11/01(2015/01/01 更新、日本電子書籍出版社協会)「リーディングシステムに期待する動作」の一部の記述内容
[2] “EPUB Publications 3.0.1 Recommended Specification 26 June 2014”(International Digital Publishing Forum)3.4.12 The spine Element

『PDF CookBook 第2巻』を6月中旬発売します。第2巻はセキュリティと透かしがメインテーマです。

CAS電子出版は『PDF CookBook第2巻』を6月中旬に発売します。本書は、『PDF CookBook』は、電子の紙PDFを企業向けのシステムで編集したり、加工したりする方法を紹介するPDFの料理本シリーズの2冊目です。

2018年08月24日 第2巻全文(Web版)をウエブサイトにて公開しました:『PDF CookBook 第2巻』(HTML)

第2巻では、PDFのセキュリティ設定や解除、PDFの透かしの設定や応用、しおりの追加や削除などのテーマを取り上げています。各機能の役割や目的、見込まれる効果の紹介と、利用例のサンプルプログラムとその結果例を項目ごとに載せています。

プログラミングがわからなくとも、PDFの機能についてなぜその機能があるのか理解を深めることができますし、開発者はサンプルプログラムを自分の環境で試すことができます。

PDFは米国のアドビ社が開発したものですが、PDFの仕様書はアドビ社からISO-International Organization for Standardizationに移管され、2008年にISO 32000-1:2008という国際標準となりました。こうして、PDF文書を作成したり、利用したりするアプリケーションは誰でも開発・提供できるようになっています。現在、さまざまなアプリケーションから大量にPDF文書が生み出されて流通しています。例えば、Microsoft Officeには10年ほど前からPDF形式保存機能があり、また、Windows 10にはPDF出力ドライバーが標準で付いています。主要なブラウザはPDFを表示する機能を内蔵しています。このように、この10年でPDFを作成・表示する環境は著しく進化・充実しています。これからはPDFを紙のように手軽に簡単に加工したいという需要がますます大きくなるでしょう。

本書では企業向けシステムの企画・営業担当者から開発者まで幅広い層にPDFの活用法をご理解いただけるよう、最初にできるだけ図版で料理のイメージを表すようにしました。包丁としては、アンテナハウスのPDF編集・加工ライブラリ「PDF Tool API」を前提としています。なお、本書ではISO 32000-1:2008で作成できるPDFの機能のうち、PDF Tool API V5がサポートしている範囲に限って説明しています。PDFの仕様で定められていることのすべてを網羅している訳ではありません。あらかじめご了承ください。

PDF Tool APIには無料でお使いいただける評価版を用意しています。また、本書のプログラム例はJavaで作成しています。本書で紹介しているプログラム例はダウンロードサイトより提供しています。

目次
はじめに
第1章 セキュリティ
1.1 パスワードセキュリティ
1.1.1 セキュリティ情報の取得
1.1.2 ユーザーパスワードによるセキュリティの設定
1.1.3 暗号化の対象
1.1.4 セキュリティの解除
1.2 オーナーパスワード
1.2.1 オーナーパスワードの設定
1.2.2 印刷不可セキュリティの設定
1.2.3 変更不可セキュリティの設定
1.2.4 内容のコピーの制限
1.2.5 アクセシビリティのための内容の抽出の制限
1.3 閲覧制限
1.3.1 閲覧期間の制限設定
1.3.2 閲覧場所の制限設定
1.3.3 閲覧制限設定をするページ範囲
第2章透かし
2.1 透かし(共通)
2.1.1 透かしの配置の設定―その1
2.1.2 透かしの配置の設定―その2
2.1.3 透かしを配置するページの範囲
2.1.4 透かしのZオーダーの指定
2.1.5 タイリング設定
2.1.6 透かしの不透明度
2.1.7 透かし表示条件:画面表示
2.1.8 透かし表示条件:印刷
2.1.9 透かしの名前
2.1.10 透かしの削除
2.2 テキスト透かし
2.2.1 テキスト透かしの挿入
2.2.2 透かしの改行
2.2.3 フッターにページ番号追加
2.2.4 透かしの挿入角度
2.2.5 フォントの設定
2.2.6 フォントの埋め込み設定
2.2.7 透かしの文字色
2.2.8 透かしの輪郭線
2.3 画像・PDF透かし
2.3.1 画像透かしの挿入
2.3.2 PDF透かしの挿入
2.3.3 透かしの枠線
2.3.4 倍率の設定
2.4 色透かし
2.4.1 色透かしの挿入
第3章しおり
3.1 しおりの情報取得・作成・編集・削除
3.1.1 しおり情報の取得
3.1.2 しおりの追加
3.1.3 しおりの削除
索引

紙版(プリントオンデマンド)
出版社: アンテナハウスCAS電子出版
発売日:2018年6月中旬(予定)
著者:アンテナハウス株式会社
販売形式:プリントオンデマンド版
サイズ:B5判 横組み
ページ数:126ページ
価格(税込):1,728円 6月18日アマゾンで発売になりました。
ISBN:978-4-900552-61-6
販売店:アマゾン(POD版)その他Web書店で発売予定

デジタル版(PDF)
販売形式:PDF版(DRMなし)
ページ数:126ページ
価格(税込み):864円 6月8日発売
販売店:アンテナハウス・オンラインショップ(PDFのダウンロード)※PDF版のダウンロードは自社ストアのみです。

[1]『PDF CookBook』(第1巻)
[2]PDF Tool API V5