Lumaktaw sa pangunahing nilalaman

Gabay ng gumagamit

Ang Glasswall Conform ay idinisenyo upang i-preprocess ang mga PDF file upang matugunan ang mga pamantayan para sa karagdagang pagproseso. Kinukuha at nire-reconstruct nito ang visual na nilalaman at dapat gamitin kasabay ng Glasswall Embedded Engine para sa kumpletong proteksiyong Content Disarm and Reconstruction (CDR).

Nag-aalok ang dokumentong ito ng mga tagubilin sa paggamit ng Conform para sa pagre-reconstruct ng mga PDF document, kasama ang ilang halimbawa para sa pag-invoke ng command-line tool.


Pag-install

Ang Conform ay ini-install bilang isang system-wide command na maa-access mula sa iyong terminal.

Kapag na-install na, magiging available ang command na glasswall_conform sa iyong system PATH. Maaaring kailanganin mong i-restart ang iyong terminal session para magkabisa ang pagbabagong ito.

Windows

Ang Conform para sa Windows ay ipinapamahagi bilang isang .exe installer. Ini-install ito sa C:\Program Files (x86)\Glasswall Conform at idinadagdag ang folder na ito sa iyong system PATH.

I-install ang Conform sa pamamagitan ng pagpapatakbo ng installer at pagsunod sa mga tagubilin:

.\glasswall-conform-1.1.0.exe

O i-install ito nang tahimik para sa automation o mga CI environment:

.\glasswall-conform-1.1.0.exe /VERYSILENT

Linux

Ang Conform para sa Linux ay ipinapamahagi bilang parehong .rpm at .deb na mga package.

Parehong nag-i-install ng mga file sa /opt/glasswall_conform at lumilikha ng symbolic link sa /usr/local/bin upang mapatakbo ang glasswall_conform mula sa command line.

RPM (hal. Rocky 9, Rocky 8)

sudo yum -y install ./glasswall_conform-1.1.0-1.x86_64.rpm

DEB (hal. Ubuntu 24.04, Ubuntu 22.04)

sudo apt-get -y install ./glasswall-conform_1.1.0_amd64.deb

Pag-setup

Bago tawagin ang glasswall_conform, tiyaking naka-set up nang tama ang iyong environment.

Para sa mga mode na gumagamit ng Embedded Engine, ang directory na ipinasa sa --library-directory ay dapat maglaman ng mga binary ng Embedded Engine. Bine-verify ito ng Conform sa startup at hihinto ito na may maikling mensahe kung wala ang mga ito.

Linux

Para sa mga processing mode na gumagamit ng Embedded Engine, dapat i-set ang LD_LIBRARY_PATH upang maisama ang directory na naglalaman ng Embedded Engine. Halimbawa, kung ang Embedded Engine ay nasa path na /home/azureuser/glasswall/Release-16.2.0, maaari mong pansamantalang baguhin ang LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=/home/azureuser/glasswall/Release-16.2.0:$LD_LIBRARY_PATH

Ubuntu

Sa mga system na nakabatay sa Ubuntu, kung makatagpo ka ng mensahe ng error na libgthread-2.0.so.0: cannot open shared object file: No such file or directory, maaari mo itong ayusin sa pamamagitan ng pag-install ng kinakailangang package gamit ang sumusunod na command:

DEBIAN_FRONTEND=noninteractive && apt update && apt install -y libglib2.0-0

Windows

Inirerekomenda naming i-install ang mga dependency ng Windows gamit ang chocolatey.

Para sa lahat ng processing mode, dapat naka-install ang Microsoft Visual C++ Redistributable.

Para sa mga processing mode na gumagamit ng Embedded Engine:

  1. Dapat itakda ang PATH upang maisama ang direktoryo na naglalaman ng Embedded Engine. Halimbawa, kung ang Embedded Engine ay nasa path na C:/glasswall/Release-16.2.0 maaari mong pansamantalang baguhin ang PATH:

    SET "PATH=%PATH%;C:/glasswall/Release-16.2.0"
  2. Dapat na naka-install ang OpenSSL light o OpenSSL.

Halimbawa ng Windows docker installation ng vcredist140 at openssl.light gamit ang chocolatey:
# escape=`
FROM mcr.microsoft.com/windows/servercore:ltsc2022

USER ContainerAdministrator
WORKDIR C:\temp\
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

