メイン コンテンツにスキップ

ユースケース: 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 ファイルも含まれています。