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.