月別アーカイブ: 2018年8月

PDF Tool API でカスタムプロパティ

今年の暑さは人だけでなく植物にもつらいものがあります。庭木も葉先が茶色になり悲鳴をあげています。地植えとはいえさすがに水やりをやらなくてはならない状態です。とはいっても庭土は乾燥しきっていて少々の水やりでは焼け石に水状態です。
猫の額ほどの庭ですが、20~30分かけて垂れ流し状態で水をやっています。

さて、PDFは文書情報として「タイトル」「作成者」「サブタイトル」「キーワード」の設定ができますが、 違う名前で独自のものを設定したいということもあります。そこで、PDF Tool APIではカスタムプロパティとして、任意の名前と値を設定できるようにしました。
設定したカスタムプロパティはAdobe Readerでも確認することができます。

PDFToolAPI
●製品詳細ページ
『Antenna House PDF Tool API 』


猛暑を乗り切るための「瞬簡PDFシリーズ」

今年は、例年になく厳しい暑さが続いています。
大昔でしたら、火星の接近も原因の一つとされそうです。
ちなみに火星は和名で「夏日星」ともいうそうです。

それにしても、連日の熱帯夜、突き刺す日差しが体にこたえますね。
せめて作業は手早く合理的に進めたいものです。
日々PDFファイルと格闘する、あなたの強い味方といえば、、、

そう、瞬簡PDFシリーズ です!

  • Officeファイルでも画像でも、まとめてシュッとPDFに変換しましょう。
    瞬簡PDF作成
    透かしやセキュリティも一度にまとめて設定できます。
  • ページの移動や削除なども画面上でスッとできます。
    瞬簡PDF編集
    注釈の追加や本文編集もできます。
  • PDF上に直接書き込めます。
    瞬簡PDF書けまっせ
    申請書の記入などで大活躍です。

その他にもいろいろな製品がありますが、これさえあれば大丈夫。
すべてセットになっています。

瞬簡PDF統合版 をどうぞ!

どの製品を使えばよいか迷ったら?製品ナビゲーター
↓↓
PDFのやりたいことから探す!アンテナハウスのデスクトップ製品

を参考にしてみてください。


C++の劇的な進化に圧倒されるModern C++

C++は、アンテナハウスでは主力のプログラミング言語です。Java, Scala, C#, JavaScript, Python, PHPなども製品、サービス、社内利用では使われていますが、多くの製品は、C++で書かれています。
C++で書かれた中核コードの古いものは、数10年経っています。
その間に、C++は、C++11, C++14, C++17とずいぶんと進化し、3年ごとに新規格にするので、もうすぐC++20になります。以下では、C++11以降のC++をModern C++と呼ぶことにします。
アンテナハウスでも、いつまでも古いC++のコードを書き続けるわけにはいかないので、昨年くらいから、Modern C++に移行するために、勉強会をしたりしています。

忘れないように先に書いておきますが、アンテナハウスでは、C++の経験者を募集中です。詳しくは、
経験者採用情報
をご覧ください。多くの方のご応募をお待ちしております。

Modern C++を勉強し始めて驚いたのは、古いC++から、あらゆる面で劇的に進化していること、そして、いまも進化を続けていることです。3年ごとに新規格にすることになったのが、着実に、そして劇的に進化した大きな要因だと思います。

Modern C++で劇的に変わった点を、思いつくままに挙げるだけでも、

  • 型推論
  • using
    もうtypedefは使わない。
  • スコープ付き列挙型(scoped enum)
  • 各種スマートポインタ
    もう生のポインタを使うのは、Cのレガシーコードとインターフェースするときのみ。
  • 右辺値、右辺値参照、ムーブセマンティクス、ムーブコンストラクタ、ムーブ代入演算子
    Modern C++以前は、あいまいだった所有権や一時オブジェクトの扱いを明確化したことで、ムーブによって無駄なコピーを減らして、高速なコードが書けるようになった。
  • ラムダ式(クロージャ)
    プログラミング言語としては、Lispが50年前に導入したものが、ようやく入った。
  • テンプレートプログラミングの劇的な強化
    constexprによるコンパイル時計算の強化。コンパイル時にいろいろ調べられるメタプログラミング機能、SFINAEをやりやすくする機能の強化。
    SFINAE
  • 上記に伴う標準テンプレートライブラリSTLの変更

などなど、たくさんあります。

