タグ別アーカイブ: AH Formatter

[AH Formatter] Markdown形式の原稿を CSS組版により PDF文書に変換するための事例紹介

AH Formatter の導入事例紹介ページに有限会社フェリックス・スタイル様の事例「AH Formatter を用いた Markdown-PDF 変換事例紹介」を掲載しております。

事例紹介ページにある PDF文書では、Markdown形式の原稿を『AH Formatter』の CSS組版により、表紙や目次、ノンブルなどを備えた PDF文書へと変換するフローが詳解されております。

また、この事例紹介の PDF文書も Markdown原稿から作成されており、その作成に用いたソースファイル一式も GitHub にて公開しておりますので、実際に Markdown原稿から CSS組版を利用した PDF へのビルドをご体験いただけます。是非ご覧ください。

なお、主に海外の方に向けて、ソースファイルは英語版もご用意しております。
Markdown-PDF
https://github.com/2SC1815J/md2pdf/tree/en (English Version)
 
 
AH Formatter ロゴ

『AH Formatter』の評価版は以下のページよりお申し込みいただけます。是非、お試しください。
AH Formatter 評価版のお申し込み

XSL-FO の基本仕様と『AH Formatter』の拡張機能をお試しいただけるよう「サンプル FO 集」もご用意しています。

『AH Formatter』についてお問い合わせがございましたら sis@antenna.co.jp 宛てにご連絡ください。


海外出展情報 その2

DITA North America (続き)

<< DITA North America(前回)
セッションの合間には、展示室で出席者と出展者が集まる休憩がありました。 この会議の出展者の大部分はアンテナハウスのパートナーでしたので、彼らと再会し、今後のソフトウェア機能を確認し、パートナーシップを強化するための様々な機会について議論する絶好の機会でした。 既存のお客様はもとより初めての訪問者も、当社の製品に対する要望、問題を解決する方法についての質問、当社が提供するより多くの他の製品を知ることに興味を持っていました。 全体として、今年のカンファレンスでの参加率、ブースでの関心の高さ、そしてパートナーやクライアントとの興味深いディスカッションを通じて、満足のできる結果であったと思います。

さて4月は展示会がとても多い月です。ちょうど今ネバダ州のラスベガスで Xplor International に出展している最中です。また4月29日にはアラバマ州ハンツビルで開催の AIA Product Support に参加する予定です。いずれもお客様、パートナーとの情報共有の大変良い機会となり、アンテナハウスが健全で成長し続けている企業であることを示す良い機会となることでしょう。

今朝ほど丁度 営業担当から、Xplor International の報告が届きましたので、合わせてご紹介いたします。

Xplor International

アンテナハウスが CCM およびデジタルドキュメントの専門家のための Xplor19 に参加するのは今年で3年目です。 Xplor19 は今年から大きくイベントの変更がありました。 過去10年間、フロリダ州オーランドで開催された単独のイベントだったのですが、今年 Xplor は、ISA International Sign Expo との提携を発表し、カンファレンスをネバダ州ラスベガスに移しました。 今後、カンファレンスの開催は、オーランドとラスベガスで交互で行われます。 2つのカンファレンスは独立したイベントとして運営し続けますが、出席者は両方のイベントの特典を体験、享受できるよう、特別なオファーや招待状を受け取ることができます。 今年は開催のスタイルにも変更がありました。イベントは夕方に始まり、一般的なセッションのトラックは出展者と同じホールで行われました。一方ビジネステクノロジー、デリバリーテクノロジー、マーケティングテクノロジーは他のホールで行われました。

アンテナハウス(海外サイト)
http://www.antennahouse.com/

http://rainbowpdf.com/


海外出展情報 その1

DITA North America

4月14日から17日にかけて、アンテナハウスはノースカロライナ州ダーラムで開催された CMS/DITA North America に、スポンサーとして出展しました。 これは、情報開発管理センター(CIDM)が主催する第21回目の ContentManagement Strategies/DITA North America conference です。 この会議では、メタデータと分類法、パーソナライズされたコンテンツ配信、インテリジェントコンテンツ、ケーススタディ、DITA 2.0 と軽量 DITA、および構造化オーサリングなどのテーマを扱う4つのセッションが同時開催されました。 この会議には、DITA 規格に関する質問に応じたり、問題解決に貢献した DITA 有識者も多数参加されていました。 参加者はまた、実地体験をすることもできます。Technology Test Kitchen では、興味のあるツールを試したり、既存のツールを使って新しいトリックを習得したりできます。

