Sanataize PDF improvements (#3251)

# Description of Changes

Please provide a summary of the changes, including:

- Make distinction between metadata removal and XMP metadata removal
- Change file loaders to only edit metadata for certain ops

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)

### Testing (if applicable)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
This commit is contained in:
Anthony Stirling 2025-03-26 10:53:22 +00:00 committed by GitHub
parent e2ba296320
commit 5ce941dda0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
45 changed files with 175 additions and 83 deletions

View File

@ -86,7 +86,7 @@ public class MetadataController {
allRequestParams = new java.util.HashMap<String, String>();
}
// Load the PDF file into a PDDocument
PDDocument document = pdfDocumentFactory.load(pdfFile);
PDDocument document = pdfDocumentFactory.load(pdfFile, true);
// Get the document information from the PDF
PDDocumentInformation info = document.getDocumentInformation();

View File

@ -51,11 +51,12 @@ public class SanitizeController {
MultipartFile inputFile = request.getFileInput();
boolean removeJavaScript = request.isRemoveJavaScript();
boolean removeEmbeddedFiles = request.isRemoveEmbeddedFiles();
boolean removeXMPMetadata = request.isRemoveXMPMetadata();
boolean removeMetadata = request.isRemoveMetadata();
boolean removeLinks = request.isRemoveLinks();
boolean removeFonts = request.isRemoveFonts();
PDDocument document = pdfDocumentFactory.load(inputFile);
PDDocument document = pdfDocumentFactory.load(inputFile, true);
if (removeJavaScript) {
sanitizeJavaScript(document);
}
@ -64,10 +65,14 @@ public class SanitizeController {
sanitizeEmbeddedFiles(document);
}
if (removeMetadata) {
sanitizeMetadata(document);
if (removeXMPMetadata) {
sanitizeXMPMetadata(document);
}
if (removeMetadata) {
sanitizeDocumentInfoMetadata(document);
}
if (removeLinks) {
sanitizeLinks(document);
}
@ -145,7 +150,7 @@ public class SanitizeController {
}
}
private void sanitizeMetadata(PDDocument document) {
private void sanitizeXMPMetadata(PDDocument document) {
if (document.getDocumentCatalog() != null) {
PDMetadata metadata = document.getDocumentCatalog().getMetadata();
if (metadata != null) {
@ -153,6 +158,16 @@ public class SanitizeController {
}
}
}
private void sanitizeDocumentInfoMetadata(PDDocument document) {
PDDocumentInformation docInfo = document.getDocumentInformation();
if (docInfo != null) {
PDDocumentInformation newInfo = new PDDocumentInformation();
document.setDocumentInformation(newInfo);
}
}
private void sanitizeLinks(PDDocument document) throws IOException {
for (PDPage page : document.getPages()) {

View File

@ -17,9 +17,12 @@ public class SanitizePdfRequest extends PDFFile {
@Schema(description = "Remove embedded files from the PDF", defaultValue = "false")
private boolean removeEmbeddedFiles;
@Schema(description = "Remove metadata from the PDF", defaultValue = "false")
private boolean removeMetadata;
@Schema(description = "Remove XMP metadata from the PDF", defaultValue = "false")
private boolean removeXMPMetadata;
@Schema(description = "Remove document info metadata from the PDF", defaultValue = "false")
private boolean removeMetadata;
@Schema(description = "Remove links from the PDF", defaultValue = "false")
private boolean removeLinks;

View File

@ -68,10 +68,18 @@ public class CustomPDFDocumentFactory {
}
/**
* Main entry point for loading a PDF document from a file. Automatically selects the most
* appropriate loading strategy.
*/
* Main entry point for loading a PDF document from a file. Automatically selects the most
* appropriate loading strategy.
*/
public PDDocument load(File file) throws IOException {
return load(file, false);
}
/**
* Main entry point for loading a PDF document from a file with read-only option.
* Automatically selects the most appropriate loading strategy.
*/
public PDDocument load(File file, boolean readOnly) throws IOException {
if (file == null) {
throw new IllegalArgumentException("File cannot be null");
}
@ -79,14 +87,26 @@ public class CustomPDFDocumentFactory {
long fileSize = file.length();
log.debug("Loading PDF from file, size: {}MB", fileSize / (1024 * 1024));
return loadAdaptively(file, fileSize);
PDDocument doc = loadAdaptively(file, fileSize);
if (!readOnly) {
postProcessDocument(doc);
}
return doc;
}
/**
* Main entry point for loading a PDF document from a Path. Automatically selects the most
* appropriate loading strategy.
*/
* Main entry point for loading a PDF document from a Path. Automatically selects the most
* appropriate loading strategy.
*/
public PDDocument load(Path path) throws IOException {
return load(path, false);
}
/**
* Main entry point for loading a PDF document from a Path with read-only option.
* Automatically selects the most appropriate loading strategy.
*/
public PDDocument load(Path path, boolean readOnly) throws IOException {
if (path == null) {
throw new IllegalArgumentException("File cannot be null");
}
@ -94,11 +114,20 @@ public class CustomPDFDocumentFactory {
long fileSize = Files.size(path);
log.debug("Loading PDF from file, size: {}MB", fileSize / (1024 * 1024));
return loadAdaptively(path.toFile(), fileSize);
PDDocument doc = loadAdaptively(path.toFile(), fileSize);
if (!readOnly) {
postProcessDocument(doc);
}
return doc;
}
/** Load a PDF from byte array with automatic optimization. */
public PDDocument load(byte[] input) throws IOException {
return load(input, false);
}
/** Load a PDF from byte array with automatic optimization and read-only option. */
public PDDocument load(byte[] input, boolean readOnly) throws IOException {
if (input == null) {
throw new IllegalArgumentException("Input bytes cannot be null");
}
@ -106,11 +135,20 @@ public class CustomPDFDocumentFactory {
long dataSize = input.length;
log.debug("Loading PDF from byte array, size: {}MB", dataSize / (1024 * 1024));
return loadAdaptively(input, dataSize);
PDDocument doc = loadAdaptively(input, dataSize);
if (!readOnly) {
postProcessDocument(doc);
}
return doc;
}
/** Load a PDF from InputStream with automatic optimization. */
public PDDocument load(InputStream input) throws IOException {
return load(input, false);
}
/** Load a PDF from InputStream with automatic optimization and read-only option. */
public PDDocument load(InputStream input, boolean readOnly) throws IOException {
if (input == null) {
throw new IllegalArgumentException("InputStream cannot be null");
}
@ -119,11 +157,20 @@ public class CustomPDFDocumentFactory {
Path tempFile = createTempFile("pdf-stream-");
Files.copy(input, tempFile, StandardCopyOption.REPLACE_EXISTING);
return loadAdaptively(tempFile.toFile(), Files.size(tempFile));
PDDocument doc = loadAdaptively(tempFile.toFile(), Files.size(tempFile));
if (!readOnly) {
postProcessDocument(doc);
}
return doc;
}
/** Load with password from InputStream */
public PDDocument load(InputStream input, String password) throws IOException {
return load(input, password, false);
}
/** Load with password from InputStream and read-only option */
public PDDocument load(InputStream input, String password, boolean readOnly) throws IOException {
if (input == null) {
throw new IllegalArgumentException("InputStream cannot be null");
}
@ -132,9 +179,54 @@ public class CustomPDFDocumentFactory {
Path tempFile = createTempFile("pdf-stream-");
Files.copy(input, tempFile, StandardCopyOption.REPLACE_EXISTING);
return loadAdaptivelyWithPassword(tempFile.toFile(), Files.size(tempFile), password);
PDDocument doc = loadAdaptivelyWithPassword(tempFile.toFile(), Files.size(tempFile), password);
if (!readOnly) {
postProcessDocument(doc);
}
return doc;
}
/** Load from a file path string */
public PDDocument load(String path) throws IOException {
return load(path, false);
}
/** Load from a file path string with read-only option */
public PDDocument load(String path, boolean readOnly) throws IOException {
return load(new File(path), readOnly);
}
/** Load from a PDFFile object */
public PDDocument load(PDFFile pdfFile) throws IOException {
return load(pdfFile, false);
}
/** Load from a PDFFile object with read-only option */
public PDDocument load(PDFFile pdfFile, boolean readOnly) throws IOException {
return load(pdfFile.getFileInput(), readOnly);
}
/** Load from a MultipartFile */
public PDDocument load(MultipartFile pdfFile) throws IOException {
return load(pdfFile, false);
}
/** Load from a MultipartFile with read-only option */
public PDDocument load(MultipartFile pdfFile, boolean readOnly) throws IOException {
return load(pdfFile.getInputStream(), readOnly);
}
/** Load with password from MultipartFile */
public PDDocument load(MultipartFile fileInput, String password) throws IOException {
return load(fileInput, password, false);
}
/** Load with password from MultipartFile with read-only option */
public PDDocument load(MultipartFile fileInput, String password, boolean readOnly) throws IOException {
return load(fileInput.getInputStream(), password, readOnly);
}
/**
* Determine the appropriate caching strategy based on file size and available memory. This
* common method is used by both password and non-password loading paths.
@ -197,8 +289,6 @@ public class CustomPDFDocumentFactory {
} else {
throw new IllegalArgumentException("Unsupported source type: " + source.getClass());
}
postProcessDocument(document);
return document;
}
@ -220,8 +310,6 @@ public class CustomPDFDocumentFactory {
} else {
throw new IllegalArgumentException("Unsupported source type: " + source.getClass());
}
postProcessDocument(document);
return document;
}
@ -384,23 +472,4 @@ public class CustomPDFDocumentFactory {
}
}
/** Load from a file path string */
public PDDocument load(String path) throws IOException {
return load(new File(path));
}
/** Load from a PDFFile object */
public PDDocument load(PDFFile pdfFile) throws IOException {
return load(pdfFile.getFileInput());
}
/** Load from a MultipartFile */
public PDDocument load(MultipartFile pdfFile) throws IOException {
return load(pdfFile.getInputStream());
}
/** Load with password from MultipartFile */
public PDDocument load(MultipartFile fileInput, String password) throws IOException {
return load(fileInput.getInputStream(), password);
}
}

View File

@ -733,7 +733,7 @@ sanitizePDF.title=تنظيف PDF
sanitizePDF.header=تنظيف ملف PDF
sanitizePDF.selectText.1=إزالة إجراءات جافا سكريبت
sanitizePDF.selectText.2=إزالة الملفات المضمنة
sanitizePDF.selectText.3=إزالة البيانات الوصفية
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=إزالة الروابط
sanitizePDF.selectText.5=إزالة الخطوط
sanitizePDF.submit=تنظيف PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF-i Təmizlə
sanitizePDF.header=PDF Faylını Təmizlə
sanitizePDF.selectText.1=JavaScript Fəaliyyətlərini Sil
sanitizePDF.selectText.2=Daxil Edilmiş Faylları Sil
sanitizePDF.selectText.3=Metadatanı Sil
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Linkləri Sil
sanitizePDF.selectText.5=Şriftləri Sil
sanitizePDF.submit=PDF-i Təmizlə

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Дезинфектирай PDF
sanitizePDF.header=Дезинфектира PDF файл
sanitizePDF.selectText.1=Премахва JavaScript действия
sanitizePDF.selectText.2=Премахва вградени файлове
sanitizePDF.selectText.3=Премахва метаданни
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Премахва линкове
sanitizePDF.selectText.5=Премахва шрифтове
sanitizePDF.submit=Дезинфектирай PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Neteja PDF
sanitizePDF.header=Neteja un fitxer PDF
sanitizePDF.selectText.1=Elimina accions JavaScript
sanitizePDF.selectText.2=Elimina fitxers incrustats
sanitizePDF.selectText.3=Elimina metadades
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Elimina enllaços
sanitizePDF.selectText.5=Elimina fonts
sanitizePDF.submit=Neteja PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Sanitizovat PDF
sanitizePDF.header=Sanitizovat PDF soubor
sanitizePDF.selectText.1=Odstranit JavaScript akce
sanitizePDF.selectText.2=Odstranit vložené soubory
sanitizePDF.selectText.3=Odstranit metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Odstranit odkazy
sanitizePDF.selectText.5=Odstranit písma
sanitizePDF.submit=Sanitizovat PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Rens PDF
sanitizePDF.header=Rens en PDF-fil
sanitizePDF.selectText.1=Fjern JavaScript-handlinger
sanitizePDF.selectText.2=Fjern indlejrede filer
sanitizePDF.selectText.3=Fjern metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Fjern links
sanitizePDF.selectText.5=Fjern skrifttyper
sanitizePDF.submit=Rens PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF Bereinigen
sanitizePDF.header=PDF Bereinigen
sanitizePDF.selectText.1=Javascript-Aktionen entfernen
sanitizePDF.selectText.2=Eingebettete Dateien entfernen
sanitizePDF.selectText.3=Metadaten entfernen
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Links entfernen
sanitizePDF.selectText.5=Schriftarten entfernen
sanitizePDF.submit=Bereinigen

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Εξυγίανση PDF
sanitizePDF.header=Εξυγίανση αρχείου PDF
sanitizePDF.selectText.1=Αφαίρεση ενεργειών JavaScript
sanitizePDF.selectText.2=Αφαίρεση ενσωματωμένων αρχείων
sanitizePDF.selectText.3=Αφαίρεση μεταδεδομένων
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Αφαίρεση συνδέσμων
sanitizePDF.selectText.5=Αφαίρεση γραμματοσειρών
sanitizePDF.submit=Εξυγίανση PDF

View File

@ -733,9 +733,10 @@ sanitizePDF.title=Sanitize PDF
sanitizePDF.header=Sanitize a PDF file
sanitizePDF.selectText.1=Remove JavaScript actions
sanitizePDF.selectText.2=Remove embedded files
sanitizePDF.selectText.3=Remove metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Remove links
sanitizePDF.selectText.5=Remove fonts
sanitizePDF.selectText.6=Remove Document Info Metadata
sanitizePDF.submit=Sanitize PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Sanitize PDF
sanitizePDF.header=Sanitize a PDF file
sanitizePDF.selectText.1=Remove JavaScript actions
sanitizePDF.selectText.2=Remove embedded files
sanitizePDF.selectText.3=Remove metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Remove links
sanitizePDF.selectText.5=Remove fonts
sanitizePDF.submit=Sanitize PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Limpiar archivo PDF
sanitizePDF.header=Limpiar un archivo PDF
sanitizePDF.selectText.1=Eliminar código JavaScript
sanitizePDF.selectText.2=Eliminar archivos incrustados
sanitizePDF.selectText.3=Eliminar metadatos
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Eliminar enlaces
sanitizePDF.selectText.5=Eliminar fuentes
sanitizePDF.submit=Limpiar PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF-a desinfektatu
sanitizePDF.header=PDF fitxategi bat desinfektatu
sanitizePDF.selectText.1=Ezabatu JavaScript akzioak
sanitizePDF.selectText.2=Ezabatu embedded fitxategiak
sanitizePDF.selectText.3=Ezabatu metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Ezabatu esketak
sanitizePDF.selectText.5=Ezabatu iturri letrak
sanitizePDF.submit=Desinfektatu PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=پاکسازی PDF
sanitizePDF.header=پاکسازی یک فایل PDF
sanitizePDF.selectText.1=حذف عملیات جاوااسکریپت
sanitizePDF.selectText.2=حذف فایل‌های جاسازی شده
sanitizePDF.selectText.3=حذف متاداده‌ها
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=حذف لینک‌ها
sanitizePDF.selectText.5=حذف فونت‌ها
sanitizePDF.submit=پاکسازی PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Assainir
sanitizePDF.header=Assainir
sanitizePDF.selectText.1=Supprimer les actions JavaScript
sanitizePDF.selectText.2=Supprimer les fichiers intégrés
sanitizePDF.selectText.3=Supprimer les métadonnées
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Supprimer les liens
sanitizePDF.selectText.5=Supprimer les polices
sanitizePDF.submit=Assainir

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF sláintíocht
sanitizePDF.header=Glanadh comhad PDF
sanitizePDF.selectText.1=Bain gníomhartha JavaScript
sanitizePDF.selectText.2=Bain comhaid leabaithe
sanitizePDF.selectText.3=Bain meiteashonraí
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Bain naisc
sanitizePDF.selectText.5=Bain clónna
sanitizePDF.submit=PDF sláintíocht

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF सैनिटाइज़ करें
sanitizePDF.header=PDF फ़ाइल सैनिटाइज़ करें
sanitizePDF.selectText.1=जावास्क्रिप्ट क्रियाएं हटाएं
sanitizePDF.selectText.2=एम्बेडेड फ़ाइलें हटाएं
sanitizePDF.selectText.3=मेटाडेटा हटाएं
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=लिंक हटाएं
sanitizePDF.selectText.5=फ़ॉन्ट्स हटाएं
sanitizePDF.submit=PDF सैनिटाइज़ करें

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Sanirajte PDF
sanitizePDF.header=Sanirajte PDF datoteku
sanitizePDF.selectText.1=Ukloni JavaScript akcije
sanitizePDF.selectText.2=Ukloni ugrađene datoteke
sanitizePDF.selectText.3=Ukloni metapodatke
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Ukloni poveznice
sanitizePDF.selectText.5=Uklonite fontove
sanitizePDF.submit=Sanirajte PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF tisztítása
sanitizePDF.header=PDF fájl tisztítása
sanitizePDF.selectText.1=JavaScript műveletek eltávolítása
sanitizePDF.selectText.2=Beágyazott fájlok eltávolítása
sanitizePDF.selectText.3=Metaadatok eltávolítása
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Hivatkozások eltávolítása
sanitizePDF.selectText.5=Betűtípusok eltávolítása
sanitizePDF.submit=PDF tisztítása

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Bersihkan PDF
sanitizePDF.header=Membersihkan berkas PDF
sanitizePDF.selectText.1=Hapus tindakan JavaScript
sanitizePDF.selectText.2=Hapus berkas yang disematkan
sanitizePDF.selectText.3=Hapus metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Hapus tautan
sanitizePDF.selectText.5=Hapus font
sanitizePDF.submit=Membersihkan PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Pulire PDF
sanitizePDF.header=Pulisci un file PDF
sanitizePDF.selectText.1=Rimuovi le azioni JavaScript
sanitizePDF.selectText.2=Rimuovi i file incorporati
sanitizePDF.selectText.3=Rimuovi i metadati
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Rimuovi collegamenti
sanitizePDF.selectText.5=Rimuovi i font
sanitizePDF.submit=Pulisci PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDFをサニタイズ
sanitizePDF.header=PDFファイルをサニタイズ
sanitizePDF.selectText.1=JavaScriptアクションを削除
sanitizePDF.selectText.2=埋め込みファイルを削除
sanitizePDF.selectText.3=メタデータを削除
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=リンクを削除
sanitizePDF.selectText.5=フォントを削除
sanitizePDF.submit=PDFをサニタイズする

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF 정리
sanitizePDF.header=PDF 파일 정리
sanitizePDF.selectText.1=JavaScript 작업 제거
sanitizePDF.selectText.2=임베디드 파일 제거
sanitizePDF.selectText.3=메타데이터 제거
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=링크 제거
sanitizePDF.selectText.5=글꼴 제거
sanitizePDF.submit=PDF 정리

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF opschonen
sanitizePDF.header=Een PDF-bestand opschonen
sanitizePDF.selectText.1=Verwijder Javascript-acties
sanitizePDF.selectText.2=Verwijder ingebedde bestanden
sanitizePDF.selectText.3=Verwijder metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Verwijder links
sanitizePDF.selectText.5=Verwijder lettertypen
sanitizePDF.submit=PDF opschonen

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Rensker PDF
sanitizePDF.header=Rensker en PDF fil
sanitizePDF.selectText.1=Fjern JavaScript-handlinger
sanitizePDF.selectText.2=Fjern innebygde filer
sanitizePDF.selectText.3=Fjern metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Fjern lenker
sanitizePDF.selectText.5=Fjern skrifter
sanitizePDF.submit=Rensk PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Dezynfekuj PDF
sanitizePDF.header=Dezynfekuj dokument PDF
sanitizePDF.selectText.1=Usuń elementy JavaScript
sanitizePDF.selectText.2=Usuń załączone pliki
sanitizePDF.selectText.3=Usuń metadane
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Usuń linki
sanitizePDF.selectText.5=Usuń czcionki
sanitizePDF.submit=Dezynfekuj PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Higienizar
sanitizePDF.header=Higienizar
sanitizePDF.selectText.1=Remover scripts de JavaScript.
sanitizePDF.selectText.2=Remover arquivos embutidos.
sanitizePDF.selectText.3=Remover metadados.
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Remover links.
sanitizePDF.selectText.5=Remover fontes.
sanitizePDF.submit=Higienizar PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Sanitizar PDF
sanitizePDF.header=Sanitizar um ficheiro PDF
sanitizePDF.selectText.1=Remover ações JavaScript
sanitizePDF.selectText.2=Remover ficheiros incorporados
sanitizePDF.selectText.3=Remover metadados
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Remover ligações
sanitizePDF.selectText.5=Remover tipos de letra
sanitizePDF.submit=Sanitizar PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Igienizează PDF
sanitizePDF.header=Igienizează un fișier PDF
sanitizePDF.selectText.1=Elimină acțiunile JavaScript
sanitizePDF.selectText.2=Elimină fișierele încorporate
sanitizePDF.selectText.3=Elimină metadatele
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Elimină link-urile
sanitizePDF.selectText.5=Elimină fonturile
sanitizePDF.submit=Igienizează PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Очистить PDF
sanitizePDF.header=Очистить PDF-файл
sanitizePDF.selectText.1=Удалить JavaScript-действия
sanitizePDF.selectText.2=Удалить встроенные файлы
sanitizePDF.selectText.3=Удалить метаданные
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Удалить ссылки
sanitizePDF.selectText.5=Удалить шрифты
sanitizePDF.submit=Очистить PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Vyčistiť PDF
sanitizePDF.header=Vyčistiť PDF súbor
sanitizePDF.selectText.1=Odstrániť JavaScript akcie
sanitizePDF.selectText.2=Odstrániť vložené súbory
sanitizePDF.selectText.3=Odstrániť metadáta
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Odstrániť odkazy
sanitizePDF.selectText.5=Odstrániť fonty
sanitizePDF.submit=Vyčistiť PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Prečisti PDF
sanitizePDF.header=Prečisti datoteko PDF
sanitizePDF.selectText.1=Odstrani dejanja JavaScript
sanitizePDF.selectText.2=Odstrani vdelane datoteke
sanitizePDF.selectText.3=Odstrani metapodatke
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Odstrani povezave
sanitizePDF.selectText.5=Odstrani pisave
sanitizePDF.submit=Prečisti PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Sanitizacija PDF-a
sanitizePDF.header=Sanitizacija PDF fajla
sanitizePDF.selectText.1=Ukloni JavaScript akcije
sanitizePDF.selectText.2=Ukloni ugrađene fajlove
sanitizePDF.selectText.3=Ukloni metapodatke
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Ukloni linkove
sanitizePDF.selectText.5=Ukloni fontove
sanitizePDF.submit=Sanitizuj PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Sanera PDF
sanitizePDF.header=Sanera en PDF-fil
sanitizePDF.selectText.1=Ta bort JavaScript-åtgärder
sanitizePDF.selectText.2=Ta bort inbäddade filer
sanitizePDF.selectText.3=Ta bort metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Ta bort länkar
sanitizePDF.selectText.5=Ta bort typsnitt
sanitizePDF.submit=Sanera PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=ทำความสะอาด PDF
sanitizePDF.header=ทำความสะอาดไฟล์ PDF
sanitizePDF.selectText.1=ลบการกระทำ JavaScript
sanitizePDF.selectText.2=ลบไฟล์ฝังตัว
sanitizePDF.selectText.3=ลบข้อมูลเมตา
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=ลบลิงก์
sanitizePDF.selectText.5=ลบฟอนต์
sanitizePDF.submit=ทำความสะอาด PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF'i Temizle
sanitizePDF.header=PDF dosyasını temizle
sanitizePDF.selectText.1=JavaScript işlemlerini kaldır
sanitizePDF.selectText.2=Gömülü dosyaları kaldır
sanitizePDF.selectText.3=Üst veriyi kaldır
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Linkleri kaldır
sanitizePDF.selectText.5=Fontları kaldır
sanitizePDF.submit=PDF'i Temizle

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Дезінфекція PDF
sanitizePDF.header=Дезінфекція PDF файлу
sanitizePDF.selectText.1=Видалити JavaScript
sanitizePDF.selectText.2=Видалити вбудовані файли
sanitizePDF.selectText.3=Видалити метадані
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Видалити посилання
sanitizePDF.selectText.5=Видалити шрифти
sanitizePDF.submit=Дезінфекція

View File

@ -733,7 +733,7 @@ sanitizePDF.title=Làm sạch PDF
sanitizePDF.header=Làm sạch tệp PDF
sanitizePDF.selectText.1=Xóa các hành động JavaScript
sanitizePDF.selectText.2=Xóa các tệp nhúng
sanitizePDF.selectText.3=Xóa metadata
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Xóa liên kết
sanitizePDF.selectText.5=Xóa phông chữ
sanitizePDF.submit=Làm sạch PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=PDF གཙང་སེལ།
sanitizePDF.header=PDF ཡིག་ཆ་གཙང་སེལ།
sanitizePDF.selectText.1=Javascript བྱ་འགུལ་སུབ་པ།
sanitizePDF.selectText.2=ནང་འཇུག་ཡིག་ཆ་སུབ་པ།
sanitizePDF.selectText.3=གནས་ཆ་སུབ་པ།
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=འབྲེལ་ཐག་སུབ་པ།
sanitizePDF.selectText.5=ཡིག་གཟུགས་སུབ་པ།
sanitizePDF.submit=PDF གཙང་སེལ།

View File

@ -733,7 +733,7 @@ sanitizePDF.title=清理 PDF
sanitizePDF.header=清理 PDF 文件
sanitizePDF.selectText.1=移除 JavaScript 操作
sanitizePDF.selectText.2=移除嵌入的文件
sanitizePDF.selectText.3=移除元数据
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=移除链接
sanitizePDF.selectText.5=移除字体
sanitizePDF.submit=清理PDF

View File

@ -733,7 +733,7 @@ sanitizePDF.title=清理 PDF
sanitizePDF.header=清理 PDF 檔案
sanitizePDF.selectText.1=移除 JavaScript 操作
sanitizePDF.selectText.2=移除內嵌文件
sanitizePDF.selectText.3=移除中繼資料
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=移除連結
sanitizePDF.selectText.5=移除字型
sanitizePDF.submit=清理 PDF

View File

@ -29,8 +29,12 @@
<label for="removeEmbeddedFiles" th:text="#{sanitizePDF.selectText.2}"></label>
</div>
<div class="form-check ms-3">
<input type="checkbox" id="removeMetadata" name="removeMetadata" checked>
<label for="removeMetadata" th:text="#{sanitizePDF.selectText.3}"></label>
<input type="checkbox" id="removeXMPMetadata" name="removeXMPMetadata">
<label for="removeXMPMetadata" th:text="#{sanitizePDF.selectText.3}"></label>
</div>
<div class="form-check ms-3">
<input type="checkbox" id="removeMetadata" name="removeMetadata">
<label for="removeMetadata" th:text="#{sanitizePDF.selectText.6}"></label>
</div>
<div class="form-check ms-3">
<input type="checkbox" id="removeLinks" name="removeLinks">