C++とプログラミングパラダイムの関係を考えると、C++は、

  • Cの命令型プログラミング(手続き型プログラミング)に、オブジェクト指向プログラミングを追加
  • GenericsとTemplateによる汎用テンプレートプログラミング

といったマルチパラダイム言語に進化してきました。
Modern C++は、汎用テンプレートプログラミングというパラダイムをさらに推し進め、テンプレートメタプログラミング(TMP, Template Meta Programming)を強化し、流行りの関数型プログラミングの強化も抜かりなくやっていて、マルチパラダイム言語としてますます強力になった印象です。

古いC++では、テンプレートメタプログラミングは、そのエキスパートしか書けない黒魔術の世界でした。それが、中級のスキルがあるC++プログラマなら書ける程度には楽になりました。
しかも、ネイティブコンパイルですから、実行スピードは、RubyやPythonといったスクリプト言語に比べ桁違いに速く、JavaやScalaと比べても速い。
スマートポインタを使えば、以前のようなメモリの管理の面倒もなくなり、ガベージコレクションがあるJava, Scalaやスクリプト言語のように楽に書けます。
さらにいえば、型推論と関数型プログラミングの強化によって、個人的には、Scalaのようになってきた印象があります。
型推論のおかげで、テンプレートプログラミングが非常に楽になりました。型推論がないテンプレートプログラミングは、プログラマにとって地獄ですからね。

とまあ、いいことづくめのModern C++ですが、既存のコードをModern C++に全部書き変えるのは、事実上不可能なので、新しく書くコードをModern C++で書こうとしています。
しかし、ここで商用ソフトならではの問題があって、お客様の中には、古いC++でシステムを構築していて、ランタイムライブラリの関係で、容易には、Modern C++の環境に切り替えるのが困難なお客様がいらっしゃいます。
たとえば、Visual C++ 2005(!)どころか、Visual C++ 6.0(!!)の環境でシステムが動いているところがあるのです。
もう1つの問題は、マイクロソフトのC++は、GCCやClangに比べ、現時点では、規格の準拠度がまだまだで、Modern C++の機能を駆使したコードが正しくコンパイルできないといった問題もあります。

ということがあるので、移行はゆるやかにやっていくと思いますが、Modern C++を使うことで、速くクリーンで、拡張性、保守性もいいコードにして、お客様に少しでも早く、いい製品をお届けしたいと思っています。

最後になりますが、ご参考までに。
Modern C++の規格やライブラリの解説は、次が非常によいです。
cpprefjp – C++日本語リファレンス
たとえば、
言語機能
を読めば、C++11, C++14, C++17, C++20と、何がどれくらい変わっているかがわかります。
また、次も非常に参考になります。
C++リファレンス


PDF Tool API を使ってみよう(印鑑をPDF上に設定する)

現在PDF CookBook 巻1、巻2が現在発売中です。
この本は弊社製品PDF Tool APIを使ってできるPDFの加工について実例を挙げながら解説した本です。『PDFへの変換』はともかく、『加工』と言われてもイメージが湧きにくい方もいらっしゃると思いますので、今回は「印鑑をPDF上に印字する」という加工を例に取り、この本及びPDF Tool APIの内容を少し紹介してみたいと思います。

今回印鑑を貼り付ける対象として以下のPDFデータを用意しました。
receipt (PDF)

「印鑑をPDF上に印字する」という同一の目標のためにPDF Tool APIでは、以下の3種類のアプローチができます。

◆ 1.画像ファイルで指定する

印鑑画像をPNG形式で用意し、それを対象PDFに貼り付ける方法です。貼り付けた状態が以下の画像です。
PDF Tool API PNG01 (画像はPNG形式以外も指定可能ですが、白抜き部分の透過情報を保持できないbitmapやJPEGなどは後ろに文字などが入ると文字が消えてしまうため、避けた方が無難です。PDF Tool APIが対応している画像ファイルは、bitmap/JPEG/PNG/Tiff/マルチページTiffです。)扱える画像がビットマップ画像でベクター形式ではないため、拡大するとジャギー(ギザギザ部分)や元画像が持っていたにじみが見えてしまいます。
PDF Tool API PNG02

画像ファイルで指定した場合のメリットは

  • 画像データで印鑑を用意するサービスが多く、印鑑データを作成・加工しやすい
  • PDF Tool API側で透明度を指定することができるため、印鑑部分を半透明にできる
    といったものが挙げられます。