# Download and install Chocolatey, to install OpenSSL and Visual C++ Redistributable
RUN Invoke-WebRequest -Uri 'https://chocolatey.org/install.ps1' -OutFile 'install.ps1'; `
./install.ps1; `
Remove-Item install.ps1; `
Import-Module "$env:ChocolateyInstall/helpers/chocolateyProfile.psm1"; `
choco install -y --fail-on-unfound --no-progress --stop-on-first-package-failure vcredist140; `
choco install -y --fail-on-unfound --no-progress --stop-on-first-package-failure openssl.light;

Paglilisensya

Nangangailangan ang Glasswall Conform ng wastong lisensya upang gumana. Upang makakuha ng license file, makipag-ugnayan sa [email protected].

Maaaring gamitin ang argument na --license sa lahat ng processing mode upang tukuyin ang alinman sa direktang path papunta sa isang license file, o isang path papunta sa direktoryo na naglalaman ng gwkey.lic file.

  • Mga engine mode (engine, engine_memory): opsyonal ang --license. Kung hindi ito tinukoy, awtomatikong hahanapin ng Conform ang --library-directory para sa isang gwkey.lic file. Kung may makita, gagamitin ito bilang lisensya. Kung walang makita, magtataas ng error.
  • Mga mode na Conform-only (conform_only, conform_only_memory): kinakailangan ang --license, dahil walang library directory na hahanapin.

Kung nawawala, hindi wasto, o hindi naglalaman ng kinakailangang entitlements ang lisensya, lalabas ang Conform na may error code 2.

  --license LICENSE      Path to the Glasswall Conform license file, or a directory containing 'gwkey.lic'.
Required for conform_only and conform_only_memory modes.
In engine modes, defaults to 'gwkey.lic' in the library directory if not specified.

Mga processing mode

Pinapatakbo ang Conform mula sa command line at nag-aalok ito ng ilang processing mode para sa pagproseso ng mga file. Kapag tinatawag ang glasswall_conform, ang unang positional argument ang tumutukoy sa processing mode. Ang mga available na processing mode ay:

  • engine: Pinoprotektahan ang mga file gamit ang Engine. Ang mga non-conforming na file ay nire-reconstruct ng Conform at pagkatapos ay pinoproseso ng Engine.
  • conform_only: Nire-reconstruct ang mga file gamit lamang ang Conform, nang hindi nagbibigay ng proteksiyong CDR.
  • engine_memory: Tumatanggap ng base64-encoded na file sa pamamagitan ng standard input. Pinoprotektahan ang isang file sa memory gamit ang Engine. Kung ang file ay non-conforming, nire-reconstruct ito gamit ang Conform at pagkatapos ay pinoproseso ng Engine. Ang naprosesong file ay ibinabalik sa pamamagitan ng standard output, o isang error ang ibinabalik sa pamamagitan ng standard error.
  • conform_only_memory: Tumatanggap ng base64-encoded na file sa pamamagitan ng standard input. Nire-reconstruct ang isang file gamit lamang ang Conform, nang hindi nagbibigay ng proteksiyong CDR. Ibinabalik ang na-reconstruct na file sa pamamagitan ng standard output, o ibinabalik ang isang error sa pamamagitan ng standard error.

Upang ipakita ang mga available na processing mode:

glasswall_conform -h

engine

Ang processing mode na ito ang nilalayong default at nililinis ang mga file gamit ang teknolohiyang Glasswall CDR. Nangangailangan ito ng access sa Embedded Engine at isang balidong lisensya.

Para sa isang halimbawa ng pag-invoke sa processing mode na ito, tingnan ang: End to end protection.

Ang mga naprosesong file ay inaayos sa isa sa tatlong output subdirectory:

  1. 01_engine_success: Mga file na matagumpay na naproseso ng Embedded Engine nang hindi na kailangan ng reconstruction ng Conform.
  2. 02_conform_engine_success: Mga PDF file na noong una ay hindi maproseso ng Embedded Engine, ngunit na-reconstruct ng Conform at pagkatapos ay matagumpay na naproseso ng Embedded Engine.
  3. 03_failure: Mga file na nabigong maproseso gamit ang parehong Embedded Engine at Conform, o naglalaman ng content na itinakdang hindi payagan gamit ang isang custom content management policy.

Upang ipakita ang mga command line argument para sa engine processing mode:

glasswall_conform engine -h

conform_only

Ang processing mode na ito ay nagre-reconstruct ng mga file nang hindi ginagamit ang Embedded Engine. Hindi ito nagbibigay ng proteksiyong CDR.

Para sa isang halimbawa ng pag-invoke sa processing mode na ito, tingnan ang: Reconstructing files without CDR protection

Ang mga naprosesong file ay inaayos sa isa sa dalawang output subdirectory:

  1. 01_conform_success: Mga file na matagumpay na na-reconstruct ng Conform.
  2. 02_failure: Mga file na nabigong ma-reconstruct ng Conform.

Upang ipakita ang mga command line argument para sa conform_only processing mode:

glasswall_conform conform_only -h

engine_memory

Ang mode na ito ay tumatanggap ng base64-encoded na file sa pamamagitan ng standard input at pinoproseso ito gamit ang Embedded Engine. Kung ang file ay non-conforming, ito ay nire-reconstruct ng Conform, pagkatapos ay pinoproseso ng Engine. Ang huling output ay ibinabalik sa pamamagitan ng standard output, o isang error ang ibinabalik sa pamamagitan ng standard error. Walang mga file ang isinusulat sa disk.

Ang mode na ito ay mainam para sa integration sa mga system na nagtatago ng mga file sa memory at hindi umaasa sa filesystem input o output.

Para sa halimbawa ng pag-invoke sa processing mode na ito, tingnan ang: Pagproseso ng mga file sa memory nang hindi nagbabasa mula o nagsusulat sa disk.

Upang ipakita ang mga command line argument para sa engine_memory processing mode:

glasswall_conform engine_memory -h

Maaaring gamitin ang opsyonal na argument na --file-name upang tukuyin ang pangalan ng file na nasa memory. Ginagamit ito kapag nagsusulat ng mga log at ng post processing summary, at ang default nito ay ang unang 8 character ng base64 encoded data kung hindi ito tinukoy.

conform_only_memory

Ang mode na ito ay tumatanggap ng base64-encoded na file sa pamamagitan ng standard input at nire-reconstruct ito gamit lamang ang Conform (nang walang proteksiyong CDR). Ibinabalik ang reconstructed na file sa pamamagitan ng standard output, o ibinabalik ang isang error sa pamamagitan ng standard error. Walang mga file ang isinusulat sa disk.

Para sa halimbawa ng pag-invoke sa processing mode na ito, tingnan ang: Pagproseso ng mga file sa memory nang hindi nagbabasa mula o nagsusulat sa disk.

Upang ipakita ang mga command line argument para sa processing mode na conform_only_memory:

glasswall_conform conform_only_memory -h

Pagsubok

Available kapag hiniling ang isang dataset ng mga PDF test file para sa pagsusuri ng Conform. Mangyaring makipag-ugnayan sa amin upang humiling ng access sa mga test file sa pamamagitan ng Kiteworks.


Mga Halimbawa


Ganap na proteksyon

Ipinapakita ng halimbawang ito ang paggamit ng engine processing mode sa pinakapayak nitong antas.

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0

Halimbawang input directory:

/home/azureuser/input_files
conforming_docx.docx
conforming_pdf.pdf
corrupt_docx.docx
nonconforming_pdf.pdf
unsupported_filetype.txt

Halimbawang output directory pagkatapos ng pagproseso:

/home/azureuser/output_files
├───01_engine_success
│ conforming_docx.docx
│ conforming_pdf.pdf

├───02_conform_engine_success
│ nonconforming_pdf.pdf

└───03_failure
corrupt_docx.docx
unsupported_filetype.txt

Tandaan na maaaring i-customize ang mga pangalan ng subdirectory gamit ang mga sumusunod na argument:

  • --engine-success-path: Opsyonal. Pangalan ng output subdirectory para sa mga file na matagumpay na naproseso ng Embedded Engine nang hindi na kailangan ng reconstruction ng Conform. Default 01_engine_success
  • --conform-success-path: Opsyonal. Pangalan ng output subdirectory para sa mga file na sa simula ay hindi maproseso ng Embedded Engine, ngunit na-reconstruct ng Conform at pagkatapos ay matagumpay na naproseso ng Embedded Engine. Default 02_conform_engine_success
  • --failure-path: Opsyonal. Pangalan ng output subdirectory para sa mga file na nabigong maproseso gamit ang parehong Embedded Engine at Conform. Default 03_failure

Kung nais na ang lahat ng matagumpay na naprotektahang file ay maisulat sa iisang output directory, hindi alintana kung ginamit o hindi ang Conform para i-reconstruct ang file, maaari mong tukuyin na isulat ang mga file sa parehong success subdirectory path. Halimbawa:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --engine-success-path success --conform-success-path success --failure-path failure

Halimbawang pinutol na terminal output pagkatapos ng pagproseso:

Glasswall Conform processed 3/5 files (60.00%)
Glasswall Conform failed to process 2/5 files. (40.00%)
Exceptions:
PdfExtractionError (Total: 2)
- 1x Unable to extract content from PDF: '/home/azureuser/input_files/corrupt_docx.docx'
- 1x Unable to extract content from PDF: '/home/azureuser/input_files/unsupported_filetype.txt'
2024-11-06 14:28:50.242 glasswall_conform.config.logging INFO engine_mode Total elapsed time: 5.55 seconds

Pagre-reconstruct ng mga file nang walang proteksiyong CDR

Ang processing mode na conform_only ay hindi nagbibigay ng proteksiyong CDR, at nangangailangan ng input directory na -i, output directory na -o at path na --license. Tingnan ang conform_only.

glasswall_conform conform_only -i /home/azureuser/input_files -o /home/azureuser/output_files --license /home/azureuser/gwkey.lic

Pagproseso ng mga file sa memory nang hindi nagbabasa mula o nagsusulat sa disk

Maaaring gamitin ang mga processing mode na engine_memory at conform_only_memory upang magproseso ng mga file sa memory nang hindi gumagamit ng I/O.

Kung matagumpay ang pagproseso, ibinabalik ang base64-encoded na output file sa pamamagitan ng standard output. Kung may naganap na error habang nagpoproseso, isusulat ang mensahe ng error at ang post processing summary sa standard error.

Halimbawa ng standard error para sa timeout failure:

Error: Processing failed for file: 'hus11976.pdf'. Summary: {'conform_version': '0.11.2', 'operating_system': 'Windows', 'summary_verbosity': 'all', 'processing_rates': {'success': 0.0, 'failure': 100.0}, 'processing_counts': {'success': 0, 'failure': 1, 'total': 1}, 'processing_time': {'elapsed_seconds': 8.25, 'files_per_sec': 0.12, 'secs_per_file': 8.25}, 'processing_arguments': {'mode': 'engine_memory', 'library_directory': 'C:/azure/sdk.editor/2.1394.0/build-sdk-editor-windows-amd64-dev_license', 'cautious_mode': False, 'max_workers': 1, 'timeout_seconds': 5.0, 'memory_limit_gib': 11.96, 'function_name': 'protect_file', 'content_management_policy': None}, 'processing_success': [], 'processing_failure': [{'file_name': 'hus11976.pdf', 'timed_out': True, 'out_of_memory': False, 'max_memory_used_in_gib': 0.32227325439453125, 'elapsed_time': 5.0007593631744385, 'exception': 'TimeoutError()', 'success': False}]}

Mga halimbawa ng pangunahing paggamit:

Direktang i-pipe ang isang base64-encoded na string ng isang in-memory na PDF file papunta sa glasswall_conform

echo "U29tZUJhc2U2NERhdGE=" | glasswall_conform.exe engine_memory -l "C:/azure/sdk.editor/2.1394.0" --file-name "SomeBase64Data"

O gamit ang Python sa pamamagitan ng subprocess

import base64
import os
import subprocess

# File in memory, for this example simply loaded from a file path
file_path = r"C:\conform\input\Set-08-016599.pdf"
with open(file_path, "rb") as f:
file_bytes = f.read()
# Convert to base64-encoded string
encoded_file_bytes = base64.b64encode(file_bytes).decode("utf-8")

file_name = os.path.basename(file_path)
command = " ".join(
[
"glasswall_conform",
"engine_memory",
'-l "C:/azure/sdk.editor/2.1394.0"',
f'--file-name "{file_name}"', # Optional, used for summary and logs
f'--summary-path "C:/conform/summary_{file_name}.json"', # Optional
'--watermark "Processed for security: Visual elements may vary"', # Optional
]
)
# Run Conform with the base64-encoded string as an input
result = subprocess.run(command, input=encoded_file_bytes, text=True, capture_output=True, shell=True)

if result.stderr:
# Conform failed, handle error gracefully here
print(result.stderr)
else:
# Conform succeeded, convert the conformed file from base64 to bytes
conformed_file_bytes = base64.b64decode(result.stdout)
# Do something with the conformed file bytes, e.g. write to a file
with open("conformed_file.pdf", "wb") as f:
f.write(conformed_file_bytes)

Katulad nito, maaaring gamitin ang mode na conform_only_memory sa pamamagitan ng pagpapalit sa engine_memory sa mga halimbawa sa itaas, pag-aalis ng argumentong -l at pagtukoy sa --license dahil kinakailangan ito para sa mode na ito.


Fast mode at cautious mode

Ang Fast mode ang default na processing mode sa Conform. Nag-aalok ito ng pinakamabilis na bilis ng pagproseso at pinakamagandang visual na hitsura para sa mga PDF file, ngunit maaaring hindi ito angkop para sa mga sitwasyong nangangailangan ng napakahigpit na pagsunod sa mga espesipikasyon ng PDF.

Kung naka-disable ang fast mode o hindi nito maproseso ang isang file, awtomatikong lilipat ang Conform sa cautious mode. Inuuna ng mode na ito ang pagsunod at pagbabawas ng panganib sa pamamagitan ng pagpapalit ng mga embedded font, na tumutulong mabawasan ang mga isyung nauugnay sa mga custom o hindi kilalang font. Maaaring magresulta ang cautious mode sa mas mababang visual fidelity, gaya ng bumabang kalidad o nawawalang mga larawan, hindi pare-parehong laki ng font, o nawawalang teksto.

  • Ang pag-disable ng fast mode ay inirerekomenda lamang kapag mahalaga ang napakahigpit na pagsunod sa mga pamantayan ng PDF, kahit kapalit nito ang visual fidelity.
  • Ang pag-disable ng cautious mode ay inirerekomenda lamang kapag mahalagang mapanatili ang mga embedded font, o kapag mas mahalaga ang visual na anyo kaysa sa kakayahan ng Conform na matagumpay na magproseso ng mas malawak na hanay ng mga PDF.

Maaaring i-disable ang fast mode gamit ang opsyonal na --disable-fast-mode command line argument. Maaaring i-disable ang cautious mode gamit ang opsyonal na --disable-cautious-mode command line argument.

Kapag matagumpay na nagproseso ang Conform ng isang file gamit ang fast mode:

  • Pinakamabilis na bilis ng pagproseso.
  • Pinakamagandang biswal na anyo.
  • Hindi pinapalitan ang mga custom na naka-embed na font.
  • Maaaring hindi angkop para sa mga sitwasyong nangangailangan ng napakahigpit na pagsunod sa mga pamantayan ng PDF.

Kapag ginagamit ng Conform ang fallback na cautious mode:

  • Mas mabagal na bilis ng pagproseso.
  • In a small number of cases, may result in reduced visual appearance, such as:
    • Sirâ o nawawalang mga larawan at graphics.
    • Mga pagkakaiba sa hitsura ng teksto (hal. laki, istilo ng font, o pagitan).
    • Nawawalang teksto kapag ginagamit ang mga hindi kilalang naka-embed na font.
  • Nagpoproseso ng mga PDF nang may mas mahigpit na pagsunod sa mga espesipikasyon.
  • Pinapalitan ang mga custom na naka-embed na font ng mga kilalang ligtas na font.

Functionality ng Glasswall Python Wrapper

Sa processing mode na engine, ang function na protect_file mula sa Glasswall Python Wrapper ang ginagamit bilang default upang magproseso ng mga file gamit ang Embedded Engine. Maaari itong baguhin gamit ang opsyonal na -f command line argument.

Isang default na sanitise content management policy ang inilalapat kung walang tinukoy na policy file gamit ang opsyonal na -c command line argument.

Ang kinakailangang -l command line argument ay dapat tumukoy sa isang directory na naglalaman ng Embedded Engine.

Ang mga sumusunod na argument ay nauugnay sa Glasswall Python Wrapper:

  -l LIBRARY_DIRECTORY, --library-directory LIBRARY_DIRECTORY
Required. Path to directory containing the Embedded Engine.
-f FUNCTION_NAME, --function-name FUNCTION_NAME
Optional. Glasswall Python Wrapper function name to call during multiprocessing, such as 'protect_file' or 'export_file'. Default: 'protect_file'.
-c CONTENT_MANAGEMENT_POLICY, --content-management-policy CONTENT_MANAGEMENT_POLICY
Optional. Path to Embedded Engine content management policy file. If not provided, the default 'sanitise' policy is used.
--log-level-console-wrapper {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}
Optional. Set logging level for writing Glasswall Python Wrapper logs to console. Default INFO.

Halimbawa:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 -f protect_file -c /home/azureuser/glasswall/config.xml

Multiprocessing

Lahat ng processing mode ay gumagamit ng GlasswallProcessManager ng Glasswall Python Wrapper upang mahusay na magproseso ng mga file nang sabay-sabay.

Ang mga sumusunod na argument ay nauugnay sa multiprocessing:

  -w MAX_WORKERS, --max-workers MAX_WORKERS
Optional. Maximum workers for multiprocessing, 0=auto. Default: 0.
-t TIMEOUT_SECONDS, --timeout-seconds TIMEOUT_SECONDS
Optional. Multiprocessing timeout per file in seconds. Default: 180.
-m MEMORY_LIMIT_GIB, --memory-limit-gib MEMORY_LIMIT_GIB
Optional. Multiprocessing memory limit per file in GiB, 0=auto (4GiB min, worker distributed max). Default: 0.

Halimbawa:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 -t 300 -m 12

Logging

Ang default na logging level para sa Conform at sa Glasswall Python Wrapper ay INFO. Ang mga sumusunod na argument ay nauugnay sa logging:

  --log-level-console {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}
Optional. Set logging level for writing logs to console. Default INFO.
--log-level-file {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}
Optional. Set logging level for writing logs to file. If not provided, logs will not be written to file.
--log-path LOG_PATH Optional. Path to output log file. Default is a timestamp-named file located at: '%TEMP%/glasswall_conform/logs'.
--log-level-console-wrapper {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}
Optional. Set logging level for writing Glasswall Python Wrapper logs to console. Default INFO.

Upang pigilan ang karamihan ng pag-log:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --log-level-console CRITICAL --log-level-console-wrapper CRITICAL

I-customize ang mga rate ng paghawak ng content

Nalalapat lamang ang seksyong ito kapag naka-disable ang fast mode.

Bilang default, bumubuo ang Conform ng output file kapag posible, kahit na bahagi lamang ng content ng orihinal na dokumento ang matagumpay na nahawakan. Maaaring hindi palaging kanais-nais ang gawi na ito, at maaaring i-customize para sa iba't ibang uri ng content sa loob ng bawat dokumento.

Gumagamit ang Conform ng "best guesses" kapag humahawak ng malformed, corrupt, o unsupported na text content upang matiyak na maililipat ang pinakamaraming text hangga't maaari mula sa orihinal na dokumento papunta sa conformed document. Halimbawa, kung malformed ang stroke colour ng text o nasa unsupported na colour format, pananatilihin ang text sa output document, at ang stroke colour ay magiging default na black.

Ang paraang ito ng "best guess" ay maaaring magresulta sa text na mukhang katulad ng orihinal, o sa ilang kaso, text na hindi nakikita ngunit naroroon pa rin sa output document. Dahil hindi namin magagarantiya na hahawakan ng aming best guess ang text sa kaparehong paraan tulad sa orihinal na dokumento, ipinapakita ito ng handling rate bilang content na hindi ganap na nahawakan. Dahil dito, ang mababang handling rate para sa text ay hindi palaging nangangahulugan na magiging iba ang biswal na hitsura ng dokumento kapag inilapat ang best guesses.

May tatlong argument na magagamit upang itakda ang minimum na success rates kapag humahawak ng content:

  --text-min-success-rate TEXT_MIN_SUCCESS_RATE
Optional. The minimum success rate for processing text. Default: 0.0.
--image-min-success-rate IMAGE_MIN_SUCCESS_RATE
Optional. The minimum success rate for processing images. Default: 0.0.
--graphic-min-success-rate GRAPHIC_MIN_SUCCESS_RATE
Optional. The minimum success rate for processing graphics. Default: 0.0.

Kung hindi maabot ang minimum na halaga ng content handling rate, ituturing na failure ang pagproseso para sa ibinigay na file at hindi isusulat ang output file.


Paglalagay ng watermark

Naka-disable ang watermarking bilang default, ngunit maaaring i-enable gamit ang argument na --watermark. Magdaragdag ng text na may font size na 12 sa semi-transparent na dark grey na kulay. Karaniwang inilalagay ang watermark sa kanang-itaas ng dokumento, ngunit depende sa rotation na inilapat sa page, maaaring magkaiba ang orientation. Ang maximum na haba ng text para sa isang watermark ay kasalukuyang 256 na character.

  --watermark WATERMARK
Optional. Adds a watermark to each page of the reconstructed document. Default '' (disabled).

Halimbawa:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --watermark "Glasswall Conform"

Pag-suppress ng CID

Nalalapat lamang ang seksyong ito kapag naka-disable ang fast mode.

Sa mga PDF, may ilang font na gumagamit ng system na tinatawag na CID (Character Identifier) para pamahalaan ang malalaking set ng mga character. Kapag gumagawa ng bagong PDF, kung makatagpo ang tool ng mga character na hindi maproseso, pinapalitan nito ang mga iyon ng default na question mark character (?). Maaari mong i-adjust kung paano nirerepresenta ang mga hindi maprosesong CID sa iyong mga PDF gamit ang argument na --suppress-cid:

  --suppress-cid SUPPRESS_CID
Optional. Replace CID metadata that may be printed to the visual layer due to font array omissions with the supplied string, with placeholder text.
Glasswall Conform restricts the processing of PDFs to only known secure fonts. This is a deliberate security feature to make the PDF conform safely. Default '■'.

Halimbawa:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --suppress-cid "?"

Pagpapalit ng font

Nalalapat lamang ang seksyong ito kapag naka-disable ang fast mode.

Sinusuportahan ng Conform ang bold, italic, at bold italic na mga variant ng base 14 Type1 fonts at ang Cambria font. Sinusuportahan din ng Conform ang ilang custom font.

Ang base 14 Type1 fonts ay:

  • Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique
  • Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique
  • Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic
  • Symbol
  • ZapfDingbats

Ang mga embedded font na hindi suportado ay maaaring palitan ng Cambria font. Kung hindi sinusuportahan ng Cambria ang isang glyph mula sa embedded font, isi-suppress ang character. Para sa higit pang impormasyon tungkol dito, tingnan ang Pag-suppress ng CID.

Bilang default, ang ilang karaniwang embedded sans serif font ay pinapalitan ng Helvetica sa halip na Cambria para sa visual na pagkakahawig. Ito, at ang iba pang feature ng pagpapalit ng font, ay maaaring baguhin gamit ang mga argument na ito:

  --disable-base-14-fonts
Optional. Disable matching embedded fonts to base 14 fonts.
This will result in more fonts being replaced by the fallback font, Cambria. Default False.
--disable-custom-fonts
Optional. Disable matching embedded fonts to custom fonts.
This will result in lower support for custom embedded fonts, and more fonts being replaced by the fallback font, Cambria. Default False.
--disable-sans-serif-replacement
Optional. Disable replacing some sans serif fonts with Helvetica instead of the fallback font, Cambria.
This will result in some replaced sans serif fonts looking more visually different when compared to the original file. Default False.

Halimbawa:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --disable-custom-fonts

Pag-filter ng pagsasama at pagbubukod ng file

Pinapayagan ng Conform ang karagdagang kontrol kung aling mga file sa input directory ang ipo-proseso sa pamamagitan ng paggamit ng mga filter ng pagsasama at pagbubukod. Hinahayaan ka ng mga filter na ito na tukuyin kung aling mga file ang ipo-proseso o babalewalain gamit ang mga pangunahing Unix shell-style wildcard nang direkta mula sa command line. Kung ang isang file ay tumutugma sa parehong panuntunan ng pagsasama at pagbubukod, ito ay ibubukod.

Bilang default, kung ang mga argumentong --include-files at --exclude-files ay hindi isinama, ipo-proseso ng Conform ang lahat ng file na nasa input directory.

Ang mga sumusunod na argumento ay nauugnay sa pagsasama at pagbubukod ng file:

  --include-files INCLUDE_FILES
Optional. Can be either a path to a file containing file paths/patterns or a semicolon-separated list of patterns (e.g. '*.pdf;*/SET_03/*'). Only matching files will be processed.
If None, all files are included. Default: None.
--exclude-files EXCLUDE_FILES
Optional. Can be either a path to a file containing file paths/patterns or a semicolon-separated list of patterns. Any matching files will be excluded from processing. If None, no
files are excluded. Default: None.

Ipinapakita ng sumusunod na talahanayan ang mga halimbawa ng ilang pattern na maaaring gamitin:

PatternKahuluganHalimbawaTumutugmaHindi Tumutugma
*Tumutugma sa lahat*.pdffile.pdf, report.pdffile.docx
?Tumutugma sa anumang iisang characterfile_?.pdffile_1.pdf, file_A.pdffile_10.pdf
[seq]Tumutugma sa anumang character sa seqfile_[AB].pdffile_A.pdf, file_B.pdffile_C.pdf
[!seq]Tumutugma sa anumang character na hindi nasa seqfile_[!AB].pdffile_C.pdf, file_D.pdffile_A.pdf, file_B.pdf

Mga konsiderasyon sa case sensitivity

Ang mga file name ay case-sensitive sa Linux ngunit case-insensitive sa Windows. Nakaaapekto ito sa kung paano binibigyang-kahulugan ang mga file path o pattern sa iba't ibang operating system.

  • Sa Linux, ang report.pdf at Report.pdf ay itinuturing na magkaibang file.
  • Sa Windows, pareho silang itinuturing na iisang file.

Rekomendasyon: Upang matiyak ang pagkakapare-pareho sa iba’t ibang platform, gumamit ng pare-parehong paggamit ng malaki at maliit na titik sa mga file name at pattern. Kung nagtatrabaho sa maraming environment, isaalang-alang ang paggamit ng mga wildcard pattern (*) kung naaangkop upang maiwasan ang hindi pagtutugma.

Pangangasiwa ng mga pagsasama ng iisang file

Kung nagsespecify ng iisang file gamit ang --include-files, tandaan na unang sinusuri ng Conform kung ang ibinigay na value ay isang file on disk, at kung hindi, ituturing ang value bilang isang pattern.

Posibleng isyu: Kung magsespecify ang isang user ng:

--include-files "/home/azureuser/input_files/first.pdf"

Makikita ng Conform na ang /home/azureuser/input_files/first.pdf ay umiiral bilang isang file, at susubukan nitong basahin ito bilang isang list file na naglalaman ng maraming path o pattern.

Solusyon: Upang tahasang ipahiwatig na ito ay isang pattern para sa iisang file, magdagdag ng trailing semicolon:

--include-files "/home/azureuser/input_files/first.pdf;"

Tinitiyak nito na ituturing ng Conform ang path bilang isang pattern sa halip na isang list file.

Isama ang mga partikular na PDF file

Upang iproseso lamang ang mga PDF na may "report" sa filename:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --include-files "*report*.pdf"

Resulta: Tanging mga file tulad ng annual_report.pdf, summary_report_2023.pdf, atbp., ang pinoproseso.

Ibukod ang mga partikular na PDF file

Upang iproseso ang lahat ng PDF maliban sa mga may "draft" sa pangalan:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --exclude-files "*draft*.pdf"

Resulta: Lahat ng PDF ay pinoproseso, maliban sa mga file tulad ng proposal_draft.pdf at internal_draft_v2.pdf.

Ibukod ang isang buong directory

Para ibukod ang lahat ng file sa loob ng /home/azureuser/input_files/archive/:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --exclude-files "*/archive/*"

Resulta: Nilalaktawan ang lahat ng nasa loob ng /home/azureuser/input_files/archive/.

Pagsamahin ang include at exclude

Kung tumutugma ang isang file sa parehong inclusion at exclusion rule, ito ay ibubukod.

Para iproseso ang lahat ng file mula sa SET_03, ngunit ibukod ang mga file na naglalaman ng "error_log":

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --include-files "*/SET_03/*" --exclude-files "*error_log*"

Resulta: Ang mga file lamang mula sa SET_03/ ang pinoproseso, maliban sa anumang naglalaman ng "error_log" sa filename.

Paggamit ng file para sa malalaking listahan

Para sa mas kumplikadong pag-filter, maaari kang magbigay ng file na naglalaman ng maraming pattern o absolute file paths sa halip na direktang tukuyin ang mga ito.

Halimbawa gamit ang inclusion list file:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --include-files "include_list.txt"

Halimbawa ng include_list.txt:

*/SET_03/*.pdf
*reports_2023_*.pdf
/home/azureuser/input_files/SET_02/splat.pdf

Resulta: Pinoproseso lamang ang mga file mula sa SET_03/, mga file na naglalaman ng reports_2023_, at ang partikular na file na /home/azureuser/input_files/SET_02/splat.pdf.


Istruktura at pagkakategorya ng output file

Maaaring i-customize ang istruktura ng direktoryo para sa mga output file para sa parehong engine at conform_only na mga processing mode gamit ang --output-structure na command line argument.

  --output-structure {categorised,mirrored}
Optional. Defines the directory structure of output files. 'categorised' organises output files into subdirectories based on processing status ('engine_success', 'conform_success', 'failure').
'mirrored' places successfully processed output files directly in the output directory, maintaining the original input directory structure, and failed files will not be copied. Default: categorised.

Kung hindi isinama, gagamitin ang default na istrukturang categorised. May mga karagdagang opsyon na available upang i-customize ang mga pangalan ng subdirectory ng kategorya:

  • --engine-success-path: Opsyonal. Pangalan ng output subdirectory para sa mga file na matagumpay na naproseso ng Embedded Engine nang hindi na kailangan ng reconstruction ng Conform. Default 01_engine_success
  • --conform-success-path: Opsyonal. Pangalan ng output subdirectory para sa mga file na sa simula ay hindi maproseso ng Embedded Engine, ngunit na-reconstruct ng Conform at pagkatapos ay matagumpay na naproseso ng Embedded Engine. Default 02_conform_engine_success
  • --failure-path: Opsyonal. Pangalan ng output subdirectory para sa mga file na nabigong maproseso gamit ang parehong Embedded Engine at Conform. Default 03_failure

Halimbawa ng istrukturang output na categorised

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0

Halimbawang input directory:

/home/azureuser/input_files
conforming_docx.docx
conforming_pdf.pdf
corrupt_docx.docx
nonconforming_pdf.pdf
unsupported_filetype.txt

Halimbawang output directory pagkatapos ng pagproseso:

/home/azureuser/output_files
├───01_engine_success
│ conforming_docx.docx
│ conforming_pdf.pdf

├───02_conform_engine_success
│ nonconforming_pdf.pdf

└───03_failure
corrupt_docx.docx
unsupported_filetype.txt

Kapag ginagamit ang istrukturang output na categorised, kung nais na ang lahat ng matagumpay na naprotektahang file ay maisulat sa iisang output directory, hindi alintana kung ginamit o hindi ang Conform upang muling buuin ang file, maaari mong tukuyin na isulat ang mga file sa parehong path ng success subdirectory. Halimbawa:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --engine-success-path success --conform-success-path success --failure-path failure

Halimbawa ng istrukturang output na mirrored

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --output-structure mirrored

Halimbawang input directory:

/home/azureuser/input_files
conforming_docx.docx
conforming_pdf.pdf
corrupt_docx.docx
nonconforming_pdf.pdf
unsupported_filetype.txt

Halimbawang output directory pagkatapos ng pagproseso:

/home/azureuser/output_files
conforming_docx.docx
conforming_pdf.pdf
nonconforming_pdf.pdf

Buod pagkatapos ng pagproseso

Bilang default, may isinusulat na buod pagkatapos matapos ng Conform ang pagproseso ng mga file. Nagbibigay ang buod ng detalyadong impormasyon gaya ng mga return status, oras ng pagproseso, at paggamit ng memory para sa bawat file. Kinokontrol ng argument na --summary-verbosity kung aling mga file ang isasama sa buod. Hiwalay ang setting na ito sa logging level at hindi nito naaapektuhan ang mga detalyadong log output.

Mga Available na Opsyon

  • all (default) - Isinasama ang parehong matagumpay na naproseso at mga nabigong file.
  • failure - Isinasama lamang ang mga nabigong file.
  • success - Isinasama lamang ang mga matagumpay na naprosesong file.
  • none - Ganap na hindi pinapagana ang output ng buod.

Maaaring gamitin ang argument na --summary-path upang isulat ang buod sa disk bilang isang JSON file sa halip na ipakita lamang ito sa terminal.

Halimbawa upang isama lamang ang mga nabigong file sa buod na output:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --summary-verbosity failure --summary-path /home/azureuser/conform_summary.json

Halimbawa upang ganap na i-disable ang buod na output:

glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --summary-verbosity none --summary-path /home/azureuser/conform_summary.json

Halimbawang buod na JSON output (Windows):

{
"conform_version": "0.10.1",
"operating_system": "Windows",
"summary_verbosity": "all",
"processing_rates": {
"success": 50.0,
"failure": 50.0
},
"processing_counts": {
"success": 2,
"failure": 2,
"total": 4
},
"processing_time": {
"elapsed_seconds": 43.61,
"files_per_sec": 0.09,
"secs_per_file": 10.9
},
"processing_arguments": {
"mode": "engine",
"input_directory": "C:\\conform\\input",
"output_directory": "C:\\conform\\output",
"library_directory": "C:\\azure\\sdk.editor\\2.1394.0",
"cautious_mode": false,
"max_workers": 3,
"timeout_seconds": 180,
"memory_limit_gib": 4.35,
"function_name": "protect_file",
"content_management_policy": null,
"include_files": null,
"exclude_files": null,
"output_structure": "categorised"
},
"processing_success": [
{
"input_file": "C:\\conform\\input\\pal1.bmp",
"output_file": "C:\\conform\\output\\01_engine_success\\pal1.bmp",
"engine_status": "OK(0)",
"max_memory_used_in_gib": 0.11124420166015625,
"elapsed_time": 0.9149298667907715,
"success": true
},
{
"input_file": "C:\\conform\\input\\Set-08-016599.pdf",
"output_file": "C:\\conform\\output\\02_conform_engine_success\\Set-08-016599.pdf",
"engine_status": "GeneralFail(-1)",
"engine_GW2FileErrorMsg": "[FAILURE_LOG_SEM_FONTS_0021897368] Key /FirstChar must be present in a Type 1 Font dictionary other than for standard 14. fonts.",
"engine_conform_fast_status": "GeneralFail(-1)",
"engine_conform_fast_GW2FileErrorMsg": "[FAILURE_LOG_SEM_FONTS_0021897368] Key /FirstChar must be present in a Type 1 Font dictionary other than for standard 14. fonts.",
"engine_conform_cautious_status": "OK(0)",
"max_memory_used_in_gib": 0.22198104858398438,
"elapsed_time": 1.8940067291259766,
"success": true
}
],
"processing_failure": [
{
"input_file": "C:\\conform\\input\\pal1_corrupt.bmp",
"engine_status": "FileTypeUnknown(-7)",
"engine_GW2FileErrorMsg": "Unable to determine file type",
"engine_conform_fast_status": "PdfFastProcessError()",
"engine_conform_cautious_status": "PdfExtractionError(Unable to extract content from PDF: 'C:\\conform\\input\\pal1_corrupt.bmp')",
"exit_code": 0,
"timed_out": false,
"out_of_memory": false,
"max_memory_used_in_gib": 0.13513565063476562,
"elapsed_time": 0.8690056800842285,
"success": false
},
{
"input_file": "C:\\conform\\input\\Straw120556398.pdf",
"timed_out": false,
"out_of_memory": true,
"max_memory_used_in_gib": 4.3571624755859375,
"elapsed_time": 41.976775884628296,
"exception": "MemoryError()",
"success": false
}
]
}