タグ別アーカイブ: 自動組版

AH Formatter:PDFから複数行のテキストをコピペしたときに、不要な改行を避けるには。

こんにちは
AH Formatter』サポート担当です。

『AH Formatter』で作成した PDF をビューアで表示して、
テキストをコピー&テキストエディタなどにペースト(以下コピペ)した時に
改行が入ってしまうというお問い合わせをいただくことがあります。

具体的には、
 <fo:block>AH Formatterはアンテナハウス株式会社の製品です。</fo:block>
 <fo:block>最新版は弊社Webサイトからダウンロードできます。</fo:block>

これを組版した結果が以下のような場合
 組版結果
ここを Adobe Acrobat や Adobe Reader からコピペすると
次のようになります。

 AH Formatterはアンテナハウス株式会社
 の製品です。
 最新版は弊社Webサイトからダウンロー
 ドできます。

このように見た目のまま、改行されてしまっていますね。

データ中に改行コードが挿入されているわけではないので
この結果は PDFビューアに依存します。
別の PDFビューアでは

 AH Formatterはアンテナハウス株式会社 の製品です。 最新版は弊社Webサイトからダウンロー ドできます。

こんな風にひとつの連続したテキストでコピペされる場合もあります。
(改行位置に空白が入っています。)

では、”コピペした時に改行されないようにしたい” 場合はどうすればよいのでしょう。

PDFビューアに依存するので一概には言えないのですが
Adobe Acrobat や Adobe Reader の場合には
『AH Formatter』から “タグ付きPDF” として出力すると
次のようにコピペできます。

 AH Formatterはアンテナハウス株式会社の製品です。
 最新版は弊社Webサイトからダウンロードできます。

こうすれば、元のテキストデータと同じように連続したテキストとしてコピペできます。
ただし、ひとつ注意することがあります。
例えば、下記のような場合です。

<fo:block linefeed-treatment=”preserve” >
 XfoObj axfo = null;
 try {
 axfo = new XfoObj();
 ErrDump eDump = new ErrDump();
 axfo.setMessageListener(eDump);
 axfo.setDocumentURI(args[0]);
 axfo.setOutputFilePath(args[1]);
 axfo.setExitLevel(4);
 axfo.execute();
 }
</fo:block>

マニュアルのソースコード説明などでよくあるケースですが、
ひとつの fo:block にまとめて記述して、
linefeed-treatment=”preserve” で改行コードを有効にした場合です。

AH Formatterでの組版結果は以下のようになります。
 組版結果

このような場合、タグ付けしていない PDF では見た目のまま改行してコピペされますが
タグ付きPDF として出力してコピペすると
fo:block内のテキストはひとつの連続したテキストになってしまいます。
したがって、1行ずつ fo:block で分割する必要があります。

 


セミナーのご案内:Formatter Club 2017 -冬-

今週末、2017年12月8日(金) 14:00~18:30 に、中央区月島区民館にて「Formatter Club セミナー」(無料)を開催いたします。

今回の内容も次のように盛りだくさんになっております。

・『デジタル書籍制作Webサービス CAS-UB』の新機能紹介

・『AH Formatter V6.5』の新機能紹介

『AH Formatter』の活用事例として、
・株式会社ウイング様による「ドキュメント出力管理システム(OPALUS)」のご紹介
・株式会社ニューキャスト様による「編集・制作の環境改善を実現する AH Formatter の活用事例」のご紹介

・『AH PDFXML変換ライブラリ』の利用例のご紹介

・DITA入門

まだお申し込み可能ですので、セミナーへご参加を希望される方は、http://www.kokuchpro.com/event/AH_winter/ からお申し込みください。詳細もそちらに記載しております。

 


AH Formatter 機能のご紹介:リッチメディア注釈

AH Formatter』では、V6.5 よりマルチメディアをリッチメディア注釈として埋め込み可能になりました。
リッチメディア(オンラインマニュアル)

『AH Formatter』のサンプルFO集には、本機能の動作が確認できるサンプル「リッチメディア注釈」を掲載しております。