今回は以下の印鑑画像ファイルを指定して貼り付けました。
PDF Tool API PNG03

◆ 2.ステンシルマスクで指定する

ステンシルマスク機能を利用して、印鑑を描画する方法です。
印鑑画像の印鑑部分が黒、白抜き部分を白で塗ったモノクロbitmapデータを用意し、ステンシルマスクに使う色を印鑑の朱肉の色(色は任意指定可)で指定して対象PDFに貼り付けると、以下の画像のように印鑑を再現することができます。
PDF Tool API masking01
こちらもマスク指定する画像がビットマップ画像のため、拡大するとジャギーが見えてしまいます。PDF Tool API masking02単一色での塗りつぶしのため、にじみは生じていません。
ステンシルマスクで指定した場合のメリットは

  • bitmapで指定するためににじみが生じない
  • 透明度及び透過に関する情報を扱わないため、PDF1.3のPDFに対しても互換性を保ったまま加工することができる。

といったものが挙げられます。
(※ PDF各バージョンにおける描画関係の違いについては、こちらのサイト《PDFのバージョンと各バージョンの特徴と解説―吉田印刷所》に分かりやすい表が掲載されています。)

今回は以下のモノクロbitmapデータをステンシルマスクで指定しました。
Masking_stamp.bmp (ZIP)

◆ 3.PDFで指定する

ベクタ形式で用意した画像をPDFに変換し、それをPDF Tool APIで貼り付ける方法です。貼り付けた状態が以下の画像です。
PDF Tool API PDF01 PDFの作成にひと手間必要ですが、ベクタ形式画像を用いているため、このように拡大してもジャギーは生じません。
PDF Tool API PDF02

PDFで指定した場合のメリットは

  • ベクタ形式のため拡大してもにじみが生じない
  • PDF Tool API V6.0 であれば印鑑部分を半透明で描画することができる

といったものが挙げられます。

今回は以下のPDFファイルを指定して貼り付けました。
PDF_stamp (PDF)

今回、印鑑の貼り付けをテーマにPDF加工法を紹介しましたが、いかがでしたでしょうか。
このようにPDF Tool APIでは目的に応じて様々な形式で画像を扱うことができます。
「1.画像で指定して印鑑を描画する」及び「3.PDFで指定して印鑑を描画する」についてはPDF CookBook第1巻でサンプルプログラム付きで紹介しています。
また、今回取り上げたトピック以外にも、PDF CookBookでは様々な加工方法を紹介しています。

それぞれ PDF CookBook第1巻 では

  • ページの順序、サイズの設定
  • 本文への文字・画像・他のPDFのページ要素挿入

等の内容について、PDF CookBook第2巻 では

  • パスワードによるセキュリティ設定
  • 透かし機能の追加
  • しおり情報の編集・作成

等について解説しております。

それぞれアンテナハウスオンラインショップ及びAmazonpプリントオンデマンドにて好評販売中です。
また、現在、PDF CookBook第3巻も社内にて鋭意製作中です。
ご期待ください。


『Antenna House PDF Tool API』(PDF Tool API)でPDFに含まれる画像を保存する

『Antenna House PDF Tool API』(PDF Tool API)は、PDFファイルの情報取得やPDFファイルの加工・編集を行うライブラリです。
PDFに関するさまざまな処理機能を搭載しています。
文書情報やページ数などの情報取得、ページの挿入や削除、透かしの挿入、セキュリティ設定などのファイル加工、ページコンテンツのテキストや画像の削除、画像の最適化(ダウンサンプリング)といったページ編集処理が可能です。

今回は『Antenna House PDF Tool API』(PDF Tool API)を使用して、PDFの中に含まれる、すべての画像を、外部ファイルとして保存してみたいと思います。

Javaサンプルコード

Javaサンプルコード(SearchImageAndExport)のダウンロード (zip)

関数 subSearchImageAndExport にて、画像を検索して、ファイルとして保存しています。

入力サンプルPDF

sample

出力サンプル画像(1)


出力サンプル画像01

出力サンプル画像(2)


出力サンプル画像02

PDFに含まれる、すべての画像を、簡単に取り出すことが可能です。
PDF Tool API には、このほかにも便利な機能が沢山あります。ぜひご検討ください。

