|
簡単な概要の旧製品との比較は、 ABCpdf 比較チャートもご参照ください。
ABCChrome
HTML エンジンはアップグレードされました。古いエンジンとともに、現在は ABCChrome 146 をサポートしています。
Chrome 123 から Chrome 146 へのアップグレードは大きな飛躍であり、セキュリティ、ウェブ標準の互換性、レンダリングの精度、そして文書生成ワークフローの安定性とパフォーマンスにおいて大きな改善をもたらします。
Chrome 146は Chrome 123 に存在していた多くの脆弱性を解決します。Chrome 146 には 29 のセキュリティ修正が含まれており、クッキー盗難防止や CSRF 攻撃に対するネットワークレベルの防御策として「Device Bound Session Credentials」などのクライアント側保護も導入しています。
強化されたウェブ機能は、Chrome 123 で利用できなかったまたは不安定だった最新の CSS および JavaScript API をサポートしています。これには、純粋な CSS を用いたスクロールトリガーアニメーション、XSS 保護のためのサニタイザー API、ライブラリ名の競合を避けるためのスコープ化されたカスタム要素レジストリ、そして改良された WebGL および WebGPU のグラフィックス機能が含まれます。
CSS テキストスケーリングによる柔軟で使いやすいデザインのサポートにより、現代のウェブコンテンツをより正確かつ一貫して扱います。また、旧モデルにはなかった多数のエンジンルーム下の安定性向上も含まれています。
Ubuntu 26
Linux サポートは Ubuntu 26.04 LTS にも拡大しました。最新の安定した長期サポートリリースであるため、5年間(2031年4月まで)セキュリティおよびメンテナンスのアップデートが行われます。これにより、古いライブラリとの互換性を気にせずに、現代的で十分にサポートされた基盤の上に PDF ワークフローを展開できます。
新しいハードウェアに慣れていくことも Ubuntu 26.04 を使う理由の一つです。ネイティブで NVIDIA CUDA と AMD ROCm をサポートし、AI/ML のアクセラレーションを実現し、より良いメモリ管理のために Linux 7.0 カーネルが付属しています。標準のままでは効率的な .NET 開発体験が提供され、組み込みの Ubuntu フィードを通じて公式に .NET パッケージが利用可能です。これにより、ABCpdf 14 を最小限の摩擦で安全で最新の基盤上で展開できます。
コンパクトな PDF
以前は、小さくコンパクトな PDF を書きたい場合は、すべてのページで手動で Doc.Flatten を呼ぶ必要があり、これを忘れがちで出力が不必要に大きくなってしまいました。
そして、Doc.SaveOptions.Compact プロパティを使えば、ドキュメントは自動的にページの内容をフラット化して出力サイズを縮小します。
何も考えたり、何かを呼び出す必要はなく、箱から出して小さくて簡潔なPDFが手に入り、特定の時だけ無効にできるオプションがあります。
圧縮
StreamObject.CompressFlate、Page.Flatten、Doc.Flatten を使う際に、どれだけ圧縮をかけるかを制御できるようになりました。これにより、処理速度やファイルサイズの削減を優先的に選べる柔軟性があります。
これらの関数は、0 から 100 までの圧縮レベルパラメータを受け入れるようになりました。より低い値を用いると時間に敏感な操作で圧縮が速くなり、ファイルサイズが最も重要な場合は高い値を使うと PDF ストリームが小さくなります。
凝縮
オブジェクトストリーム圧縮により、多くの小さな PDF オブジェクトが自動的に1つの圧縮ストリームにまとめられ、ファイルサイズが大幅に削減されます。これは、多数の構造タグが出力を大幅に肥大化してしまう、アクセス性のためにタグ付き PDF 文書に特に価値があります。
私たちのテストでは、このオプションを有効にするとタグ付き PDF が 10% 以上縮小され、10〜20KB の範囲の小さな文書では30%以上の削減が見られます。
ディスク容量の節約に加え、オブジェクトストリーム圧縮により 10GB のファイルサイズ制限が引き上げられ、以前よりもはるかに大きな PDF を生成できるようになりました。コンパクトでアクセスしやすい文書に重点を置く現代のワークフローにおいて、この機能は最小限の労力で大幅な成果をもたらします。
Tag Text
タグ付けは ABCpdf .NET で以前から利用可能でしたが、以前のバージョンでは複雑な設定と PDF タグ付け仕様の詳細な知識が必要でした。このリリースでは、PDF 構造の経験に関わらず、すべての開発者がタグ付けを利用できるようにする、はるかにシンプルなアプローチが導入されました。
新しい方法はこうです:見出しや段落のタグを開き、その中に好きな内容を追加し、タグを閉じます。このプロセスを必要なだけ多くの要素で繰り返し、タグを入れ子にして完全なドキュメント階層を構築します。PDF を保存すると、ABCpdf .NET は自動的にすべての関係を整理し、正しい構造木を構築し、役割マップや構造値などの詳細を舞台裏で処理します。
この高レベルのタグ付け機能に加え、独自のタグ付けメカニズムを開発したい場合に使える新しい低レベルの機能も用意しました。例えば、ユニークなマーク付きコンテンツ識別子 (MCID) を割り当てることは、スクリーンリーダーと連携するアクセシブルPDFを作成するために不可欠ですが、Form XObjects のようなコンテンツを再利用したり、既存のページに要素を追加したりすると難しい場合があります。新しい GetNextMcid 関数は、FormXObject と Page の両方のオブジェクトで利用可能になりました。各バージョンは独自のコンテンツをスキャンし、すでに使用されている最高 MCID を見つけ、次に利用可能な番号を返すことで、追加するすべての要素に一意の識別子が付与され、手動追跡や衝突のリスクなしに保証されます。
StructureElementElement クラスには AddKid および InsertKid メソッドが含まれ、アクセス可能な PDF 向けの論理構造木の構築が容易になりました。両メソッドとも「P」などの単純な型文字列、すでに構造体要素である既存の IndirectObject、または別の StructureElement インスタンスを受け入れます。もし子がすでに別の親に属している場合、自動的に前の階層から切り離され、新しい場所に移動しられるため、手動でのクリーンアップが省けます。これらの手法により、タグ付きPDFを生成する際の見出しや段落、その他の意味要素の入れ子や順序を正確に制御できます。
Tag ドキュメント
アクセシビリティのためにPDFにタグ付けする際、通常はコンテンツを追加する際にタグを開閉することで行われます。しかし、既存の文書を扱ったり、ページの特定の領域にタグを適用する必要がある場合、この方法は面倒に感じることがあります。ABCpdf .NET では、ページ上の任意の領域に直接タグを割り当てられる一連のメソッドが導入されました。
タグに関連付けられた重複領域を定義できます。ライブラリはページの内容を自動的に重なり合う形状に合わせて分割し、テキストは交差する最も最近適用された領域ごとにタグ付けされます。これにより、レガシー PDF のアクセス性を後付けしたり、複雑なレイアウトを正確に構成したりすることが、はるかに簡単かつ直感的になります。
Font Stores
フォントを特定のドキュメントオブジェクトに分離するプライベートフォントストアを作成できるようになりました。これにより、グローバルフォントストアの柔軟な代替手段となり、特定のドキュメントのフォントを読み込みながら他のスレッドやドキュメントに影響を与えません。
必要なフォントをすべてプライベートストアに読み込み、そのストアを必要なドキュメントに割り当て、依存するオブジェクトがすべて処理された後にフォントをアンロードまたは元のフォントファイルを削除できます。
2つのプライベートフォントストアが相互作用すると、それらのフォントは共有参照グループに統合されます。フォントはアンロードされ、関係するすべてのストアが処分された後にファイルは自動的に削除されます。これにより、複数のストアが連携して作業してもフォントリソースのクリーンな管理が保証されます。
Transparency Flattening
透明なコンテンツを平坦化した後、PDF ページのどれだけの変化を正確に測定できるようになりました。FlattenTransparencyOperation クラスには Similarity プロパティがあり、操作前後のページを比較する数値スコアが得られます。これにより品質管理の推測が不要となり、フラット化が不要な視覚アーティファクトを生んでいないか自動的に確認できます。
この特性は広く使われている 2 つの画像品質指標をサポートしています。構造類似度指数 (SSIM) は -1 から 1 のスコアを与えており、1 は平坦化されたページがほぼ元のページと同一であることを示します。ピーク信号対雑音比 (PSNR) はデシベルで値を返し、数字が小さいほどより近い一致を示します。品質基準に合った指標を使い、自動テストで結果が許容範囲かどうか判断してください。
Content Stream Scanner
ContentStreamScanner には Owners プロパティが含まれており、処理中の各コンテンツストリームの所有者を追跡するスタックです。最初のページレベルの所有者は、プロセス関数を呼び出すときに設定され、スキャナーがネストされたフォーム XObject に移行すると、新しい所有者はスタックにプッシュされ、そのオブジェクトが終わるとポップオフされます。これにより、スキャンしているコンテンツの階層を完全に把握できます。
DoFormXObjects プロパティを使って、スキャナーが Form XObjects に入力されるかどうかを制御できます。true に設定すると、スキャナーは名前付きの Form XObject を取得し、グラフィックス状態を保存し、その中のすべてのコマンドを処理します。もしプロパティが偽の場合、Do コマンドは認識されますが、スキャナーはオブジェクト内に降りてきません。これは、フォーム XObject が他のフォームXObjectを呼び出せるため、あなたがトラバースしたいかどうかにかかわらずネスト構造を作ることができるため便利です。
また、スキャナーはアルファブレンディングで使用されるソフトマスクフォーム XObject を扱うための DoGraphicsStateSoftMasks プロパティも付与されています。グラフィックス状態ソフトマスクは、gs コマンドで参照される特別なフォーム XObject です。この性質が成り立つと、スキャナーはそのフォーム XObject を取得し、最初に遭遇した際にコマンドを処理します。これにより、透過性やブレンドに影響を与えるグラフィックス状態操作を十分に確認でき、複雑な PDF コンテンツをより正確に分析できます。
Pentest
これまでのリリースと同様に、定期的なサードパーティのペネトレーションテストは新機能や強化されたセキュリティに活用されています。
これはあまり目立つものではありませんが、常に存在しています。私たちはセキュリティを真剣に考えており、どんな小さなことでも助けになります。
Metrics
FontObject プロパティは、フォントで定義されたすべてのカーニング調整にアクセスできます。カーニングは特定の文字ペア間の間隔を微調整し、テキストをよりバランスよく読みやすく見せます。例えば「i」と「e」を少し近づけるようなものです。このプロパティは辞書のように、各文字ペアを PDF 単位の千分の一単位で表すカーニング値にマッピングします。
辞書はキーに XTuple というヘルパークラスを使用しています。XTuple は Tuple と ValueTuple の両方とシームレスに動作し、プロジェクトが使用する .NET のバージョンに自動的に適応します。フレームワークがどのタプルタイプを期待するかを気にせずに自然なタプルスタイルのコードを書けます。なぜなら XTuple が裏で変換を処理してくれるからです。
キャラクター指標は新しい XRune クラスでインデックス化されました。XRune は、代理ペアなど、通常の Unicode 文字範囲外の文字を扱います。代理ペアとは、多くの絵文字や希少な中国語文字のように、単一の16ビットの値に収まらない文字を符号化する方法です。これらの文字は1つのコード単位ではなく2つのコード単位で表されます。XRune はこれらのペアを正しく解釈しているので、どんなに複雑な文字でも、低レベルの Unicode の詳細を自分で管理する必要がなくなります。
絵文字
標準の16ビット Unicode 範囲外のカラーアイコンや文字をサポートするカスタム Type3 フォントを作成できるため、絵文字やその他のリッチシンボルに最適です。CustomFont クラスでは、それぞれに文字参照、Unicode 値、バウンディングボックス、FormXObject としてのビジュアルを持つ個別のグリフを定義できます。グリフを一つずつ追加することも、各ページにアイコンを含み、ブックマークで16進形式の Unicode 値をオプションで提供するPDF文書から完全なフォントを作成することもできます。
カスタムフォントが組み立てられたら、Embed メソッドを呼び出して任意のドキュメントに追加し、グリフに複数色が含まれているか、各文字の後にどれくらいの間隔を付けるべきかを指定します。フォントは ABCpdf.NET の他のフォントと同様にすぐに使えるようになり、システムインストールのフォントや限られた文字セットに頼らず、カスタムシンボルの見た目を完全にコントロールできます。
Measures
PDF ページに実際に描画しなくても、テキストブロックが行にどう収まるかを測定できるようになりました。MeasureTextOperation クラスはテキストを受け取り、行末で切り替わり、各行の長さを好きな単位で返します。これは単位に依存しないため、ポイント、ピクセル、インチで操作しても入力単位と一致します。通常はポイントベースの寸法を提供し、PDF のページサイズと一致します。
この操作はレンダリングにコミットする前にテキストレイアウトを細かくコントロールできます。フォント、サイズ、文字・単語間隔、イタリックや太字のスタイル、輪郭の太さ、カーニング、テキストの方向、空白の有無などを設定できます。その結果、テキストが何行に分かれているか、各行の長さがわかります。これにより、キャンバス上で試行錯誤なしに、段落の配置先や欄幅調整、レイアウトの拡大縮小を動的に正確に計画できます。
Text
新しい Doc.TextStyle.BoldMethod プロパティで、合成太字の適用方法をコントロールできるようになりました。従来の方法は、同じ通常重みテキストをわずかにずれた位置に3コピー重ねて太字をシミュレートしました。ほとんどの PDF リーダーはコピーが同じテキストであることを認識できるほど賢いですが、あまり高度な読者では混乱し、誤ったテキストや重複したテキスト抽出につながることがあります。
新しい方法は、テキストをより太い筆致で塗り、アウトラインを付けることで、テキスト内容の重複なしにより鮮明なビジュアル結果を生み出し、すべての読者で信頼性の高いテキスト抽出を実現します。もちろん、もし Doc.TextStyle.BoldMethod の方が合うなら、旧方法を選択することも可能です。
Reduce Size
ReduceSizeOperation には RecompressStreams プロパティが含まれており、PDF ファイルサイズをどれだけ積極的に削減するかをより細かくコントロールできます。true に設定すると、すでに圧縮されているストリームをロスレス方式で再圧縮し、処理時間を増やしてさらに小さな出力サイズを実現する可能性があります。false に設定すると、すでにロスレス圧縮されているストリームはそのままにされ、サイズ削減が不要な場合に操作が高速化されます。
この新しい特性に加え、ReduceSizeOperation はグレースケールや白黒画像向けに最適化されています。これらのコンテンツの処理速度が大幅に向上し、スキャンページ、モノクログラフィック、グレースケール写真を含む文書でより効率的に処理が可能になりました。大量の文書を扱う際に、最もパフォーマンス向上を実感できます。
Images
モノトーンの画像(白黒ビットマップ)のサイズ変更は、PixMap の新しいリサイズオーバーロードでより信頼性が高く機能するようになりました。ほとんどの補間アルゴリズムはスケーリング時に中間のグレーピクセルを生成し、厳密な白黒の色空間にきれいにマッピングされません。新しいリサイズメソッドは、操作中のカラースペース変換を正しく管理することでこれを処理し、単調な画像でもギザギザのアーティファクトを生ませずにリサイズできます。
PixMap はまた、パレット化した画像をリカラー時により賢く処理します。以前は、リカラー操作を適用すると既存のパレットを破棄し、画像を完全なカラー空間に展開していました。現在、ABCpdf .NET はパレットのエントリを再マッピングし、パレット化された構造を維持しつつ色を更新します。これによりファイルサイズが小さくなり、インデックス画像の効率性が維持されます。これは、多くのアイコンや色制限のあるグラフィックを含む文書に特に価値があります。
レンダリング
ビジュアルチューニングを完全にコントロールできるように、Doc.Rendering.UseFontHints プロパティを導入しました。この設定により、エンジンで処理されるすべてのテキストが特に複雑なフォントや詳細なレイアウトを扱う際に、読みやすさが向上します。既存のフォントファイルや埋め込みロジックを変更することなく、アプリケーションの出力品質を簡単に向上させる方法を提供します。
ABCpdf .NET は解凍時により多くの画像リサイズを行うため、個別のスケーリングパスが不要になりました。この最適化により、画像は完全に展開するのではなく、解圧中に目標サイズにスケールされるためメモリオーバーヘッドを大幅に削減します。その結果、レンダリング速度が速くなり、ピークメモリ使用量が低く、特に大きな画像が多い文書やサムネイル生成時に顕著に感じられます。
例外
以前のバージョンでは、PDFExceptionはMicrosoft の古いガイドラインに従い AppException から継承されていました。ABCpdf 14 では、PDFException は例外から直接継承され、現代の.NETの慣習と整合しています。また、可能な限り汎用 PDF エクスプションを投げ出すのではなく、適切な.NET例外タイプ (ArgumentNullException、InvalidOperationException など)を優先するようにライブラリを更新しました。
コードが特定のエラー条件に対して PDFException を期待している場合は、PDFException.Preferred を true に設定できます。このフラグはレガシーの動作を復元します。デフォルトは false です。今後は、特定のエラーケースが将来のリリースで標準の.NET例外に置き換えられる可能性があるため、コントロールフローに PDFexception に依存しないことをお勧めします。
その他
そして今回も、多くの便利な新機能やプロパティが加わりました。
・Signature.IncludeDetailedBuildInfo プロパティで、機密情報とみなされる可能性のある情報を制御できるようにします。
・証明書チェーンが不完全または無効な場合にVRI作成をより細かく制御するための Signature.VRIPolicy プロパティです。
・BigTIFF をサポートするための Doc.Rendering.BigImage プロパティです。
・API ベースのライセンス挿入の処理が改善されました。
・フォントをグローバルストアに動的に読み込むための XFont.Load 関数です。
|