今年は Technology Test Kitchen で、XSL-FO と CSS を使って PDF 出力をするデモを行いました。 PDF 変換用の DITA のスタイル設定に関しては、最もよく使用されるスタイルシート言語は XSL Formatting Objects(XSL-FO)です。これは、DITA Open Toolkit(DITA-OT) が PDF 変換の主要パスとして XSL-FO を使用しており、いくつかのFOプロセッサをサポートしているためです。しかし、DITA-OT できれいな PDF を作成する別の方法もあります。Cascading Style Sheets(CSS)です。 CSS はその単純さのために印刷に広く使用されるようになり、新しい DITA 採用者は従来の XSL-FO の代わりにこの代替パスを採用することもあります。 AH Formatter は XSL-FO と CSS の両方をサポートしているので、お客様には選択肢があります。このテストキッチンでは、XSL-FO と CSS の違いについて説明し、さまざまなプラグインオプション、カスタマイズされたスタイルシートを利用し、DITA-OTAH Formatter を使用して各プロセスがどのように機能するかを示しました。そして彼らの要求に基づいていくつかのライブデモをしました。質疑応答の時間を設け、既存のお客様との間で非常に興味深い議論があり、どのフォーマット方法がそれぞれのお客様にとって最適であるかについて可能性を探ることができました。

アンテナハウス(海外サイト)
http://www.antennahouse.com/

http://rainbowpdf.com/

海外出展情報 その2 >>


DITAをPDFに(PDF5-ML)

昨日 は DITA を docx に変換する DITA-OT プラグインのことを書きましたが、やはりいまだにマニュアル系は PDF が主流です。

DITA-OT には DITA で書かれたインスタンスを PDF にするためのスタイルシート(プラグイン)が標準で入っているのですが、残念ながら機能的にしょぼくて、あまり積極的に使いたいと思うようなものではありません。多くの人がまず「日本語が文字化けするんだけど」という問題にぶつかります。

アンテナハウスはこれに替わるプラグインを公開しました。”PDF5-ML”といいます。
https://github.com/AntennaHouse/pdf5-ml

“ML”というのは”Multiple Language”の略で、その名のとおり多言語対応を得意としています。
ひとつの DITA トピックファイルの中に複数言語が混在することがありますが、このような場合でも言語毎のフォント選択をきっちり行うことができます。
DITA 採用時にぜひお試しいただければと思います。

アンテナハウスはこのプラグインのカスタマイズ作業も請け負っております。PDF 生成でお悩みの方はご一報下されば幸いです。


DITAからWord(docx)への変換

最近「DITA から Word へ変換することはできないか」というお問い合わせをいただくようになりました。
日本で英語マニュアルを作って、それを各国の販社に送り、販社側でローカライズするには Word が便利なのでしょう。