製品に関するご質問は
sis@antenna.co.jp(SYSTEM担当)
または
oem@antenna.co.jp(OEM担当)
まで、お気軽にお問い合わせください。

評価版のお申込
評価版のお申込ページ

Webページ
http://www.antenna.co.jp/ptl/


『Antenna House PDF Tool API』(PDF Tool API)で墨消しを自動化してみる

『Antenna House PDF Tool API』(PDF Tool API)は、PDFファイルの情報取得やPDFファイルの加工・編集を行うライブラリです。
PDFに関するさまざまな処理機能を搭載しています。
文書情報やページ数などの情報取得、ページの挿入や削除、透かしの挿入、セキュリティ設定などのファイル加工、ページコンテンツのテキストや画像の削除、画像の最適化(ダウンサンプリング)といったページ編集処理が可能です。

今回は『Antenna House PDF Tool API』(PDF Tool API)を使用して、PDFの文字列に対して、墨消しの自動化を行ってみたいと思います。
墨消しの対象となる文字列を検索、文字列に対して墨消しを設定、最後に文字情報が消されているのかチェックします。

Javaサンプルコード

Javaサンプルコード(SearchTextAndSetMask)のダウンロード(ZIP)

関数 subSearchTextAndSetMask にて、文字列検索と墨消しの設定をしています。
その後、関数 subSearchText にて、再度文字列検索を行い、文字情報が消えたかチェックしています。

入力サンプルPDF

pdftool.6.0.sample

出力サンプルPDF(文字列「Antenna」を指定して墨消し)

入力サンプルPDF

出力サンプルPDF(文字列「PDF」を指定して墨消し)

pdftool.6.0.case2

Javaサンプルコードで、墨消しの設定は、わずか7行ほどです。
大量のPDFであっても、bat的に呼び出すだけで、一括で墨消しを設定することも可能です。
PDF Tool API には、このほかにも便利な機能が沢山あります。ぜひご検討ください。

製品に関するご質問は
sis@antenna.co.jp(SYSTEM担当)
または
oem@antenna.co.jp(OEM担当)
まで、お気軽にお問い合わせください。

評価版のお申込
評価版のお申込ページ

Webページ
https://www.antenna.co.jp/ptl/


プリントオンデマンド本で変わるソフトウエア製品のマニュアル提供形態

ソフトウエアの分野では利用者向けのドキュメントが重要な意義を持ちます。プログラミング言語やIT技術に関する本もそうですが、ソフトウエア製品を使うにも優れた技術ドキュメントが必須です。

技術ドキュメントが優れているかどうかで製品の販売額も変わってくるのだろうと思います。

さてそうしたドキュメントができたとして、ドキュメントを利用者の手元に届ける必要があります。ドキュメントの配布形態や配布方法は一昔前と比べて、抜本的に変化しました。

弊社のデスクトップ製品マニュアルの提供方法について、20年前と現在を比較してみますと:

20年前(1998)のソフト製品販売
・製品はCD-ROMに収容して紙マニュアルを同梱したパッケージで販売
・マニュアルは印刷製本して製品に添付

現在(2018)のソフト製品販売
・製品はオンラインショップからダウンロードしていただいたり、CD-ROMに収容して紙マニュアルを同梱したパッケージで販売(パッケージ版)
・マニュアルはPDF版を製品に同梱してPCにインストール
・Webマニュアルをホームページに掲載
・紙版をPODでアマゾン、hontoなどより販売(但し、一部製品)

製品の提供方法の変化としては、ダウンロード販売が増えてきたことがあります。

また、マニュアルの提供形態も、紙(アナログ)主体からデジタル主体へとシフトしました。デジタル版ではWebマニュアルとPDFになっています。

そしてアナログの紙は、以前はデフォルトで同梱でしたが、現在はオプションで有償に変更しています。

PDFを製品に添付しているにも関わらず、紙版が売れるのだろうか? という疑問をもたれる方が多いと思いますが、やはり紙を望まれる方が一定の割り合いでいらっしゃいます。次は、アマゾンなどより販売しているデスクトップ製品マニュアルです。最近の「CAS電子書籍」では、『瞬簡PDF書けまっせ7』のマニュアルが一番人気です。

昔は本の流通は、出版社⇒取次⇒書店といった経路を通していて、本として販売するためには結構沢山の部数を印刷・製本して準備する必要がありました。このため多品種少量な本の提供が難しかったのですが、近年はプリントオンデマンドで本の販売が簡単にできるようになり、提供形態の選択肢が増えたことが一番ありがたく感じます。