本機能を用いて PDF を作成することで、閲覧時に外部のプレイヤなどを必要とせずにマルチメディアの再生が可能になります。そのため、配布される PDF に動画などを埋め込んだ場合に、配布先での閲覧がスムーズに行えることが期待できます。

『AH Formatter』は主にバージョンアップのたびに機能強化や新機能の追加を行っています。
“あったら便利な機能” も既に追加されていることがございますので、どうぞお気軽にサポートにお問い合わせください。
未実装の機能であれば、ご要望として承り今後の開発の参考にさせていただきます。

今回ご紹介した「リッチメディア注釈」も海外のお客様の要望を受けて開発に至りました。

『AH Formatter』の評価版は次のページよりお申し込みいただけます。ご興味のある方は是非お試しください。
AH Formatter 評価版のお申し込み

なお、弊社は AH Formatter の自動組版だけではなく、
Office文書から PDF への変換、
それとは逆に PDF から Office文書への変換、
PDF の編集や加工なども得意としております。
ご案内に向けた Webページ「製品ナビゲータ」をご用意しておりますので、こちらも是非ご覧ください。
製品ナビゲータ

 


DITA の便利ツール

DITA でオーサリングをする際、初めにコンテンツ構造の計画を立てていると思います。
そして計画に対しレビューを行い、コンテンツの全体を把握した後に DITA ファイルを作成。このファイルを作成する作業がなかなか大変。
しかも一度 DITA ファイルを作成してしまうと手直しがまた大変。
コンテンツは大量にあるのでファイルを探すだけで一苦労です。

この作業が自動化できたらいいな、そんなことを考えたことはありませんか?

その悩みを解消してくれるツールがこの「ATL to DITA」(仮)です。

1.Excel ファイルでコンテンツ構造の計画を立てます。
グループ(第一階層)や階層レベル、chunk、タイトル、メタデータの情報を記載していきます。

atl_excel

Excel 画面

2.ツールの画面で Excel ファイルや出力先などを指定します。

atl_gui1

ツール画面1

atl_gui2

ツール画面2

※画面は開発中のものです

3.出力先のフォルダに DITA ファイルが作成されます。

atl_out1

出力ファイル1

atl_out2

出力ファイル2

atl_out3

出力ファイル3

階層に応じたマップが生成され、トピックには予め Excel で記載したタイトルやメタデータが挿入されます。

atl_out4 atl_out5

4.計画に手直しが入った場合はもう一度ツールを実行してください。

如何でしょうか?ちょっとした機能ですが、なかなか便利ですよね!

このツールは Java、Ant、XSLT を組み合わせて構成しています。

atl_architecture

構成

皆様は日々の業務でこういうものがあったら便利なのにな、といったものはございますか?
こういった便利なツールのご要望がございましたらアンテナハウスまでご相談ください!


AH Formatter の海外での評価

XML 自動組版ソフトとして弊社の AH Formatter は高い評価をいただいているのですが、海外ではどう見られているのでしょうか。
競合ソフトとしては FOP や XEP といったものがよくあげられますが、海外ではどうなのでしょう。

1か月ほど前の話なのですが、YAHOO! GROUPS にある “DITA users group” にこんなタイトルの投稿がありました。

「Japanese PDF layout issues」

どうやら日本語組版で問題を抱えているようです。詳しい内容は
https://groups.yahoo.com/neo/groups/dita-users/conversations/topics/42731
を見ていただくとして、これに対していくつかのレスポンスがありました。
Formatter に関するところをキャプチャーしてみました。

20171024-1 「Antenna House を強く推奨する」と言ってくださっています。

もうひとつ20171024-2

「Antenna House Formatter を使うことがおそらく最高の解決策だ」

海外でもこうして高い評価をいただいています。うれしい限りです。
ちなみにこのサイトで “antenna house” を検索してみると山ほどの高評価をいただいていることが分かります。

DITA に限らず XML 自動組版に挑戦しようとされているのなら、是非弊社の Formatter を選択肢のひとつに加えていただきたいと思います。


[XSL-FO] side-float 使ったリストの謎

こんにちは。
AH Formatterサポート担当です。
ドラクエがまだ終わりませーん。
やり込み要素は全部クリアしないと気が済まないタイプです。
最強装備全て揃えるまで頑張ります。
えと、ドラクエも FF も初代からリアルタイムでやっております。
(あっ、年がばれる)
3DS のすれ違い通信機能、田舎なんで誰にも会いません。。。車移動だし。

