Langkau ke kandungan utama

Kes Penggunaan: Import/Eksport dengan Glasswall Embedded Engine

Image resizer boleh berada di antara fungsi eksport dan import kandungan Embedded Engine sebagai kaedah untuk mengurangkan saiz dalam bait bagi imej terbenam sebelum diimport semula ke dalam dokumen induknya.

Sesetengah pengguna mungkin melakukan operasi tambahan pada imej terbenam ini sebelum mengimportnya semula ke dalam fail bersih. Image resizer boleh membantu mengurus saiz imej ini dan malah mengurangkan saiz keseluruhan dokumen dalam sesetengah kes.

Untuk membaca lebih lanjut tentang eksport dan import kandungan Glasswall Embedded Engine, lihat Eksport dan Import Kandungan.

Dalam panduan ini, kami akan menggunakan wrapper Embedded Engine untuk melaksanakan eksport dan import pada fail PDF contoh, kemudian mengubah saiz imej sebelum mengimportnya semula ke dalam format asal. Contoh dan pecahan pelbagai fungsi API Embedded Engine boleh didapati di sini.

Bermula

Prasyarat

  • SDK Embedded Engine
  • Lesen yang sah dengan keupayaan Export dan Import
  • Pustaka yang berkaitan untuk pembalut Embedded Engine pilihan anda
  • CLI Image Resizer

Fail sampel

Dilampirkan ialah fail sampel PDF, dokumen tersebut mengandungi 2 imej terbenam JPEG: Sample.pdf

Konfigurasi

Fail XML berikut merangkumi satu policy yang ditetapkan untuk mensanitasi semua kandungan.

Ia juga dikonfigurasikan untuk mengeksport imej ke format mentahnya di bawah seksyen sysconfig, lihat export_embedded_images. Untuk maklumat lanjut tentang konfigurasi enjin, lihat Pengurusan Konfigurasi.

<?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>

Langkah 1: Eksport

Mari kita eksport fail asal terlebih dahulu. Pastikan laluan ke fail konfigurasi XML dan lesen Glasswall anda tersedia.

Nota: Contoh-contoh ini tidak mengandungi logik pengendalian ralat, lihat Jenis Pemulangan untuk maklumat lanjut.

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);

Selepas Export fail sampel berjaya, arkib bernama export.zip sepatutnya telah dicipta dalam direktori output pilihan anda.

Memeriksa fail ZIP ini sepatutnya mendedahkan:

  • Beberapa fail SISL
  • 2 JPEG images
    • Fail 41 KB
    • Fail 2 KB
  • 2 fail JSON

Untuk butiran lanjut tentang kandungan eksport, lihat Export Package Content

Seterusnya, ekstrak imej JPEG daripada ZIP untuk digunakan dengan Image Resizer CLI.

Langkah 2: ubah saiz imej

Kini imej terbenam daripada fail PDF sampel kami telah diekstrak, kita boleh mengubah saiznya sebelum membina semula fail bersih.

Butiran tentang cara menggunakan CLI boleh didapati dengan menjalankan arahan -h. Terdapat juga rujukan di sini.

Ubah saiz imej

Mari ubah saiz fail JPEG 41 KB. Pastikan nama fail kekal tidak berubah kerana Embedded Engine akan mencari fail JPEG dengan nama yang sama daripada ZIP dalam langkah seterusnya.

Di bawah, kami mengubah saiz imej JPEG 41KB yang diekstrak daripada ZIP eksport, dengan sasaran 20 KB (20,000 bait).

mkdir output

./gw_image_resizer -i <image>.jpeg -o output/<image>.jpeg -t 20000

Kini kita sepatutnya mempunyai satu lagi fail JPEG dengan nama yang tepat sama tetapi bersaiz ~20KB.

Gantikan imej dalam zip eksport

Kini kita boleh menggantikan fail JPEG asal 41 KB dengan fail yang telah diubah saiz dengan meletakkannya ke dalam export.zip.

Langkah 3: import

Dengan menggunakan fail .zip yang mengandungi imej yang telah diubah saiz, mari kita import semula fail tersebut ke dalam fail 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);

Fail sampel kita menjadi Sample.Clean.Pdf dan telah dinyahjangkit. Ia juga merangkumi fail JPEG yang telah diubah saiz.