プリントオンデマンド(POD)の紹介

このようなドキュメント制作・配布形式の多様化は、弊社の「デジタル出版物制作Webサービス CAS-UB」です。

CAS-UBご案内Webサイト


EPUBをPDFに変換するのは結構厄介。PDFのためのEPUB作りの注意事項

おはようございます。

本日と明日は、電子出版サービスグループから話題をご提供いたします。

今日のお題は、「EPUBをPDFに変換するときの注意事項」です。

アンテナハウスの電子出版サービスグループは、EPUBをPDFに変換するサービスとして、「EPUBtoPDF変換サービス」を展開しています。

書店(ストア)から購入したDRMのかかったEPUBには対応しておりませんが、出版社や著者さんが持つEPUBがあれば、ご希望のページサイズ、フォントサイズ、ページのマージンなどでPDFに変換しますよ、という内容です(1冊/3000円+税)。

さて、EPUBからのPDF変換は、EPUBの持つCSSでの体裁を生かした上で、ページ情報など「印刷組版」(=ここではPDF組版のこと)に必要な情報を追加して行なっています(バックグラウンドで動いているのは、当社の主力製品より、 AH CSS Formatterです)。EPUBの内容を自動組版でPDF化するので、EPUB中に指定されている内容をそのままPDFにします。逆に言えばEPUBに対する編集は一切行いません。変換のお値段からも推測いただける通り、人手による調整は原則として一切行いません。

このサービスでは、EPUB用に作られたデザインを用いてPDF用に組版するため、そのEPUBのタグの付け方やデザインの仕方によっては、大層見栄えの悪いPDFになってしまうことになります。結果として、こんなはずではなかったという期待に沿わないPDFができあがってしまいます。

一番多く、且つ非常に困るのは、EPUBの中で改行”<br>”や空行”<p></p>”を多用して段落間の空きを作ったり、箇条書きなどで、全角空白文字でインデントを作るパターン、次点で”pagebreak”(改ページ)をやたらに使うパターン、またはその複合型です。

KindleやEPUBには紙のページに相当する固定サイズのページはありません。そこで上述のように空きを設定しても問題ないかもしれないですが、PDFに組版する際、EPUBのデザインを使って固定サイズのページ上にレイアウトしていくため、こうした<br>や<p></p>、全角空白文字、pagebreakは、「ページ」という決められたサイズに配置する時には悪手になることが多く、無駄に白紙ページを量産したり、箇条書きの場合は、折り返した2行目の文字の並びが最初の行より飛び出しすぎていたり、後ろに行き過ぎていたり、変なところで意図しない改行ができたりと、デザインがガタガタに崩れてしまいます。

EPUB制作に於いては便利でお手軽なデザイン手法ですが、将来PDFに出力して何らかの形でEPUBの再利用を考えている場合は、このあたりはきちんとCSSをつくってデザインを整えてください。CSSでレイアウトを整えることで、どんなデバイスやツールで閲覧しても見た目がさほど変化しないという、EPUBの品質も向上しますし、一石二鳥です。

ぜひご検討くださいますよう!


美味しいDITAの作り方セミナー「DITA再利用の原理とシステム活用」その2

ふたつめのセッションは「DITA運用編:再利用と協働制作を支援するCCMSとSchematron(スキマトロン)の活用法」と題し、アートダーウィン社が講演しました。
DITAの特性に応じたCMS製品(CCMS)が持つべき機能を、DITA専用CMSを使って具体的に解説し、さらにSchematron(スキマトロン)を使って、誤ったトピックライティングを矯正し、再利用を促進させる手法を実演を交えて解説しました。

DITAセミナー04出典:アートダーウィン著「再利用と協働制作を支援するCCMSとSchematronの活用法」から

ご参加された方々は皆さん熱心で、懸命にメモを取っていらっしゃる方もいらっしゃったのが印象的でした。
最後にアンケートにお答えいただいたのですが、80%以上の方に「期待以上に有意義だった」あるいは「期待通り有意義だった」とおっしゃっていただけました。

美味しいDITAの作り方セミナーは今後も続けていきたいと考えていますので、DITAに興味のある方は是非ご参加ください。

DITAセミナー

セミナーの様子

<< 「その1」