Use Case: Import/Export gamit ang Glasswall Embedded Engine
Maaaring ilagay ang image resizer sa pagitan ng functionality ng content export at import ng Embedded Engine bilang paraan para mabawasan ang laki sa bytes ng mga naka-embed na larawan bago i-import muli pabalik sa kanilang parent document.
Maaaring magsagawa ang ilang user ng mga karagdagang operasyon sa mga naka-embed na larawang ito bago i-import muli ang mga ito pabalik sa malinis na file. Makakatulong ang image resizer na pamahalaan ang laki ng mga larawang ito at maaari pang mabawasan ang kabuuang laki ng dokumento sa ilang kaso.
Para magbasa pa tungkol sa content export at import ng Glasswall Embedded Engine, tingnan ang Content Export and Import.
Sa gabay na ito, gagamitin namin ang mga wrapper ng Embedded Engine para magsagawa ng export at import sa isang sample na PDF file, pagkatapos ay i-resize ang mga larawan bago i-import muli pabalik sa orihinal na format. Ang mga halimbawa at paliwanag ng iba't ibang function ng Embedded Engine API ay makikita dito.
Pagsisimula
Mga Kinakailangan
- Ang Embedded Engine SDK
- Isang balidong lisensya na may kakayahang Export at Import
- Ang mga kaugnay na library para sa napili mong Embedded Engine wrapper
- Ang Image Resizer CLI
Halimbawang file
Nakalakip ang isang halimbawang PDF file; ang dokumento ay naglalaman ng 2 naka-embed na JPEG image: Sample.pdf
Configuration
Kasama sa sumusunod na XML file ang isang policy na nakatakda upang i-sanitise ang lahat ng content.
Naka-configure rin ito upang i-export ang mga image sa kanilang raw format sa ilalim ng seksyong sysconfig; tingnan ang export_embedded_images. Para sa higit pang impormasyon tungkol sa configuration ng engine, tingnan ang 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>
Hakbang 1: Export
I-export muna natin ang orihinal na file. Tiyaking nakahanda ang mga path papunta sa XML configuration file at sa iyong Glasswall license.
Tandaan: Ang mga halimbawang ito ay hindi naglalaman ng error handling logic; tingnan ang Return Types para sa higit pang impormasyon.
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);
Kapag matagumpay na na-Export ang halimbawang file, dapat ay may nalikhang archive na pinangalanang export.zip sa napili mong output directory.
Dapat ipakita ng pag-inspeksyon sa ZIP file na ito ang:
- Ilang SISL file
- 2 JPEG images
- 41 KB na file
- 2 KB na file
- 2 JSON file
Para sa higit pang detalye tungkol sa nilalaman ng export, tingnan ang Nilalaman ng Export Package
Susunod, i-extract ang mga JPEG image mula sa ZIP para magamit sa Image Resizer CLI.
Hakbang 2: baguhin ang laki ng mga image
Ngayong na-extract na ang mga naka-embed na image mula sa aming sample na PDF file, maaari na nating baguhin ang laki ng mga ito bago buuin muli ang malinis na file.
Ang mga detalye kung paano gamitin ang CLI ay makikita sa pamamagitan ng pagpapatakbo ng command na -h. Mayroon ding reference dito.
Baguhin ang laki ng isang image
Baguhin natin ang laki ng 41 KB na JPEG file. Tiyaking hindi magbabago ang filename dahil hahanapin ng Embedded Engine ang mga JPEG file na may parehong pangalan mula sa ZIP sa susunod na hakbang.
Sa ibaba, nire-resize namin ang 41KB na na-extract na JPEG image mula sa export ZIP, na may target na 20 KB (20,000 bytes).
mkdir output
./gw_image_resizer -i <image>.jpeg -o output/<image>.jpeg -t 20000
Dapat ay mayroon na tayong isa pang JPEG file na may eksaktong kaparehong pangalan ngunit may laki na humigit-kumulang 20KB.
Palitan ang image sa export zip
Ngayon ay maaari na nating palitan ang orihinal na 41 KB JPEG file ng na-resize nating file sa pamamagitan ng paglalagay nito sa export.zip.
Hakbang 3: import
Gamit ang .zip file na naglalaman ng ating mga na-resize na larawan, i-import natin itong muli sa isang PDF file.
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);
Ang ating sample file ay nagiging Sample.Clean.Pdf at na-sanitise na. Kasama rin dito ang na-resize na JPEG file.