Panduan pengguna
Glasswall Conform dirancang untuk memproses awal file PDF agar memenuhi standar untuk pemrosesan lebih lanjut. Solusi ini mengekstrak dan merekonstruksi konten visual dan harus digunakan bersama Glasswall Embedded Engine untuk perlindungan Content Disarm and Reconstruction (CDR) yang lengkap.
Dokumen ini memberikan petunjuk tentang penggunaan Conform untuk merekonstruksi dokumen PDF, beserta beberapa contoh untuk menjalankan alat command-line.
Instalasi
Conform diinstal sebagai perintah tingkat sistem yang dapat diakses dari terminal Anda.
Setelah diinstal, perintah glasswall_conform akan tersedia pada PATH sistem Anda. Anda mungkin perlu memulai ulang sesi terminal agar perubahan ini berlaku.
Windows
Conform untuk Windows didistribusikan sebagai installer .exe. Installer ini dipasang ke C:\Program Files (x86)\Glasswall Conform dan menambahkan folder ini ke PATH sistem Anda.
Instal Conform dengan menjalankan installer dan mengikuti petunjuk berikut:
.\glasswall-conform-1.1.0.exe
Atau instal secara senyap untuk otomatisasi atau lingkungan CI:
.\glasswall-conform-1.1.0.exe /VERYSILENT
Linux
Conform untuk Linux didistribusikan sebagai paket .rpm dan .deb.
Keduanya menginstal file ke /opt/glasswall_conform dan membuat symbolic link di /usr/local/bin agar glasswall_conform dapat dijalankan dari command line.
RPM (mis. Rocky 9, Rocky 8)
sudo yum -y install ./glasswall_conform-1.1.0-1.x86_64.rpm
DEB (mis. Ubuntu 24.04, Ubuntu 22.04)
sudo apt-get -y install ./glasswall-conform_1.1.0_amd64.deb
Penyiapan
Sebelum memanggil glasswall_conform, pastikan lingkungan Anda telah disiapkan dengan benar.
Untuk mode yang menggunakan Embedded Engine, direktori yang diberikan ke --library-directory harus berisi biner Embedded Engine. Conform memverifikasi hal ini saat startup dan berhenti dengan pesan singkat jika biner tersebut tidak ada.
Linux
Untuk mode pemrosesan yang menggunakan Embedded Engine, LD_LIBRARY_PATH harus diatur agar menyertakan direktori yang berisi Embedded Engine. Sebagai contoh, jika Embedded Engine berada di path /home/azureuser/glasswall/Release-16.2.0 Anda dapat memodifikasi LD_LIBRARY_PATH untuk sementara:
export LD_LIBRARY_PATH=/home/azureuser/glasswall/Release-16.2.0:$LD_LIBRARY_PATH
Ubuntu
Pada sistem berbasis Ubuntu, jika Anda menemukan pesan kesalahan libgthread-2.0.so.0: cannot open shared object file: No such file or directory, Anda dapat mengatasinya dengan menginstal paket yang diperlukan menggunakan perintah berikut:
DEBIAN_FRONTEND=noninteractive && apt update && apt install -y libglib2.0-0
Windows
Kami merekomendasikan penginstalan dependensi Windows menggunakan chocolatey.
Untuk semua mode pemrosesan, Microsoft Visual C++ Redistributable harus diinstal.
Untuk mode pemrosesan yang menggunakan Embedded Engine:
-
PATHharus diatur agar menyertakan direktori yang berisi Embedded Engine. Sebagai contoh, jika Embedded Engine berada di pathC:/glasswall/Release-16.2.0Anda dapat memodifikasiPATHuntuk sementara:SET "PATH=%PATH%;C:/glasswall/Release-16.2.0" -
OpenSSL light atau OpenSSL harus diinstal.
Contoh instalasi docker Windows untuk vcredist140 dan openssl.light menggunakan 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;
Lisensi
Glasswall Conform memerlukan lisensi yang valid untuk beroperasi. Untuk memperoleh file lisensi, hubungi [email protected].
Argumen --license dapat digunakan di semua mode pemrosesan untuk menentukan baik path langsung ke file lisensi, maupun path ke direktori yang berisi file gwkey.lic.
- Engine modes (
engine,engine_memory):--licenseis optional. If not specified, Conform will automatically search the--library-directoryfor agwkey.licfile. If one is found, it is used as the license. If not found, an error is raised. - Mode khusus Conform (
conform_only,conform_only_memory):--licensewajib, karena tidak ada direktori library untuk dicari.
Jika lisensi tidak ada, tidak valid, atau tidak berisi entitlement yang diperlukan, Conform akan keluar dengan kode error 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.
Mode pemrosesan
Conform dijalankan dari command line dan menawarkan beberapa mode pemrosesan untuk memproses file. Saat memanggil glasswall_conform, argumen posisional pertama menentukan mode pemrosesan. Mode pemrosesan yang tersedia adalah:
- engine: Melindungi file menggunakan Engine. File yang tidak conforming direkonstruksi oleh Conform lalu diproses oleh Engine.
- conform_only: Merekonstruksi file hanya menggunakan Conform, tanpa memberikan perlindungan CDR.
- engine_memory: Menerima file yang dienkode base64 melalui standard input. Melindungi satu file di memori menggunakan Engine. Jika file tidak conforming, file tersebut direkonstruksi menggunakan Conform lalu diproses oleh Engine. File yang telah diproses dikembalikan melalui standard output, atau error dikembalikan melalui standard error.
- conform_only_memory: Menerima file yang dienkode base64 melalui standard input. Merekonstruksi satu file hanya menggunakan Conform, tanpa menyediakan perlindungan CDR. File hasil rekonstruksi dikembalikan melalui standard output, atau kesalahan dikembalikan melalui standard error.
Untuk menampilkan mode pemrosesan yang tersedia:
glasswall_conform -h
engine
Mode pemrosesan ini adalah default yang dimaksudkan dan membersihkan file menggunakan teknologi Glasswall CDR. Mode ini memerlukan akses ke Embedded Engine dan lisensi yang valid.
Untuk contoh pemanggilan mode pemrosesan ini, lihat: Perlindungan end-to-end.
File yang diproses diurutkan ke dalam salah satu dari tiga subdirektori output:
- 01_engine_success: File berhasil diproses oleh Embedded Engine tanpa perlu rekonstruksi oleh Conform.
- 02_conform_engine_success: File PDF yang pada awalnya tidak dapat diproses oleh Embedded Engine, tetapi direkonstruksi oleh Conform dan kemudian berhasil diproses oleh Embedded Engine.
- 03_failure: File yang gagal diproses menggunakan Embedded Engine maupun Conform, atau yang berisi konten yang telah diatur untuk tidak diizinkan menggunakan policy manajemen konten kustom.
Untuk menampilkan argumen command line untuk mode pemrosesan engine:
glasswall_conform engine -h
conform_only
Mode pemrosesan ini merekonstruksi file tanpa menggunakan Embedded Engine. Mode ini tidak menyediakan perlindungan CDR.
Untuk contoh pemanggilan mode pemrosesan ini, lihat: Merekonstruksi file tanpa perlindungan CDR
File yang diproses diurutkan ke dalam salah satu dari dua subdirektori output:
- 01_conform_success: File berhasil direkonstruksi oleh Conform.
- 02_failure: File yang gagal direkonstruksi oleh Conform.
Untuk menampilkan argumen baris perintah untuk mode pemrosesan conform_only:
glasswall_conform conform_only -h
engine_memory
Mode ini menerima file yang dienkode base64 melalui standard input dan memprosesnya menggunakan Embedded Engine. Jika file tidak sesuai, file tersebut direkonstruksi oleh Conform, lalu diproses oleh Engine. Output akhir dikembalikan melalui standard output, atau kesalahan dikembalikan melalui standard error. Tidak ada file yang ditulis ke disk.
Mode ini ideal untuk diintegrasikan dengan sistem yang menyimpan file di memori dan tidak bergantung pada input atau output filesystem.
Untuk contoh pemanggilan mode pemrosesan ini, lihat: Memproses file di memori tanpa membaca dari atau menulis ke disk.
Untuk menampilkan argumen baris perintah untuk mode pemrosesan engine_memory:
glasswall_conform engine_memory -h
Argumen opsional --file-name dapat digunakan untuk menentukan nama file dalam memori. Ini digunakan saat menulis log dan ringkasan pascapemrosesan, dan secara default menggunakan 8 karakter pertama dari data yang dienkode base64 jika tidak ditentukan.
conform_only_memory
Mode ini menerima file yang dienkode base64 melalui standard input dan merekonstruksinya hanya menggunakan Conform (tanpa perlindungan CDR). File yang direkonstruksi dikembalikan melalui standard output, atau kesalahan dikembalikan melalui standard error. Tidak ada file yang ditulis ke disk.
Untuk contoh pemanggilan mode pemrosesan ini, lihat: Memproses file di memori tanpa membaca dari atau menulis ke disk.
Untuk menampilkan argumen baris perintah untuk mode pemrosesan conform_only_memory:
glasswall_conform conform_only_memory -h
Pengujian
Dataset file uji PDF untuk mengevaluasi Conform tersedia berdasarkan permintaan. Silakan hubungi kami untuk meminta akses ke file uji melalui Kiteworks.
Contoh
- Examples
- Perlindungan end-to-end
- Merekonstruksi file tanpa perlindungan CDR
- Memproses file di memori tanpa membaca dari atau menulis ke disk
- Mode cepat dan mode hati-hati
- Fungsionalitas Glasswall Python Wrapper
- Multiprocessing
- Pencatatan log
- Sesuaikan tingkat penanganan konten
- Pemberian watermark
- Penekanan CID
- Penggantian font
- Pemfilteran penyertaan dan pengecualian file
- Output file structure and categorisation
- Ringkasan pascapemrosesan
Perlindungan menyeluruh
Contoh ini menunjukkan penggunaan mode pemrosesan engine pada tingkat paling dasar.
glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0
Contoh direktori input:
/home/azureuser/input_files
conforming_docx.docx
conforming_pdf.pdf
corrupt_docx.docx
nonconforming_pdf.pdf
unsupported_filetype.txt
Contoh direktori output setelah pemrosesan:
/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
Perhatikan bahwa nama subdirektori dapat disesuaikan menggunakan argumen berikut:
- --engine-success-path: Opsional. Nama subdirektori output untuk file yang berhasil diproses oleh Embedded Engine tanpa perlu rekonstruksi oleh Conform. Default 01_engine_success
- --conform-success-path: Opsional. Nama subdirektori output untuk file yang pada awalnya tidak dapat diproses oleh Embedded Engine, tetapi direkonstruksi oleh Conform lalu berhasil diproses oleh Embedded Engine. Default 02_conform_engine_success
- --failure-path: Opsional. Nama subdirektori output untuk file yang gagal diproses menggunakan Embedded Engine maupun Conform. Default 03_failure
Jika diinginkan agar semua file yang berhasil dilindungi ditulis ke direktori output yang sama, terlepas dari apakah Conform digunakan untuk merekonstruksi file atau tidak, Anda dapat menentukan agar file ditulis ke path subdirektori keberhasilan yang sama. Sebagai contoh:
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
Contoh output terminal yang dipotong setelah pemrosesan:
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
Merekonstruksi file tanpa perlindungan CDR
Mode pemrosesan conform_only tidak menyediakan perlindungan CDR, dan memerlukan direktori input -i, direktori output -o, serta path --license. Lihat conform_only.
glasswall_conform conform_only -i /home/azureuser/input_files -o /home/azureuser/output_files --license /home/azureuser/gwkey.lic
Memproses file di memori tanpa membaca dari atau menulis ke disk
Mode pemrosesan engine_memory dan conform_only_memory dapat digunakan untuk memproses file di memori tanpa menggunakan I/O.
Jika pemrosesan berhasil, file output yang dienkode base64 dikembalikan melalui standard output. Jika terjadi kesalahan selama pemrosesan, pesan kesalahan dan ringkasan pascapemrosesan akan ditulis ke standard error.
Contoh standard error untuk kegagalan timeout:
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}]}
Contoh penggunaan dasar:
Pipe string yang dienkode base64 dari file PDF di memori langsung ke glasswall_conform
echo "U29tZUJhc2U2NERhdGE=" | glasswall_conform.exe engine_memory -l "C:/azure/sdk.editor/2.1394.0" --file-name "SomeBase64Data"
Atau menggunakan Python melalui 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)
Demikian pula, mode conform_only_memory dapat digunakan dengan mengganti engine_memory pada contoh di atas, menghilangkan argumen -l dan menentukan --license karena diperlukan untuk mode ini.
Mode cepat dan mode hati-hati
Mode cepat adalah mode pemrosesan default di Conform. Mode ini menawarkan kecepatan pemrosesan tercepat dan tampilan visual terbaik untuk file PDF, tetapi mungkin tidak cocok untuk skenario yang memerlukan kepatuhan yang sangat ketat terhadap spesifikasi PDF.
Jika mode cepat dinonaktifkan atau tidak dapat memproses file, Conform secara otomatis beralih ke mode hati-hati. Mode ini memprioritaskan kepatuhan dan pengurangan risiko dengan mengganti font tersemat, yang membantu memitigasi masalah yang terkait dengan font kustom atau tidak dikenal. Mode hati-hati dapat menghasilkan fidelitas visual yang lebih rendah, seperti gambar yang menurun kualitasnya atau hilang, ukuran font yang tidak konsisten, atau teks yang hilang.
- Menonaktifkan fast mode hanya direkomendasikan ketika kepatuhan yang sangat ketat terhadap standar PDF sangat penting, meskipun harus mengorbankan fidelitas visual.
- Menonaktifkan cautious mode hanya direkomendasikan ketika mempertahankan font tersemat sangat penting, atau ketika tampilan visual lebih penting daripada kemampuan Conform untuk berhasil memproses rentang PDF yang lebih luas.
Fast mode dapat dinonaktifkan menggunakan argumen command line opsional --disable-fast-mode.
Cautious mode dapat dinonaktifkan menggunakan argumen command line opsional --disable-cautious-mode.
Saat Conform berhasil memproses file menggunakan fast mode:
- Kecepatan pemrosesan tercepat.
- Tampilan visual terbaik.
- Font tersemat kustom tidak diganti.
- Mungkin tidak cocok untuk skenario yang memerlukan kepatuhan yang sangat ketat terhadap standar PDF.
Saat Conform menggunakan fallback cautious mode:
- Kecepatan pemrosesan lebih lambat.
- In a small number of cases, may result in reduced visual appearance, such as:
- Gambar dan grafik menurun kualitasnya atau hilang.
- Perbedaan pada tampilan teks (mis. ukuran, gaya font, atau spasi).
- Teks hilang saat font tersemat yang tidak dikenal sedang digunakan.
- Memproses PDF dengan kepatuhan yang lebih ketat terhadap spesifikasi.
- Mengganti font tersemat kustom dengan font yang tepercaya.
Fungsionalitas Glasswall Python Wrapper
Dalam mode pemrosesan engine, fungsi protect_file dari Glasswall Python Wrapper digunakan secara default untuk memproses file menggunakan Embedded Engine. Ini dapat diubah menggunakan argumen command line opsional -f.
Sebuah policy manajemen konten sanitise default diterapkan jika file policy tidak ditentukan menggunakan argumen command line opsional -c.
Argumen command line -l yang wajib harus mengarah ke direktori yang berisi Embedded Engine.
Argumen berikut terkait dengan 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.
Contoh:
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
Semua mode pemrosesan memanfaatkan GlasswallProcessManager milik Glasswall Python Wrapper untuk memproses file secara bersamaan dengan efisien.
Argumen berikut terkait dengan 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.
Contoh:
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
Pencatatan log
Level logging default untuk Conform dan Glasswall Python Wrapper adalah INFO. Argumen berikut terkait dengan 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.
Untuk menekan sebagian besar logging:
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
Sesuaikan tingkat penanganan konten
Bagian ini hanya berlaku ketika fast mode dinonaktifkan.
Secara default, Conform menghasilkan file output kapan pun memungkinkan, bahkan jika hanya sebagian dari konten dokumen asli yang berhasil ditangani. Perilaku ini mungkin tidak selalu diinginkan, dan dapat disesuaikan untuk berbagai jenis konten dalam setiap dokumen.
Conform menggunakan "perkiraan terbaik" saat menangani konten teks yang malformed, rusak, atau tidak didukung untuk memastikan sebanyak mungkin teks dipindahkan dari dokumen asli ke dokumen hasil conform. Sebagai contoh, jika warna stroke teks malformed atau dalam format warna yang tidak didukung, teks akan dipertahankan dalam dokumen output, dengan warna stroke default menjadi hitam.
Pendekatan "perkiraan terbaik" ini dapat menghasilkan teks yang tampak mirip dengan aslinya, atau dalam beberapa kasus, teks yang tidak terlihat tetapi tetap ada dalam dokumen output. Karena kami tidak dapat menjamin bahwa perkiraan terbaik kami akan menangani teks dengan cara yang sama seperti pada dokumen asli, tingkat penanganan mencerminkan hal ini sebagai konten yang belum sepenuhnya ditangani. Akibatnya, tingkat penanganan yang rendah untuk teks tidak selalu menunjukkan bahwa dokumen akan terlihat berbeda secara visual ketika perkiraan terbaik diterapkan.
Ada tiga argumen yang tersedia untuk menetapkan tingkat keberhasilan minimum saat menangani konten:
--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.
Jika nilai tingkat penanganan konten minimum tidak terpenuhi, maka pemrosesan untuk file tersebut akan dianggap gagal dan file output tidak akan ditulis.
Pemberian watermark
Pemberian watermark dinonaktifkan secara default, tetapi dapat diaktifkan menggunakan argumen --watermark. Teks akan ditambahkan dengan ukuran font 12 dalam warna abu-abu gelap semi-transparan. Watermark biasanya diposisikan di kanan atas dokumen, namun bergantung pada rotasi yang telah diterapkan pada halaman, orientasinya dapat berbeda. Panjang teks maksimum untuk watermark saat ini adalah 256 karakter.
--watermark WATERMARK
Optional. Adds a watermark to each page of the reconstructed document. Default '' (disabled).
Contoh:
glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --watermark "Glasswall Conform"
Penekanan CID
Bagian ini hanya berlaku ketika fast mode dinonaktifkan.
Dalam PDF, beberapa font menggunakan sistem yang disebut CID (Character Identifier) untuk mengelola kumpulan karakter yang besar. Saat membuat PDF baru, jika alat menemukan karakter yang tidak dapat diproses, alat tersebut akan menggantinya dengan karakter tanda tanya default (?). Anda dapat menyesuaikan bagaimana CID yang tidak dapat diproses direpresentasikan dalam PDF Anda menggunakan argumen --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 '■'.
Contoh:
glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --suppress-cid "?"
Penggantian font
Bagian ini hanya berlaku ketika fast mode dinonaktifkan.
Conform mendukung varian bold, italic, dan bold italic dari 14 font dasar Type1 serta font Cambria. Conform juga mendukung beberapa font kustom.
14 font dasar Type1 adalah:
- Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique
- Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique
- Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic
- Symbol
- ZapfDingbats
Font tersemat yang tidak didukung dapat diganti dengan font Cambria. Jika Cambria tidak mendukung glyph dari font tersemat, karakter tersebut akan ditekan. Untuk informasi lebih lanjut tentang ini, lihat Penekanan CID.
Secara default, beberapa font sans serif tersemat yang umum diganti dengan Helvetica alih-alih Cambria demi kemiripan visual. Ini, dan fitur penggantian font lainnya, dapat dimodifikasi menggunakan argumen berikut:
--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.
Contoh:
glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0 --disable-custom-fonts
Pemfilteran penyertaan dan pengecualian file
Conform memungkinkan kontrol tambahan atas file mana di direktori input yang diproses dengan menggunakan filter penyertaan dan pengecualian. Filter ini memungkinkan Anda menentukan file mana yang akan diproses atau diabaikan menggunakan wildcard gaya shell Unix dasar langsung dari command line. Jika sebuah file cocok dengan aturan penyertaan dan pengecualian sekaligus, file tersebut akan dikecualikan.
Secara default, jika argumen --include-files dan --exclude-files dihilangkan, Conform akan memproses semua file yang ada di direktori input.
Argumen berikut terkait dengan penyertaan dan pengecualian 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.
Tabel berikut menunjukkan contoh beberapa pola yang dapat digunakan:
| Pola | Arti | Contoh | Cocok | Tidak Cocok |
|---|---|---|---|---|
* | Cocok dengan semuanya | *.pdf | file.pdf, report.pdf | file.docx |
? | Cocok dengan satu karakter apa pun | file_?.pdf | file_1.pdf, file_A.pdf | file_10.pdf |
[seq] | Cocok dengan karakter apa pun dalam seq | file_[AB].pdf | file_A.pdf, file_B.pdf | file_C.pdf |
[!seq] | Cocok dengan karakter apa pun yang bukan dalam seq | file_[!AB].pdf | file_C.pdf, file_D.pdf | file_A.pdf, file_B.pdf |
Pertimbangan sensitivitas huruf besar/kecil
Nama file peka terhadap huruf besar/kecil di Linux tetapi tidak peka terhadap huruf besar/kecil di Windows. Hal ini memengaruhi cara path atau pola file ditafsirkan di berbagai sistem operasi.
- Di Linux,
report.pdfdanReport.pdfdiperlakukan sebagai file yang berbeda. - Di Windows, keduanya dianggap sebagai file yang sama.
Rekomendasi:
Untuk memastikan konsistensi di seluruh platform, gunakan kapitalisasi yang konsisten pada nama file dan pola. Jika bekerja di beberapa lingkungan, pertimbangkan untuk menggunakan pola wildcard (*) jika sesuai agar terhindar dari ketidakcocokan.
Menangani penyertaan file tunggal
Jika menentukan satu file dengan --include-files, perlu diketahui bahwa Conform terlebih dahulu memeriksa apakah nilai yang diberikan adalah file di disk, dan jika bukan maka nilai tersebut diperlakukan sebagai pattern.
Potensi masalah: Jika pengguna menentukan:
--include-files "/home/azureuser/input_files/first.pdf"
Conform akan melihat bahwa /home/azureuser/input_files/first.pdf ada sebagai sebuah file, dan mencoba membacanya sebagai file daftar yang berisi beberapa path atau pattern.
Solusi: Untuk secara eksplisit menunjukkan bahwa ini adalah pattern untuk satu file, tambahkan titik koma di akhir:
--include-files "/home/azureuser/input_files/first.pdf;"
Ini memastikan bahwa Conform memperlakukan path tersebut sebagai pattern, bukan file daftar.
Sertakan file PDF tertentu
Untuk memproses hanya PDF dengan "report" di nama file:
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"
Hasil: Hanya file seperti annual_report.pdf, summary_report_2023.pdf, dan sebagainya, yang diproses.
Kecualikan file PDF tertentu
Untuk memproses semua PDF kecuali yang mengandung "draft" dalam namanya:
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"
Hasil: Semua PDF diproses, kecuali file seperti proposal_draft.pdf dan internal_draft_v2.pdf.
Kecualikan seluruh direktori
Untuk mengecualikan semua file di dalam /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/*"
Hasil: Semua yang ada di dalam /home/azureuser/input_files/archive/ dilewati.
Menyertakan dan mengecualikan sekaligus
Jika sebuah file cocok dengan aturan penyertaan dan pengecualian sekaligus, file tersebut akan dikecualikan.
Untuk memproses semua file dari SET_03, tetapi mengecualikan file yang berisi "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*"
Hasil: Hanya file dari SET_03/ yang diproses, kecuali file apa pun yang mengandung "error_log" dalam nama file.
Menggunakan file untuk daftar besar
Untuk pemfilteran yang lebih kompleks, Anda dapat menyediakan file yang berisi beberapa pola atau path file absolut alih-alih menentukannya secara langsung.
Contoh menggunakan file daftar penyertaan:
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"
Contoh include_list.txt:
*/SET_03/*.pdf
*reports_2023_*.pdf
/home/azureuser/input_files/SET_02/splat.pdf
Hasil: Hanya memproses file dari SET_03/, file yang mengandung reports_2023_, dan file spesifik /home/azureuser/input_files/SET_02/splat.pdf.
Struktur file output dan kategorisasi
Struktur direktori untuk file output dapat disesuaikan untuk mode pemrosesan engine dan conform_only menggunakan argumen command line --output-structure.
--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.
Jika dihilangkan, struktur default categorised akan digunakan. Opsi tambahan tersedia untuk menyesuaikan nama subdirektori kategori:
- --engine-success-path: Opsional. Nama subdirektori output untuk file yang berhasil diproses oleh Embedded Engine tanpa perlu rekonstruksi oleh Conform. Default 01_engine_success
- --conform-success-path: Opsional. Nama subdirektori output untuk file yang pada awalnya tidak dapat diproses oleh Embedded Engine, tetapi direkonstruksi oleh Conform lalu berhasil diproses oleh Embedded Engine. Default 02_conform_engine_success
- --failure-path: Opsional. Nama subdirektori output untuk file yang gagal diproses menggunakan Embedded Engine maupun Conform. Default 03_failure
Contoh struktur output categorised
glasswall_conform engine -i /home/azureuser/input_files -o /home/azureuser/output_files -l /home/azureuser/glasswall/Release-16.2.0
Contoh direktori input:
/home/azureuser/input_files
conforming_docx.docx
conforming_pdf.pdf
corrupt_docx.docx
nonconforming_pdf.pdf
unsupported_filetype.txt
Contoh direktori output setelah pemrosesan:
/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
Saat menggunakan struktur output categorised, jika diinginkan agar semua file yang berhasil diproteksi ditulis ke direktori output yang sama, terlepas dari apakah Conform digunakan untuk merekonstruksi file tersebut atau tidak, Anda dapat menentukan agar file ditulis ke path subdirektori sukses yang sama. Contohnya:
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
Contoh struktur output 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
Contoh direktori input:
/home/azureuser/input_files
conforming_docx.docx
conforming_pdf.pdf
corrupt_docx.docx
nonconforming_pdf.pdf
unsupported_filetype.txt
Contoh direktori output setelah pemrosesan:
/home/azureuser/output_files
conforming_docx.docx
conforming_pdf.pdf
nonconforming_pdf.pdf
Ringkasan pascapemrosesan
Secara default, ringkasan ditulis setelah Conform selesai memproses file. Ringkasan tersebut memberikan informasi terperinci seperti status pengembalian, waktu pemrosesan, dan penggunaan memori untuk setiap file. Argumen --summary-verbosity mengontrol file mana yang disertakan dalam ringkasan. Pengaturan ini independen dari level logging dan tidak memengaruhi output log terperinci.
Opsi yang tersedia
all(default) - Menyertakan file yang berhasil diproses maupun yang gagal.failure- Hanya menyertakan file yang gagal.success- Hanya menyertakan file yang berhasil diproses.none- Menonaktifkan output ringkasan sepenuhnya.
Argumen --summary-path dapat digunakan untuk menulis ringkasan ke disk sebagai file JSON alih-alih hanya menampilkannya di terminal.
Contoh untuk hanya menyertakan file yang gagal dalam output ringkasan:
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
Contoh untuk menonaktifkan output ringkasan sepenuhnya:
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
Contoh output JSON ringkasan (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
}
]
}