少し前のブログで、AH Formatter(XSL Formatter)の発売当初から携わっているというお話を
書かせていただきましたが、
xx年もやっております間に、
国内/海外のたくさんのお客様の XSL-FO を見てきました。
こちらが勉強になるようなテクニックもたくさんありました。

そんな中でひとつ、ずーーーーっと疑問に思っていることがあるのです。
それは、リストを fo:float で実装されるケースが度々あること。

簡単に書くと、こんな感じ。

 <fo:block><fo:float float=”start”><fo:block>1.</fo:block></fo:float>リスト項目の内容です。</fo:block>

実際にはもう少し複雑だったりしますが。

自分で XSL-FO(XSLTスタイルシート)を書いてもリストに fo:float を使ったことはありませんし、
念のため、弊社の XSLT開発の者に聞いてみたんですが、そういう方法は使わない、とのこと。
まぁ、リストは fo:list-block で書くもんだと思ってるからかもしれませんけど。

特定の会社のマニュアルのみとかですと、そういう方針?なのかな?と思ったりしたのですが、
別々のお客様で同じような手法を使われていることがちょくちょくあったりするのです。
これって、どうしてなんでしょう。
どこかにお手本あったりしたんでしょうか?
しかも、日本国内のみで、海外ではまず見たことありません。

XSL-FO のfo:list-block、難しいですか?めんどくさいですか?

リストの構造

うん、めんどくさいかも。。。。

もしこのブログを見たお客様で、
こんな理由で float 使ってるよと教えてくださる方、
いらっしゃいませんでしょうか。

■XSL-FOの仕様紹介:『XSL-FO の基礎 第2版 – XML を組版するためのレイアウト仕様』(クリックで紹介文章へ)


[XSL-FO] margin-top と space-before