Word へ変換する DITA OTプラグインはあるにはあります。
https://github.com/jelovirt/com.elovirta.ooxml
しかし、もう2年くらいメンテナンスがされておらず、ちょっと商用では使えないレベルのものです。docx の仕様があまりにも難しいというのが理由のひとつだと思われます。
XSL-FO の仕様は PDF にすると500ページ程度に対して、Word の Open XML File Format の仕様は PDF でなんと6700ページ。全部読み切った人はいるのでしょうか(^^;

ところがところが、昨年アンテナハウスはこの変換プラグインを開発しちゃいました。しかもオープンソースで、どなたでも自由にお使いいただくことができます。
https://github.com/AntennaHouse/ah-wml

そして、来る3月6日に DITAコンソーシアムジャパン主催の「DITA Festa 京都」の開催が計画されているようで、その中で上記のようなことをテーマにしたセッションがあるみたいです。
関西方面でご興味がある方は今のうちに予定に入れておいてください。

DITA


海外出展情報 その2

Tekom 2018

The European Association for Technical Communication  (欧州技術通信協会)は、11月13日から15日までドイツのシュトゥットガルトで開催される TCWorld aka Tekom  という年次の会議を主催しました。Tekom Europe は、世界最大のテクニカルライターの専門家向けの協会です。

Tekom では、PDF が今日使用されている最も一般的なドキュメントフォーマットであり、PDF を中心としたアンテナハウスの製品には常に大きな関心が寄せられています。 アンテナハウスは、AH Formatter V6.6Office Server Document Converter V7.0PDFXML変換ライブラリV2.0web Interface for AH FormatterWeb Interface for OSDC Regression Testing System V1.4 などの製品を紹介しました。

Tekom の参加者のあいだでは、XSL-FO は最適な組版ストラテジーとして選択されていますが、またページ組版としてのCSSにも非常に興味が持たれています。 AH Formatter V6.6 では、CSS の機能が改善されました。また、Formatter と CSS の併用に興味がある開発者のために、弊社ウェブサイトで CSS ページ組版入門 第4版 を公開しています。またプリントオンデマンド版がAmazon.co.jp から販売開始されました。

アンテナハウス(海外サイト)
http://www.antennahouse.com/

http://rainbowpdf.com/


海外出展情報 その1

DITA Europe

昨年の11月5日から6日にかけて、アンテナハウスはオランダのロッテルダムで開催された CMS/DITA Europe でスポンサーとして参加しました。 第14回目にあたる Content Management Strategies/DITA Europe であり、2日間にわたって DITA に関する貴重な情報がふんだんに提供されました。会議では、参加者は Technology Test Kitchen と呼ばれるセッションで、発表者が新しい DITA ツールまたは CMS の使用方法を説明した後に、一緒に実地経験を積むことができました。

アンテナハウスは、DITA Open Toolkit 用の Antenna House PDF5-ML プラグイン を使用して、1つの DITA 文書に複数の言語をフォーマットする方法についてのデモを Technology Test Kitchen で発表しました。 PDF5-ML プラグインは AH Formatter と連携して動作するように設計されており、DITA Open Toolkit が提供するデフォルトの PDF プラグインよりも使いやすく、変更や管理が簡単で、尚且つパワフルです。 参加者は、PDF5-ML プラグインに大きな関心を示し、多言語ドキュメントを修正して PDF 出力を生成することがどれほど迅速かつ簡単であるかを体験しました。

セッションの合間には、参加者と席者と出展会社が集い友好を深めるための休憩室が設けられていました この会議の出展会社の多くはアンテナハウスのパートナーであり、また参加者の多くは AH Formatter のユーザでしたので、彼らと再会し、ソフトウェアの新機能を紹介し、パートナーシップを強化すべく今後のプランについて話し合う絶好の機会であったと思います。

アンテナハウス(海外サイト)
http://www.antennahouse.com/

http://rainbowpdf.com/


アンテナハウス製品におけるJava 11以降の動作確認と動作保証

2019年1月でJava 8のサポートが切れます。
そして、2018年9月下旬、Java 11が予定通り出荷され、お客様からの問い合わせが入っていますので、アンテナハウス製品におけるJava 11以降の動作確認、動作保証について、現段階での方針をお知らせします。

Oracleが、これまで無償で配布してきたJDKのサポートを有償化するという話が出て、いろいろと混乱した話が飛び交いましたが、OpenJDKを使えば、無償で使えます。
OpenJDKは、OracleからJDKのソースコードの提供を受けて、いろんな企業や団体がビルドして無償で配布しているもので、企業や団体によって、有償サポートがあったりなかったり、サポート料やサポート期間もマチマチです。
この辺は、Linuxに各種のディストリビューションがあるのと似ています。
詳しい話は、参考に挙げた記事やサイトをお読みください。

アンテナハウスは、OpenJDKの中でも、LTS(Long Term Support)バージョンのOpenJDKを、無償で、最低4年間は、セキュリティやバグフィックスのアップデートを提供するといっているAdoptOpenJDKによって、動作確認と動作保証を始めています。
AdoptOpenJDKのJava 11は、最低、2022年9月までアップデートが提供される予定です。

AdoptOpenJDK

AdoptOpenJDK Support

First Availability End of Availability [1]
Java 8 (LTS) March 2014 At Least Sep 2023 [2]
Java 9 Sept 2017 March 2018
Java 10 March 2018 Sept 2018
Java 11 (LTS) Sept 2018 At Least Sept 2022 [2]

AdoptOpenJDKでダウンロードできるバイナリのうち、アンテナハウスが動作確認、動作保証の対象とするJava 11は、「OpenJDK 11 Hotspot」です。
Hotspotは、元々Sun(Javaの本家)が作ったJVM(Java仮想マシン)です。Oracleがメンテナンスや機能拡張をしています。これがリファレンスと考えてよいので、このJVMのみ動作保証対象にする予定です。
理由は、JVMは多くの実装があるので、やり出したら、きりがないからです。
たとえば、上記サイトには、Java 11でも、
「OpenJDK 11 with Eclipse OpenJ9」
がありますが、OpenJ9は、IBMが開発したJVMです。これは動作保証の対象にはしない予定です。
アンテナハウス自身が、動作確認、動作保証をするJVMを限定することについては、何卒、ご了承ください。

現在、アンテナハウス製品で使われているJavaのコードは、Java 8のコンパイラでビルドして出荷していますが、動作確認を始めた製品では、いずれも、問題なくJava 11で動いています。
アンテナハウスの製品のうち、Javaを使っている製品については、いずれ、各製品のウェブページで、動作確認が取れたことをお知らせしていく予定です。
なお、Java 8のコンパイラからJava 11のコンパイラに切り替える時期は未定です。
Java 11のコンパイラでビルドすると、Java 11の実行環境が必要になり、Java 8では動かなくなることが予想されます。
2019年1月でJava 8のサポートが切れるといっても、すぐ、Java 11に乗り換えられるお客様は、そんなに多くないだろうと考えていますので、2019年早々のコンパイラの切り替えは考えていません。
Javaを使っているアンテナハウス製品のリリース時期によりますが、今後、1年から数年をかけて、コンパイラを切り替えていくことになるでしょう。

参考:
【GlassFish勉強会レポート】各JDKベンダの動向を知ってJava 11に備えよう
2018年10月5日
杉山貴章

Javaは今も無償です

Oracle Java SE サポート・ロードマップ
(2018年 9月25日更新)

Time to look beyond Oracle’s JDK
Monday, 3 September 2018


Breaking Paragraphs into Lines

Breaking Paragraphs into Lines は、Donald E. Knuth と Michael F. Plass の行分割に関する論文で、40年近く前のものです。ここで示されているアルゴリズムは、パラグラフ全体を Box/Glue/Penalty という要素(Paragraph Item)でモデル化して、行分割位置を決定するものです。処理の流れは次のようになります。

  1. アプリケーションが、文書から Paragraph Items を構築する。
  2. 分割可能位置に対して、そこで行分割したときの不具合度を示すデメリット値と呼ばれる値を計算する。
  3. もっともデメリット値の合計の少ない位置を選択し、行分割位置とする。

Paragraph Item の要素 Box/Glue/Penalty は、それぞれが幅を持っています。

  • Box は常に幅が確保される。伸縮性はない。
  • Glue も幅が確保されるが、そこで分割が起こったとき幅がなくなる。Glue には伸縮性がある。
  • Penalty はその逆で、通常は幅が確保されないが、そこで分割が起こったとき前の行末にその幅が確保される。Penalty に伸縮性はない。また、行分割の起こり易さを調整するペナルティ値という値を持っており、分割不可では ∞ を、分割必須では −∞ を与えることになっている。 ハイフネーションは Penalty を利用して実現されている(通常の Penalty と区別するために Flagged Penalty と呼ばれる)。

次のような文書(論文に出てくるグリム童話)を例に、このアルゴリズムがどのように行分割位置を決定するのかをざっと見てみましょう。

fig-12

これから次のような Paragraph Items が構築されます。
x は要素、t は要素の種別、w は要素の幅、y は伸ばせる幅、z は縮められる幅、p はペナルティ値を示しています。

x0 empty box for indentation t0 = box w0 = 20
x1 box for ‘In’ t1 = box w1 = 17.44
x2 glue for space U+0020 t2 = glue w2 = 4.54 y2 = 5 z2 = 2
x3 box for ‘old’ t3 = box w3 = 25.68
x4 penalty for hyphenation t4 = flagged-penalty w4 = 7.12 p4 = 100
x5 box for ‘en’ t5 = box w5 = 19.44
x6 glue for space U+0020 t6 = glue w6 = 4.54 y6 = 5 z6 = 2
x7 box for ‘times’ t7 = box w7 = 43.7
x8 glue for space U+0020 t8 = glue w8 = 4.54 y8 = 5 z8 = 2
x9 box for ‘when’ t9 = box w9 = 43.88
......
x24 glue for space U+0020 t24 = glue w24 = 4.54 y24 = 5 z24 = 2
x25 box for ‘lived’ t25 = box w25 = 38.54
x26 glue for space U+0020 t26 = glue w26 = 4.54 y26 = 5 z26 = 2
x27 box for ‘a’ t27 = box w27 = 8.78
x28 glue for space U+0020 t28 = glue w28 = 4.54 y28 = 5 z28 = 2
x29 box for ‘king’ t29 = box w29 = 35.5
x30 glue for space U+0020 t30 = glue w30 = 4.54 y30 = 5 z30 = 2
x31 box for ‘whose’ t31 = box w31 = 50.64
......
x51 box for ‘young’ t51 = box w51 = 49.76
x52 penalty for hyphenation t52 = flagged-penalty w52 = 7.12 p52 = 100
x53 box for ‘est’ t53 = box w53 = 21.84
x54 glue for space U+0020 t54 = glue w54 = 4.54 y54 = 5 z54 = 2
x55 box for ‘was’ t55 = box w55 = 29.82
x56 glue for space U+0020 t56 = glue w56 = 4.54 y56 = 5 z56 = 2
x57 box for ‘so’ t57 = box w57 = 17.7
x58 glue for space U+0020 t58 = glue w58 = 4.54 y58 = 5 z58 = 2
x59 box for ‘beau’ t59 = box w59 = 38.36
x60 penalty for hyphenation t60 = flagged-penalty w60 = 7.12 p60 = 100
x61 box for ‘ti’ t61 = box w61 = 11.56
x62 penalty for hyphenation t62 = flagged-penalty w62 = 7.12 p62 = 100
x63 box for ‘ful’ t63 = box w63 = 21.82
......
x143 box for ‘old’ t143 = box w143 = 25.68
x144 glue for space U+0020 t144 = glue w144 = 4.54 y144 = 5 z144 = 2
x145 box for ‘lime-‘ t145 = box w145 = 42.34
x146 penalty for inter-word t146 = flagged-penalty w146 = 0 p146 = 100
x147 box for ‘tree’ t147 = box w147 = 30.46
x148 glue for space U+0020 t148 = glue w148 = 4.54 y148 = 5 z148 = 2
x149 box for ‘in’ t149 = box w149 = 16.3
......
x267 box for ‘her’ t267 = box w267 = 26.52
x268 glue for space U+0020 t268 = glue w268 = 4.54 y268 = 5 z268 = 2
x269 box for ‘fa’ t269 = box w269 = 14.7
x270 penalty for hyphenation t270 = flagged-penalty w270 = 7.12 p270 = 100
x271 box for ‘vor’ t271 = box w271 = 26.48
x272 penalty for hyphenation t272 = flagged-penalty w272 = 7.12 p272 = 100
x273 box for ‘ite’ t273 = box w273 = 19.6
x274 glue for space U+0020 t274 = glue w274 = 4.54 y274 = 5 z274 = 2
x275 box for ‘play’ t275 = box w275 = 33.42
x276 penalty for hyphenation t276 = flagged-penalty w276 = 7.12 p276 = 100
x277 box for ‘thing.’ t277 = box w277 = 47.02
x278 finishing glue t278 = glue w278 = 0 y278 = ∞ z278 = 0
x279 forced break t279 = flagged-penalty w279 = 0 p279 = −∞

次の位置が分割可能位置となります。上の例では、x2、x4 などです。

  1. xb が Penalty であり pb < ∞ である xb
  2. xb が Glue であり xb-1 が Box である xb

デメリット値は、そこで行分割するとどの程度よろしくないのかを示す値であり、この値が小さいほどよい分割位置と判断されます。 あまりに大きなデメリット値のときは分割位置の候補から除外されます。 デメリット値の算出方法の詳細はここでは触れませんが、外部から与えるいくつかのパラメタによって、デメリット値を調整できるようになっています。

上の例では、x2 や x4 のデメリット値は非常に大きく、候補から除外されます。最初(1行目)の分割位置候補となるのは x26 と x28 で、デメリット値を d とすると、d26 = 975.065、d28 = 23.5004 となっています。
x26 で行分割したとき、次の行(2行目)の分割位置候補は、x52 と x54 で、d52 = 29412.2、d54 = 1288.3 です。
x28 で行分割したときは、x56 と x58 が次の候補となり、d56 = 24.6185、d58 = 6446.52 です。
パラグラフ全体にこれを繰り返すと、次のようなネットワークができ上がります(パスのいくつかは省略されています)。数値は、下に示された語の後で分割したときのデメリット値を示しています。この例では、太い枠の語で分割するのが最良となっています。

fig-12-network

 

現在の AH Formatter はこのアルゴリズムを利用していません。そこで、このアルゴリズムを利用すると、どのように行分割位置が変化するのかを見てみます。

AH Formatter の結果 — ハイフネーションなし
V6-1
Knuth-Plass アルゴリズム の結果 — ハイフネーションなし
V7-1

これは、行あたりの単語数の少ない文書です。つまり、分割可能位置が少ない。 行末のアキの幅がより均等に近いのは、Knuth-Plass アルゴリズム の方であるのが見て取れます。

ハイフネーションをしたときは次のようになります。

AH Formatter の結果 — ハイフネーションあり
V6-2
Knuth-Plass アルゴリズム の結果 — ハイフネーションあり
V7-2

AH Formatter はハイフネーションが多く発生しています。
Knuth-Plass アルゴリズム は、ハイフネーションの発生を少なく抑えるように作られていますが、パラメタを調整して、もう少しハイフネーションが起こり易くすると、次のようにもなります。

Knuth-Plass アルゴリズム の結果 — ハイフネーション多め
V7-2a

行あたりの単語数が多いときは分割可能位置も多いので、結果に差はなくなってきます。

AH Formatter の結果 — ハイフネーションなし
V6-3
Knuth-Plass アルゴリズム の結果 — ハイフネーションなし
V7-3

Knuth-Plass アルゴリズム には、いろいろ制約があることがわかっています。例えば以下のようなものです。

  • 空白によって分かち書きされる英語などの文書を想定しているので、日本語のように分かち書きせず、ほとんどの文字間で分割可能な言語のことは考慮されていない。
  • 非矩形の領域を扱えるが、そのとき行の高さが一定であることが仮定されている。つまり、途中で大きな文字が入っていたりすると処理できない。
  • ドロップキャップ、letter-spacing、カーニング、リガチャ、綴りの変化するハイフネーション、ルビなどは考慮されていない。
  • ページ分割は処理しないので、widows/orphans は処理できない。

AH Formatter にこのアルゴリズムを導入することが検討されています。

 


FormatterでA3横サイズのPDFをA4縦サイズ2ページに分割してみる

昨日に引き続き、Formatterの普段とはちょっと違った使い方第三弾です。

すでにA3横サイズで作ってしまったPDFをA4縦サイズ2ページに分割したいことってありませんか?
だいぶ前にお客様からそういうご要望をいただいたことがあります。次のような新旧比較表でした。

これを次のようにA4見開きにしたいわけです。

いろいろと考えた挙句、次のようにすることにしました。

1. A3横サイズの左側だけをトリミングしてA4縦のページに乗っける絵にすると次のようなイメージです。

2. A3横サイズの右側だけをトリミングしてA4縦の次のページに乗っける絵にすると次のようなイメージです。

スタイルシート的にはこんな感じ

分かりにくい説明で申し訳ありません。
ご興味のある方は是非ご一報を! 詳しく説明させていただきます。


Pages: Prev 1 2 3 4 5 6 7 8 9 10 ... 21 22 23 Next