Lewati ke konten utama

Kasus Penggunaan: Impor/Ekspor dengan Glasswall Embedded Engine

Image resizer dapat ditempatkan di antara fungsi ekspor dan impor konten Embedded Engine sebagai metode untuk mengurangi ukuran dalam byte dari gambar tersemat sebelum diimpor kembali ke dokumen induknya.

Beberapa pengguna mungkin melakukan operasi tambahan pada gambar tersemat ini sebelum mengimpornya kembali ke file bersih. Image resizer dapat membantu mengelola ukuran gambar-gambar ini dan bahkan mengurangi ukuran keseluruhan dokumen dalam beberapa kasus.

Untuk membaca lebih lanjut tentang ekspor dan impor konten Glasswall Embedded Engine, lihat Ekspor dan Impor Konten.

Dalam panduan ini, kami akan menggunakan wrapper Embedded Engine untuk melakukan ekspor dan impor pada file PDF contoh, lalu mengubah ukuran gambar sebelum mengimpornya kembali ke format aslinya. Contoh dan uraian berbagai fungsi API Embedded Engine dapat ditemukan di sini.

Memulai

Prasyarat

  • SDK Embedded Engine
  • Lisensi yang valid dengan kapabilitas Export dan Import
  • Library yang relevan untuk wrapper Embedded Engine yang Anda pilih
  • CLI Image Resizer

File sampel

Terlampir adalah file sampel PDF, dokumen tersebut berisi 2 gambar JPEG tersemat: Sample.pdf

Konfigurasi

File XML berikut menyertakan sebuah policy yang diatur untuk menyanitasi semua konten.

File ini juga dikonfigurasi untuk mengekspor gambar ke format raw-nya di bawah bagian sysconfig, lihat export_embedded_images. Untuk informasi lebih lanjut tentang konfigurasi engine, lihat Manajemen 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: Export

Mari kita ekspor file asli terlebih dahulu. Pastikan path ke file konfigurasi XML dan lisensi Glasswall Anda sudah tersedia.

Catatan: Contoh-contoh ini tidak menyertakan logika penanganan error, lihat Return Types untuk informasi lebih 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);

Setelah Export file sampel berhasil, sebuah arsip bernama export.zip seharusnya telah dibuat di direktori output yang Anda pilih.

Memeriksa file ZIP ini akan menampilkan:

  • Beberapa file SISL
  • 2 JPEG images
    • File 41 KB
    • File 2 KB
  • 2 file JSON

Untuk detail lebih lanjut tentang isi ekspor, lihat Export Package Content

Selanjutnya, ekstrak gambar JPEG dari ZIP untuk digunakan dengan Image Resizer CLI.

Langkah 2: ubah ukuran gambar

Sekarang gambar tersemat dari file PDF contoh kami telah diekstrak, kita dapat mengubah ukurannya sebelum merekonstruksi file bersih.

Detail tentang cara menggunakan CLI dapat ditemukan dengan menjalankan perintah -h. Ada juga referensi di sini.

Ubah ukuran gambar

Mari ubah ukuran file JPEG 41 KB. Pastikan nama file tetap tidak berubah karena Embedded Engine akan mencari file JPEG dengan nama yang sama dari ZIP pada langkah berikutnya.

Di bawah ini kami mengubah ukuran gambar JPEG hasil ekstraksi 41KB dari ZIP ekspor, dengan target 20 KB (20.000 byte).

mkdir output

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

Sekarang kita seharusnya memiliki file JPEG lain dengan nama yang persis sama tetapi berukuran ~20KB.

Ganti gambar di ZIP ekspor

Sekarang kita dapat mengganti file JPEG asli berukuran 41 KB dengan file yang sudah diubah ukurannya dengan memasukkannya ke dalam export.zip.

Langkah 3: impor

Dengan menggunakan file .zip yang berisi gambar yang sudah diubah ukurannya, mari impor kembali file tersebut ke dalam file 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);

File contoh kita menjadi Sample.Clean.Pdf dan telah disanitasi. File tersebut juga menyertakan file JPEG yang sudah diubah ukurannya.