ユースケース: Glasswall Embedded Engine を使用したインポート/エクスポート
Image resizer は、Embedded Engine のコンテンツのエクスポート機能とインポート機能の間に配置でき、埋め込み画像を親ドキュメントに再インポートする前に、そのバイトサイズを削減する方法として使用できます。
一部のユーザーは、これらの埋め込み画像をクリーンファイルに再インポートする前に、追加の処理を行う場合があります。Image resizer は、これらの画像のサイズ管理に役立ち、場合によってはドキュメント全体のサイズも削減できます。
Glasswall Embedded Engine のコンテンツのエクスポートとインポートの詳細については、Content Export and Importを参照してください。
このガイドでは、Embedded Engine ラッパーを使用してサンプルPDFファイルに対してエクスポートとインポートを実行し、その後、元の形式に再インポートする前に画像をリサイズします。さまざまな Embedded Engine API 関数の例と内訳は、こちらで確認できます。
はじめに
前提条件
- Embedded Engine SDK
- Export および Import 機能を備えた有効なライセンス
- 選択した Embedded Engine ラッパーに対応する関連ライブラリ
- Image Resizer CLI
サンプルファイル
PDF のサンプルファイルを添付しています。このドキュメントには 2 つの JPEG 埋め込み画像が含まれています: Sample.pdf
設定
次の XML ファイルには、すべてのコンテンツを sanitise するよう設定された policy が含まれています。
また、sysconfig セクションで画像をそのままの形式でエクスポートするよう設定されています。export_embedded_images を参照してください。エンジン設定の詳細については、Configuration Management を参照してください。
<?xml version="1.0" encoding="utf-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<pdfConfig>
<acroform>sanitise</acroform>
<actions_all>sanitise</actions_all>
<embedded_files>sanitise</embedded_files>
<embedded_images>sanitise</embedded_images>
<external_hyperlinks>sanitise</external_hyperlinks>
<internal_hyperlinks>sanitise</internal_hyperlinks>
<javascript>sanitise</javascript>
<metadata>sanitise</metadata>
<digital_signatures>sanitise</digital_signatures>
<value_outside_reasonable_limits>sanitise</value_outside_reasonable_limits>
</pdfConfig>
<wordConfig>
<embedded_files>sanitise</embedded_files>
<embedded_images>sanitise</embedded_images>
<external_hyperlinks>sanitise</external_hyperlinks>
<internal_hyperlinks>sanitise</internal_hyperlinks>
<macros>sanitise</macros>
<metadata>sanitise</metadata>
<review_comments>sanitise</review_comments>
<dynamic_data_exchange>sanitise</dynamic_data_exchange>
</wordConfig>
<xlsConfig>
<embedded_files>sanitise</embedded_files>
<embedded_images>sanitise</embedded_images>
<external_hyperlinks>sanitise</external_hyperlinks>
<internal_hyperlinks>sanitise</internal_hyperlinks>
<macros>sanitise</macros>
<metadata>sanitise</metadata>
<review_comments>sanitise</review_comments>
<dynamic_data_exchange>sanitise</dynamic_data_exchange>
<connections>sanitise</connections>
</xlsConfig>
<pptConfig>
<embedded_files>sanitise</embedded_files>
<embedded_images>sanitise</embedded_images>
<external_hyperlinks>sanitise</external_hyperlinks>
<internal_hyperlinks>sanitise</internal_hyperlinks>
<macros>sanitise</macros>
<metadata>sanitise</metadata>
<review_comments>sanitise</review_comments>
</pptConfig>
<tiffConfig>
<geotiff>sanitise</geotiff>
</tiffConfig>
<svgConfig>
<scripts>sanitise</scripts>
<foreign_objects>sanitise</foreign_objects>
<hyperlinks>sanitise</hyperlinks>
</svgConfig>
<webpConfig>
<metadata>sanitise</metadata>
</webpConfig>
<sysConfig>
<interchange_type>sisl</interchange_type>
<export_embedded_images>false</export_embedded_images>
</sysConfig>
</config>
ステップ 1: エクスポート
まず元のファイルをエクスポートします。XML 設定ファイルと Glasswall ライセンスへのパスを手元に用意してください。
注: これらの例にはエラーハンドリングのロジックは含まれていません。詳細は Return Types を参照してください。
C#
using glasswall_core2;
var filePath = "<path-to-input-file>";
var pathToConfig = "<path-to-config>";
var licenseFilePath = "<path-license-file>";
var outputDirectory = "<output-directory>";
Glasswall glasswall = new Glasswall();
int session = 0;
session = glasswall.OpenSession();
glasswall.RegisterLicenseFile(session, licenseFilePath);
glasswall.RegisterPoliciesFile(session, pathToConfig, 0);
glasswall.RegisterInputFile(session, filePath);
glasswall.RegisterExportFile(session, Path.Combine(outputDirectory, $"export.zip"));
glasswall.RunSession(session);
glasswall.CloseSession(session);
サンプルファイルの Export が正常に完了すると、選択した出力ディレクトリに export.zip という名前のアーカイブが作成されます。
この ZIP ファイルを調べると、次の内容が確認できるはずです:
- 複数の SISL ファイル
- 2 JPEG images
- 41 KB のファイル
- 2 KB のファイル
- 2 つの JSON ファイル
エクスポートの内容の詳細については、Export Package Contentを参照してください
次に、Image Resizer CLI で使用するために、ZIP から JPEG 画像を抽出します。
ステップ 2: 画像のサイズ変更
サンプル PDF ファイルから埋め込み画像が抽出されたので、クリーンなファイルを再構築する前にそれらのサイズを変更できます。
CLI の使用方法の詳細は、-h コマンドを実行すると確認できます。参考情報はこちらにもあります。
画像のサイズを変更する
41 KB の JPEG ファイルのサイズを変更してみましょう。次のステップで Embedded Engine は ZIP 内と同じ名前の JPEG ファイルを探すため、ファイル名が変更されないようにしてください。
以下では、エクスポート ZIP から抽出した 41KB の JPEG 画像を、20 KB(20,000 バイト)を目標としてサイズ変更しています。
mkdir output
./gw_image_resizer -i <image>.jpeg -o output/<image>.jpeg -t 20000
これで、まったく同じ名前でサイズが約 20KB の別の JPEG ファイルができているはずです。
エクスポート zip 内の画像を置き換える
これで、リサイズしたファイルを export.zip に入れることで、元の 41 KB の JPEG ファイルを置き換えることができます。
ステップ 3: インポート
リサイズした画像を含む .zip ファイルを使用して、それを PDF ファイルに再度インポートしましょう。
C#
using glasswall_core2;
var exportZipPath = "<export-zip-path>";
var pathToConfig = "<path-to-config>";
var licenseFilePath = "<path-license-file>";
var outputDirectory = "<output-directory>";
Glasswall glasswall = new Glasswall();
int session = 0;
session = glasswall.OpenSession();
glasswall.RegisterLicenseFile(session, licenseFilePath);
glasswall.RegisterPoliciesFile(session, pathToConfig, 0);
glasswall.RegisterImportFile(session, exportZipPath);
glasswall.RegisterOutFile(session, Path.Combine(outputDirectory, $"Sample.Clean.pdf"));
glasswall.RunSession(session);
glasswall.CloseSession(session);
サンプル ファイルは Sample.Clean.Pdf になり、サニタイズされています。また、リサイズされた JPEG ファイルも含まれています。