주요 콘텐츠로 건너뛰기

사용 사례: Glasswall Embedded Engine를 사용한 가져오기/내보내기

Image resizer는 Embedded Engine 콘텐츠 내보내기 및 가져오기 기능 사이에서, 포함된 이미지를 상위 문서로 다시 가져오기 전에 바이트 크기를 줄이는 방법으로 사용할 수 있습니다.

일부 사용자는 이러한 포함 이미지를 정리된 파일로 다시 가져오기 전에 추가 작업을 수행할 수 있습니다. Image resizer는 이러한 이미지의 크기를 관리하는 데 도움이 되며, 경우에 따라 문서의 전체 크기도 줄일 수 있습니다.

Glasswall Embedded Engine 콘텐츠 내보내기 및 가져오기에 대해 더 알아보려면 콘텐츠 내보내기 및 가져오기를 참조하세요.

이 가이드에서는 Embedded Engine wrapper를 사용하여 샘플 PDF 파일에서 내보내기와 가져오기를 수행한 다음, 이미지를 원래 형식으로 다시 가져오기 전에 크기를 조정합니다. 예제와 다양한 Embedded Engine API 함수에 대한 자세한 설명은 여기에서 확인할 수 있습니다.

시작하기

필수 조건

  • Embedded Engine SDK
  • Export 및 Import 기능이 포함된 유효한 라이선스
  • 선택한 Embedded Engine wrapper에 해당하는 관련 라이브러리
  • Image Resizer CLI

샘플 파일

PDF 샘플 파일이 첨부되어 있으며, 이 문서에는 2개의 JPEG 임베디드 이미지가 포함되어 있습니다: Sample.pdf

구성

다음 XML 파일에는 모든 콘텐츠를 sanitise하도록 설정된 policy가 포함되어 있습니다.

또한 sysconfig 섹션에서 이미지를 원시 형식으로 내보내도록 구성되어 있습니다. export_embedded_images를 참조하세요. 엔진 구성 정보에 대한 자세한 내용은 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>

1단계: Export

먼저 원본 파일을 export해 보겠습니다. XML 구성 파일과 Glasswall 라이선스의 경로를 미리 준비해 두세요.

참고: 이 예제에는 오류 처리 로직이 포함되어 있지 않습니다. 자세한 내용은 Return Types를 참조하세요.

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

샘플 파일의 Export가 성공적으로 완료되면, 선택한 출력 디렉터리에 export.zip이라는 이름의 아카이브가 생성되어 있어야 합니다.

이 ZIP 파일을 검사하면 다음이 표시됩니다:

  • 여러 개의 SISL 파일
  • 2 JPEG images
    • 41 KB 파일
    • 2 KB 파일
  • JSON 파일 2개

내보내기 내용에 대한 자세한 내용은 Export Package Content를 참조하세요.

다음으로, Image Resizer CLI에서 사용할 수 있도록 ZIP에서 JPEG 이미지를 추출합니다.

2단계: 이미지 크기 조정

이제 샘플 PDF 파일에서 포함된 이미지가 추출되었으므로, 정리된 파일을 재구성하기 전에 이미지 크기를 조정할 수 있습니다.

CLI 사용 방법에 대한 자세한 내용은 -h 명령을 실행하여 확인할 수 있습니다. 참조 문서는 여기에서도 확인할 수 있습니다.

이미지 크기 조정

41 KB JPEG 파일의 크기를 조정해 보겠습니다. 다음 단계에서 Embedded Engine이 ZIP의 동일한 이름을 가진 JPEG 파일을 찾으므로 파일 이름은 변경되지 않도록 하세요.

아래에서는 내보내기 ZIP에서 추출한 41KB JPEG 이미지의 크기를 20 KB(20,000바이트)를 목표로 조정합니다.

mkdir output

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

이제 정확히 동일한 이름이지만 크기가 약 20KB인 또 다른 JPEG 파일이 생성되어 있어야 합니다.

내보내기 zip의 이미지 교체

이제 크기가 조정된 파일을 export.zip에 넣어 원본 41 KB JPEG 파일을 교체할 수 있습니다.

3단계: 가져오기

크기가 조정된 이미지가 포함된 .zip 파일을 사용하여 이를 다시 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);

샘플 파일은 Sample.Clean.Pdf가 되며 sanitised 처리됩니다. 또한 크기가 조정된 JPEG 파일도 포함됩니다.