Trường hợp sử dụng: Nhập/Xuất với Glasswall Embedded Engine
Image resizer có thể nằm giữa chức năng xuất và nhập nội dung của Embedded Engine như một phương pháp giảm kích thước tính theo byte của các hình ảnh được nhúng trước khi nhập lại vào tài liệu mẹ của chúng.
Một số người dùng có thể thực hiện thêm các thao tác trên những hình ảnh nhúng này trước khi nhập chúng trở lại tệp sạch. Image resizer có thể giúp quản lý kích thước của các hình ảnh này và thậm chí trong một số trường hợp còn giảm kích thước tổng thể của tài liệu.
Để đọc thêm về việc xuất và nhập nội dung của Glasswall Embedded Engine, xem Xuất và nhập nội dung.
Trong hướng dẫn này, chúng tôi sẽ sử dụng các wrapper của Embedded Engine để thực hiện xuất và nhập trên một tệp PDF mẫu, sau đó thay đổi kích thước hình ảnh trước khi nhập trở lại định dạng gốc. Có thể tìm thấy các ví dụ và phần phân tích các hàm API khác nhau của Embedded Engine tại đây.
Bắt đầu
Điều kiện tiên quyết
- SDK Embedded Engine
- Một giấy phép hợp lệ với các khả năng Export và Import
- Các thư viện liên quan cho wrapper Embedded Engine mà bạn đã chọn
- CLI Image Resizer
Tệp mẫu
Đính kèm là một tệp mẫu PDF, tài liệu chứa 2 hình ảnh JPEG được nhúng: Sample.pdf
Cấu hình
Tệp XML sau đây bao gồm một policy được đặt để làm sạch toàn bộ nội dung.
Tệp này cũng được cấu hình để xuất hình ảnh sang định dạng thô của chúng trong phần sysconfig, xem export_embedded_images. Để biết thêm thông tin về cấu hình engine, xem Quản lý cấu hình.
<?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>
Bước 1: Export
Trước tiên, hãy export tệp gốc. Hãy đảm bảo bạn đã chuẩn bị sẵn đường dẫn đến tệp cấu hình XML và giấy phép Glasswall của mình.
Lưu ý: Các ví dụ này không chứa logic xử lý lỗi, xem Kiểu trả về để biết thêm thông tin.
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);
Sau khi Export tệp mẫu thành công, một tệp lưu trữ có tên export.zip sẽ được tạo trong thư mục đầu ra mà bạn đã chọn.
Kiểm tra tệp ZIP này sẽ cho thấy:
- Một số tệp SISL
- 2 JPEG images
- Tệp 41 KB
- Tệp 2 KB
- 2 tệp JSON
Để biết thêm chi tiết về nội dung của gói xuất, xem Nội dung Gói Xuất
Tiếp theo, giải nén các ảnh JPEG từ tệp ZIP để sử dụng với Image Resizer CLI.
Bước 2: thay đổi kích thước ảnh
Bây giờ các ảnh nhúng từ tệp PDF mẫu của chúng ta đã được trích xuất, chúng ta có thể thay đổi kích thước của chúng trước khi tái tạo tệp sạch.
Chi tiết về cách sử dụng CLI có thể được tìm thấy bằng cách chạy lệnh -h. Ngoài ra còn có tài liệu tham khảo tại đây.
Thay đổi kích thước một ảnh
Hãy thay đổi kích thước tệp JPEG 41 KB. Đảm bảo tên tệp không thay đổi vì Embedded Engine sẽ tìm các tệp JPEG có cùng tên từ tệp ZIP ở bước tiếp theo.
Bên dưới, chúng ta đang thay đổi kích thước ảnh JPEG 41KB đã được trích xuất từ tệp ZIP xuất, với mục tiêu là 20 KB (20.000 byte).
mkdir output
./gw_image_resizer -i <image>.jpeg -o output/<image>.jpeg -t 20000
Bây giờ chúng ta sẽ có một tệp JPEG khác với tên hoàn toàn giống nhau nhưng có kích thước khoảng ~20KB.
Thay thế ảnh trong tệp zip xuất
Giờ đây chúng ta có thể thay thế tệp JPEG 41 KB gốc bằng tệp đã đổi kích thước bằng cách đưa nó vào export.zip.
Bước 3: nhập
Sử dụng tệp .zip chứa các hình ảnh đã đổi kích thước, hãy nhập lại tệp đó vào một tệp 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);
Tệp mẫu của chúng ta trở thành Sample.Clean.Pdf và đã được làm sạch. Tệp này cũng bao gồm tệp JPEG đã đổi kích thước.