HTML
ABCpdf には、Google Chromium(x64のみ)をベースにした第3の HTML レンダリングエンジンが含まれるようになりました。
これで、現在の3つの主要なブラウザのいずれかをベースにした HTML から PDF への変換が選択できるようになりました。 Chrome スタイル変換、Firefox スタイル変換、または Internet Explorer スタイル変換を使用できます。
CSS3 や SVG、Web フォント、Font Awesome などの最新の HTML5 の機能や技術は非常に優れているばかりでなく、非常に高速でより小さな出力を生成します。
セキュリティを強化するため、新しい FireShield の技術を Chromium エンジンに追加しました。これにより、実行時にファイルシステムに権限を動的に割り当てることができ、HTML エンジンが必要な場所にのみアクセスできるようになります。したがって、それぞれの変換には、作成している要求の種類に応じて、プログラムで特定の権限とアクセス許可を割り当てることができます。
スピードと負荷のテストでは、サイズが 13MB の HTML ページについても行っています。これは約 800 ページの PDF に変換されます。MSHTML を使用した場合、63秒で約 700MB のメモリ使用量でピークに達し、出力は 20MB でした。ABCGecko では、129 秒で約 400MB のメモリ使用量でピークに達し、出力は 16MB でした。また ABCChrome では、23 秒で約 500MB のメモリ使用量でピークに達し、出力は 4MB でした。
このテストでは、ABCChome は 3〜6 倍速く、出力は 4〜5 倍小さくなります。
PDF 2.0
9年間のギャップの後、PDF 2.0 ISO 仕様が最終的にリリースされました。
以前の ISO PDF 仕様(ISO 32000-1:2008)は2008年春にリリースされました。更新された PDF 2.0仕様(32000-2:2017)は、2017年の夏にリリースされました。
新しい仕様には、Adobe が仕様の拡張で文書化したさまざまな追加の Acrobat 機能が組み込まれています。
Info メタデータセクション、安全でないとみなされる特定の暗号化スキーム、Adobe Lifecycle で使用される XFA フォームアーキテクチャなど、多くの機能が廃止されました。
いくつかの新機能が追加されましたが、これらの機能はほとんどありません。変更の大部分は、連結、修正および明確化に関連しています。
今回の ABCpdf のリリースは、PDF 2.0 との互換性のために完全に更新されました。 廃止された機能の使用を避けるために、デフォルトが変更されました。
XMP Metadata オブジェクトのような新しいクラスによる PDF 2.0 の変更を反映するようにドキュメントが更新されました。
Elements
PDF の仕様は非常に大規模で、オブジェクトモデルですべての仕様を取り込むことは膨大な作業です。 ABCpd はこのことを行いました。
新しい Elements の名前空間は、PDF の仕様のすべてのテーブルを構造化された方法でカバーします。それは 300 以上のクラスからなる非常に大きなもので、PDF 2.0 までの使用をカバーします。この構造化されたアクセスにより、多くの大きなメリットが得られます。
-
この名前空間を使用することで、現在のオブジェクトに存在するプロパティのみを追加することができます。 これにより、バグのリスクが大幅に削減されます。
-
この名前空間を使用しているので、オブジェクトに存在するさまざまなプロパティに対してインテリセンスが得られます。それぞれのプロパティは、それを定義する PDF 仕様の正確なページに直接リンクしているので、何が起こっているのか、それぞれが何のためにあるのかを簡単に処理できます。
-
デバッガを使用してコードを実行すると、すべてのプロパティを持つ型付きオブジェクトが表示され、どのように相互にリンクされているかがわかります。
これにより、文書がどのように構造化されているか、それを分析または変更するためのコードを書くべき方法を理解するのがずっと簡単になります。
JavaScript
PDF フォームには JavaScript の計算が含まれています。
一般的には、これらはフィールドの値を一緒に追加するために使用されますが、フィールドの書式設定や計算に使用できます。
以前のバージョンの ABCpdf では、これらのタイプの JavaScript の計算が実行できませんでした。そのため、フィールドの値をプログラムで変更すると計算が無視される可能性がありました。
バージョン 11 では、これらのタイプの計算と JavaScript のイベントをサポートします。
Accessibility
このリリースでは、アクセシビリティのための新しい自動タグ機能が導入されました。
AccessibilityOperation クラスでは、ドキュメントのスキャンとタグ付けが常に許可されていました。
しかし、より洗練された構造が必要な人もいました。 また、コンテンツに応じて細かいコントロール固有のドキュメントが必要なものもありました。
新しい AccessibilityOperation クラスは、下記の検出を追加します。
- Tables
- Lists (bullet points など)
- Page Headers
- Page Footers
- Document Outline
これらの全ての構造は文書の内容から得られ、文書内の標準のタグ付け構造を使用して挿入されます。アクセシビリティ標準は、通常、ページヘッダーとページフッターがドキュメント構造から除外されていることを示唆しているため、これらを検出できます。ドキュメントのアウトラインは、ドキュメントで使用されているテキストスタイルを使用して自動的に決定されます。
さらに、一部のクライアントでは、ドメイン固有の要件があり、すべてのソリューションに適合する一つのサイズに簡単にカプセル化されません。 これらの人々のために、AccessibleOperation をベースとして使用する方法を示す AccessiblePDF のサンプルプロジェクトを用意しました。これにより、構造からコンテンツやスタイル、位置を調べることができます。
また、コンテンツに応じて文書構造を調整したりします。
Rendering
PDF フォーマットは、標準的な 2D オブジェクトと同じように 3D オブジェクトを長い間サポートしています。 私たちは、Adobe 以外で最初にこれらの 3D 要素のレンダリングをサポートするものと考えています。
ABCpdf バージョン 10 は U3D(Universal 3D)要素をサポートしました。 バージョン 11 の一部として、現在は PRC(Product Representation Compact)3D フォーマットもサポートしています。
WebGL と OBJ の 3D エクスポートをサポートしています。また、他のカスタムフォーマットに簡単にエクスポートできるようにする新しいエクスポータインターフェイスもあります。
GIF および PNG 形式のインデックス付きカラー画像を柔軟かつ強力に出力するための幅広いパレットタイプをサポートしています。 インデックス付きカラー出力には、小さくても高品質で透明なPNG画像用のアルファが含まれています。
8 ビットと 16 ビットのグレースケール PNG へのレンダリングや、プログレッシブ JPEG へのレンダリングもサポートしています。
Copying Pages
ABCpdf は長い間、ある文書から別の文書にページを描画する機能をサポートしてきました。
しかし、AddImageDoc 関数は状態を認識していないため、各呼び出しを新たに行う必要があります。 1 つのドキュメントから多数のページをコピーする場合は、関数のコールごとに繰り返しドキュメントを分析するためパフォーマンスに影響を与える可能性があります。
今回のリリースでは、状態を認識する新しい DrawPagesOperation があります。これにより、2 つのドキュメントの間に多数のページを描画する処理では、非常に迅速に動作することができます。
Getting Content
ABCpdf バージョン 10 では、OpAtom クラスが導入されました。PDF コンテンツストリームを分析して変更するための優れた方法です。
しかし、これらのコンテンツストリームを取得するプロセスは多少関わっている可能性があります。 バージョン 11 では、このタスクを大幅に簡略化するために使用できる ContentStreamOperation クラスがあります。
コード例については、GetColors Example Project を参照してください。このプロジェクトは、PDF ドキュメントで使用される色をリストする方法を示しています。
Other
そのほかに、下記のような新しい機能があります。
- bool Atom.Equals(Atom other, ComparisonType type)
- int Atom.GetHashCode(ComparisonType type)
- void Doc.SetInfo(int id, string type, bool info)
- void TextFragment.Focus()
- bool XReadOptions.ShrinkToFit
- 矢印などの線端スタイルをサポートする Doc.AddLine メソッド
- JPEG 2000 と EMF / WMF ベクトルイメージインポート用の新しいリードモジュール
|