こんにちは。
AH Formatterサポート担当です。
先日、私たちが暮らす長野県でもJアラートの音が鳴り響いて驚きました。
朝起きないことで定評のあるわたくしですが、一発で飛び起きました(^^;
一瞬で聴いた人を不安にさせるあの音?メロディ?を考えた人、ある意味すごいなぁと思います。
でも怖かった~。

丈夫な建物か地下に避難してください、って言われても
田舎なんで。。。。。。地下が。。。。ない。。。。(笑)

さて、今日は margin-top と space-before について、です。
margin-top は皆さまご存じのとおり、指定されたブロックの上端側にアキを作ります。
XSL-FO ではもうひとつ space-before というのがあります。
こちらは “before” なのでエリアの before側のアキということで
“top”(絶対位置指定)とはちょっと意味合いが違ってきますが
通常の横書き(lr-tb)の文書ですと “before” と “top” は同じですので
ここでは同じものとしてお話しします。

space-before を使った便利なケースはこんな場合です。

space-before を使った便利なケース

“1.1.1 Tree Transformations” と “1.1.2 Formatting” のサブタイトルのブロックには
どちらも space-before=”24pt” が指定してあります。
ページ途中にある場合は前のブロックとの区切りとしてアキを作り、
サブタイトルがページの先頭にある場合にはアキは不要ということでページ上端から始まります。
サブタイトルのブロックがどこに位置するか、ページの先頭にくるかどうかは
組版してみないとわからないですが、
space-before を指定しておくとこのような組版が可能です。

この振る舞いを定義するのが、
space-before の .conditionality です。
.conditionality の値は “discard” と “retain” です。
既定値は “discard” で、上記のような結果になります。
“retain” の場合は 常に(アキを)残す という意味なので
このサンプルのような場合でも、ページ先頭にアキが作られます。

XSL-FO で書く場合は、space-before.conditionality=”discard” のように指定します。
(既定値が discard なのでわざわざ指定しなくてもこうなります)

XSL-FO は元々 CSS2(2.1)を元に考えられているので
仕様の互換性のために margin-top が残されています。
では、margin-top と space-before のどこが違うのかというと、
この .conditionality です。

margin-top には .conditionality の概念はありません。指定もできません。
さらに (lr-tb のドキュメントにおいて)margin-top が指定された場合は
space-before.conditionality は “retain” が指定されたものとして扱うということが
XSL-FO の仕様で決められています。
space-before の方が実用的に考えられているんですね。

CSS は今のところ、残念ながら space-before はまだありません。
CSS3 の仕様策定が進んでいますので将来的には検討されるのかもしれませんね。

■XSL-FOの仕様紹介:『XSL-FO の基礎 第2版 – XML を組版するためのレイアウト仕様』(クリックで紹介文章へ)

 


[書籍紹介] MathML 数式組版入門

MathML 数式組版入門

昨年 6月に販売を開始した、W3C が定めた数式記述言語 MathML3.0 を使って数式組版を行うための入門書「数式組版入門」を、より MathML をご理解、ご活用いただけるよう、初版の内容を精査し、説明の追加や内容の整理を行い 8月に第1.1版をご用意しました。

本書はこの第1.1版より全文を PDF形式で無料公開しています。是非ともご覧ください。
PDF版

なお POD も販売しておりますので、
紙でお読みになりたい方は次の販売店よりお買い求めください。
販売店:Amazon.co.jp三省堂書店楽天ブックスhonto


AH Formatter:縦書きのテーブルセルについて

こんにちは。
AH Formatterサポート担当です。
今週はAH Formatterのサポートで比較的よくあるご質問を紹介いたします。

今回は、縦書きのテーブルセルについて、です。
横書きの文書でも、テーブルヘッダだけ縦書きにしてセンタリング配置したいことってありますよね。
例えば、こんな感じ。
縦書きのテーブルセルについて

このように配置するための方法を順を追って説明します。

続きを読む


AH Formatter:”.precedence” の効果について

こんにちは。
AH Formatterサポート担当です。
今週はAH Formatterのサポートで比較的よくあるご質問を紹介いたします。

今回は、.precedence について、です。
XSL-FOの仕様の中で、space-before や space-after などのプロパティで Value に <space> が定義されているものがあります。

7.11.5 “space-before”
では、以下のように書かれています。

 XSL Definition:
 Value: <space> | inherit
 Initial: space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, .precedence=0

さらに
5.11 Property Datatypes
の中で、<space> の説明があります。

 A compound datatype, with components: minimum, optimum, maximum, precedence, and conditionality.

つまり、Value に <space> とあるプロパティについては
space-before.minimum=”2.0pt”
space-before.optimum=”3.0pt”
space-before.maximum=”4.0pt”
space-before.precedence=”0″
space-before.conditionality=”discard”
のような使い方ができます。

この中の “.precedence” について
どのような意味を持っているのか?
使い方がよくわからないというご質問を受けることがあります。

.precedence は指定値が競合するような場合の解決に用います。
競合した場合の強さを整数または”force”(最も強い)で表します。

space-after/space-beforeを例にしますと、

 <fo:block space-after=”2cm”>1のブロック</fo:block>
 <fo:block space-before=”1cm”>2のブロック</fo:block>

このような場合、どちらのblockも .precedence は指定されていないので
値は初期値の0です。したがって、
1のブロックと2のブロックの間の space は、
大きいほうの値が選択され、2cmとなります。

補足:
スペース指定子のこのような法則は
4.3.1 Space-resolution Rules
に定義されています。

次に、2のブロックに space-before.precedence=”force” を指定します。

 <fo:block space-after=”2cm”>1のブロック</fo:block>
 <fo:block space-before=”1cm” space-before.precedence=”force”>2のブロック</fo:block>

space-before の方が強制力を持つので、space は1cmになります。

次に両方に .precedence=”force” を指定すると、

 <fo:block space-after=”2cm” space-after.precedence=”force”>1のブロック</fo:block>
 <fo:block space-before=”1cm” space-before.precedence=”force”>2のブロック</fo:block>

両方とも強制的に space を出力するので、間の space は3cmとなります。

このような使い方を知っていると、章タイトル/節タイトルや本文との空きを調節するのに
便利なことがあるかもしれません。

参考資料
『XSL-FOの基礎』 6.8 複合データ型
 


Pages: 1 2 Next