feat: enhance PDF comparison with new change types and zoom functionality

- Added support for 'moved' and 'style-changed' change types in PDF comparison.
- Implemented category filters for changes, allowing users to filter by text, images, headers, annotations, formatting, and background.
- Introduced zoom functionality with buttons for zooming in, out, and resetting to default.
- Updated UI to reflect new change types and categories, including visual indicators for moved and style-changed items.
- Enhanced summary display to include counts for moved and style-changed changes.
- Refactored rendering logic to accommodate zoom levels and improve performance.
- Added tests for new change detection features and category assignments.
This commit is contained in:
alam00000
2026-03-10 13:47:46 +05:30
parent 89d7cd8e3d
commit 5232102ac0
31 changed files with 2503 additions and 183 deletions

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "مقارنة ملفات PDF",
"subtitle": "مقارنة ملفي PDF جنبًا إلى جنب."
"subtitle": "مقارنة ملفي PDF جنبًا إلى جنب.",
"firstPdf": "ملف PDF الأول",
"secondPdf": "ملف PDF الثاني",
"clickOrDrop": "انقر أو أفلت",
"page": "الصفحة",
"overlay": "تراكب",
"sideBySide": "جنبًا إلى جنب",
"flicker": "وميض",
"syncScroll": "مزامنة التمرير",
"export": "تصدير",
"exportAsPdf": "تصدير كملف PDF",
"splitView": "عرض مقسوم",
"alternating": "بالتناوب",
"leftDocument": "المستند الأيسر",
"rightDocument": "المستند الأيمن",
"original": "الأصلي",
"modified": "المعدل",
"searchChanges": "ابحث في التغييرات...",
"deleted": "محذوف",
"added": "مضاف",
"prevPage": "الصفحة السابقة",
"nextPage": "الصفحة التالية",
"prevChange": "التغيير السابق",
"nextChange": "التغيير التالي",
"uploadTwoPdfs": "حمّل ملفي PDF لرؤية الاختلافات.",
"noDifferences": "لم يتم اكتشاف اختلافات في هذه الصفحة.",
"noMatchingChanges": "لا توجد تغييرات تطابق عامل التصفية الحالي.",
"pageNotExist": "الصفحة {{page}} غير موجودة في ملف PDF هذا.",
"noPairedPage": "لا توجد صفحة مقترنة لهذا الجانب.",
"buildingModel": "جارٍ إنشاء نموذج إقران الصفحات...",
"indexingPdf": "جارٍ فهرسة PDF {{num}} الصفحة {{page}} من {{total}}...",
"loadingComparison": "جارٍ تحميل المقارنة {{current}} من {{total}}...",
"runningOcr": "جارٍ تشغيل OCR على الصفحة {{page}}...",
"preparingExport": "جارٍ تجهيز تصدير PDF...",
"renderingPage": "جارٍ عرض الصفحة {{current}} من {{total}}...",
"exportError": "خطأ في التصدير",
"exportFailed": "تعذر تصدير ملف PDF المقارن.",
"loadingFile": "جارٍ تحميل {{name}}...",
"invalidFile": "ملف غير صالح",
"invalidFileMsg": "يرجى اختيار ملف PDF صالح.",
"loadError": "تعذر تحميل ملف PDF. قد يكون تالفًا أو محميًا بكلمة مرور."
},
"posterizePdf": {
"name": "تقسيم PDF إلى ملصقات",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "Параўнаць PDF",
"subtitle": "Параўнаць два PDF побач."
"subtitle": "Параўнаць два PDF побач.",
"firstPdf": "Першы PDF",
"secondPdf": "Другі PDF",
"clickOrDrop": "Націсніце або перацягніце",
"page": "Старонка",
"overlay": "Накладанне",
"sideBySide": "Побач",
"flicker": "Мігценне",
"syncScroll": "Сінхранізаваць пракрутку",
"export": "Экспарт",
"exportAsPdf": "Экспартаваць як PDF",
"splitView": "Падзелены выгляд",
"alternating": "Чаргаванне",
"leftDocument": "Левы дакумент",
"rightDocument": "Правы дакумент",
"original": "Арыгінал",
"modified": "Зменены",
"searchChanges": "Шукаць змены...",
"deleted": "Выдалена",
"added": "Дададзена",
"prevPage": "Папярэдняя старонка",
"nextPage": "Наступная старонка",
"prevChange": "Папярэдняя змена",
"nextChange": "Наступная змена",
"uploadTwoPdfs": "Загрузіце два PDF, каб убачыць адрозненні.",
"noDifferences": "На гэтай старонцы адрозненняў не выяўлена.",
"noMatchingChanges": "Няма змен, што адпавядаюць бягучаму фільтру.",
"pageNotExist": "Старонка {{page}} не існуе ў гэтым PDF.",
"noPairedPage": "Для гэтага боку няма спаранай старонкі.",
"buildingModel": "Стварэнне мадэлі супастаўлення старонак...",
"indexingPdf": "Індэксацыя PDF {{num}}, старонка {{page}} з {{total}}...",
"loadingComparison": "Загрузка параўнання {{current}} з {{total}}...",
"runningOcr": "Запуск OCR на старонцы {{page}}...",
"preparingExport": "Падрыхтоўка экспарту PDF...",
"renderingPage": "Адмалёўка старонкі {{current}} з {{total}}...",
"exportError": "Памылка экспарту",
"exportFailed": "Не ўдалося экспартаваць PDF параўнання.",
"loadingFile": "Загрузка {{name}}...",
"invalidFile": "Няправільны файл",
"invalidFileMsg": "Калі ласка, абярыце сапраўдны PDF-файл.",
"loadError": "Не ўдалося загрузіць PDF. Магчыма, ён пашкоджаны або абаронены паролем."
},
"posterizePdf": {
"name": "Пераўтварыць у постэр",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "Sammenlign PDFer",
"subtitle": "Sammenlign to PDFer side om side."
"subtitle": "Sammenlign to PDFer side om side.",
"firstPdf": "Første PDF",
"secondPdf": "Anden PDF",
"clickOrDrop": "Klik eller slip",
"page": "Side",
"overlay": "Overlejring",
"sideBySide": "Side om side",
"flicker": "Blink",
"syncScroll": "Synkroniser rulning",
"export": "Eksportér",
"exportAsPdf": "Eksportér som PDF",
"splitView": "Opdelt visning",
"alternating": "Skiftevis",
"leftDocument": "Venstre dokument",
"rightDocument": "Højre dokument",
"original": "Original",
"modified": "Ændret",
"searchChanges": "Søg ændringer...",
"deleted": "Slettet",
"added": "Tilføjet",
"prevPage": "Forrige side",
"nextPage": "Næste side",
"prevChange": "Forrige ændring",
"nextChange": "Næste ændring",
"uploadTwoPdfs": "Upload to PDFer for at se forskellene.",
"noDifferences": "Ingen forskelle fundet på denne side.",
"noMatchingChanges": "Ingen ændringer matcher det aktuelle filter.",
"pageNotExist": "Side {{page}} findes ikke i denne PDF.",
"noPairedPage": "Ingen parret side for denne side.",
"buildingModel": "Opbygger sideparringsmodel...",
"indexingPdf": "Indekserer PDF {{num}}, side {{page}} af {{total}}...",
"loadingComparison": "Indlæser sammenligning {{current}} af {{total}}...",
"runningOcr": "Kører OCR på side {{page}}...",
"preparingExport": "Forbereder PDF-eksport...",
"renderingPage": "Renderer side {{current}} af {{total}}...",
"exportError": "Eksportfejl",
"exportFailed": "Kunne ikke eksportere sammenlignings-PDF.",
"loadingFile": "Indlæser {{name}}...",
"invalidFile": "Ugyldig fil",
"invalidFileMsg": "Vælg venligst en gyldig PDF-fil.",
"loadError": "Kunne ikke indlæse PDF. Den kan være beskadiget eller beskyttet med adgangskode."
},
"posterizePdf": {
"name": "Posterisér PDF",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "PDFs vergleichen",
"subtitle": "Zwei PDFs nebeneinander vergleichen."
"subtitle": "Zwei PDFs nebeneinander vergleichen.",
"firstPdf": "Erste PDF",
"secondPdf": "Zweite PDF",
"clickOrDrop": "Klicken oder ablegen",
"page": "Seite",
"overlay": "Überlagerung",
"sideBySide": "Nebeneinander",
"flicker": "Flackern",
"syncScroll": "Synchrones Scrollen",
"export": "Exportieren",
"exportAsPdf": "Als PDF exportieren",
"splitView": "Geteilte Ansicht",
"alternating": "Abwechselnd",
"leftDocument": "Linkes Dokument",
"rightDocument": "Rechtes Dokument",
"original": "Original",
"modified": "Geändert",
"searchChanges": "Änderungen suchen...",
"deleted": "Gelöscht",
"added": "Hinzugefügt",
"prevPage": "Vorherige Seite",
"nextPage": "Nächste Seite",
"prevChange": "Vorherige Änderung",
"nextChange": "Nächste Änderung",
"uploadTwoPdfs": "Laden Sie zwei PDFs hoch, um Unterschiede zu sehen.",
"noDifferences": "Auf dieser Seite wurden keine Unterschiede gefunden.",
"noMatchingChanges": "Keine Änderungen entsprechen dem aktuellen Filter.",
"pageNotExist": "Seite {{page}} existiert nicht in dieser PDF.",
"noPairedPage": "Für diese Seite gibt es keine zugeordnete Seite.",
"buildingModel": "Seitenzuordnungsmodell wird erstellt...",
"indexingPdf": "PDF {{num}}, Seite {{page}} von {{total}} wird indiziert...",
"loadingComparison": "Vergleich {{current}} von {{total}} wird geladen...",
"runningOcr": "OCR wird auf Seite {{page}} ausgeführt...",
"preparingExport": "PDF-Export wird vorbereitet...",
"renderingPage": "Seite {{current}} von {{total}} wird gerendert...",
"exportError": "Exportfehler",
"exportFailed": "Vergleichs-PDF konnte nicht exportiert werden.",
"loadingFile": "{{name}} wird geladen...",
"invalidFile": "Ungültige Datei",
"invalidFileMsg": "Bitte wählen Sie eine gültige PDF-Datei aus.",
"loadError": "PDF konnte nicht geladen werden. Sie ist möglicherweise beschädigt oder passwortgeschützt."
},
"posterizePdf": {
"name": "PDF posterisieren",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "Compare PDFs",
"subtitle": "Compare two PDFs side by side."
"subtitle": "Compare two PDFs side by side.",
"firstPdf": "First PDF",
"secondPdf": "Second PDF",
"clickOrDrop": "Click or drop",
"page": "Page",
"overlay": "Overlay",
"sideBySide": "Side-by-Side",
"flicker": "Flicker",
"syncScroll": "Sync scroll",
"export": "Export",
"exportAsPdf": "Export as PDF",
"splitView": "Split view",
"alternating": "Alternating",
"leftDocument": "Left Document",
"rightDocument": "Right Document",
"original": "Original",
"modified": "Modified",
"searchChanges": "Search changes...",
"deleted": "Deleted",
"added": "Added",
"prevPage": "Previous page",
"nextPage": "Next page",
"prevChange": "Previous change",
"nextChange": "Next change",
"uploadTwoPdfs": "Upload two PDFs to see differences.",
"noDifferences": "No differences detected on this page.",
"noMatchingChanges": "No changes match the current filter.",
"pageNotExist": "Page {{page}} does not exist in this PDF.",
"noPairedPage": "No paired page for this side.",
"buildingModel": "Building page pairing model...",
"indexingPdf": "Indexing PDF {{num}} page {{page}} of {{total}}...",
"loadingComparison": "Loading comparison {{current}} of {{total}}...",
"runningOcr": "Running OCR on page {{page}}...",
"preparingExport": "Preparing PDF export...",
"renderingPage": "Rendering page {{current}} of {{total}}...",
"exportError": "Export Error",
"exportFailed": "Could not export comparison PDF.",
"loadingFile": "Loading {{name}}...",
"invalidFile": "Invalid File",
"invalidFileMsg": "Please select a valid PDF file.",
"loadError": "Could not load PDF. It may be corrupt or password-protected."
},
"posterizePdf": {
"name": "Posterize PDF",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "Comparar PDFs",
"subtitle": "Compara dos PDFs lado a lado."
"subtitle": "Compara dos PDFs lado a lado.",
"firstPdf": "Primer PDF",
"secondPdf": "Segundo PDF",
"clickOrDrop": "Haz clic o suelta",
"page": "Página",
"overlay": "Superposición",
"sideBySide": "Lado a lado",
"flicker": "Parpadeo",
"syncScroll": "Sincronizar desplazamiento",
"export": "Exportar",
"exportAsPdf": "Exportar como PDF",
"splitView": "Vista dividida",
"alternating": "Alternando",
"leftDocument": "Documento izquierdo",
"rightDocument": "Documento derecho",
"original": "Original",
"modified": "Modificado",
"searchChanges": "Buscar cambios...",
"deleted": "Eliminado",
"added": "Añadido",
"prevPage": "Página anterior",
"nextPage": "Página siguiente",
"prevChange": "Cambio anterior",
"nextChange": "Cambio siguiente",
"uploadTwoPdfs": "Sube dos PDFs para ver las diferencias.",
"noDifferences": "No se detectaron diferencias en esta página.",
"noMatchingChanges": "Ningún cambio coincide con el filtro actual.",
"pageNotExist": "La página {{page}} no existe en este PDF.",
"noPairedPage": "No hay una página emparejada para este lado.",
"buildingModel": "Creando el modelo de emparejamiento de páginas...",
"indexingPdf": "Indexando PDF {{num}}, página {{page}} de {{total}}...",
"loadingComparison": "Cargando comparación {{current}} de {{total}}...",
"runningOcr": "Ejecutando OCR en la página {{page}}...",
"preparingExport": "Preparando la exportación del PDF...",
"renderingPage": "Renderizando página {{current}} de {{total}}...",
"exportError": "Error de exportación",
"exportFailed": "No se pudo exportar el PDF de comparación.",
"loadingFile": "Cargando {{name}}...",
"invalidFile": "Archivo no válido",
"invalidFileMsg": "Selecciona un archivo PDF válido.",
"loadError": "No se pudo cargar el PDF. Puede estar dañado o protegido con contraseña."
},
"posterizePdf": {
"name": "Posterizar PDF",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "Comparer des PDF",
"subtitle": "Comparer deux PDF côte à côte."
"subtitle": "Comparer deux PDF côte à côte.",
"firstPdf": "Premier PDF",
"secondPdf": "Deuxième PDF",
"clickOrDrop": "Cliquer ou déposer",
"page": "Page",
"overlay": "Superposition",
"sideBySide": "Côte à côte",
"flicker": "Clignotement",
"syncScroll": "Synchroniser le défilement",
"export": "Exporter",
"exportAsPdf": "Exporter en PDF",
"splitView": "Vue divisée",
"alternating": "Alterné",
"leftDocument": "Document de gauche",
"rightDocument": "Document de droite",
"original": "Original",
"modified": "Modifié",
"searchChanges": "Rechercher des modifications...",
"deleted": "Supprimé",
"added": "Ajouté",
"prevPage": "Page précédente",
"nextPage": "Page suivante",
"prevChange": "Modification précédente",
"nextChange": "Modification suivante",
"uploadTwoPdfs": "Téléversez deux PDF pour voir les différences.",
"noDifferences": "Aucune différence détectée sur cette page.",
"noMatchingChanges": "Aucune modification ne correspond au filtre actuel.",
"pageNotExist": "La page {{page}} nexiste pas dans ce PDF.",
"noPairedPage": "Aucune page associée pour ce côté.",
"buildingModel": "Création du modèle dappariement des pages...",
"indexingPdf": "Indexation du PDF {{num}}, page {{page}} sur {{total}}...",
"loadingComparison": "Chargement de la comparaison {{current}} sur {{total}}...",
"runningOcr": "Exécution de lOCR sur la page {{page}}...",
"preparingExport": "Préparation de lexport PDF...",
"renderingPage": "Rendu de la page {{current}} sur {{total}}...",
"exportError": "Erreur dexport",
"exportFailed": "Impossible dexporter le PDF de comparaison.",
"loadingFile": "Chargement de {{name}}...",
"invalidFile": "Fichier invalide",
"invalidFileMsg": "Veuillez sélectionner un fichier PDF valide.",
"loadError": "Impossible de charger le PDF. Il est peut-être corrompu ou protégé par mot de passe."
},
"posterizePdf": {
"name": "Posteriser un PDF",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "Bandingkan PDF",
"subtitle": "Bandingkan dua PDF berdampingan."
"subtitle": "Bandingkan dua PDF berdampingan.",
"firstPdf": "PDF pertama",
"secondPdf": "PDF kedua",
"clickOrDrop": "Klik atau letakkan",
"page": "Halaman",
"overlay": "Hamparan",
"sideBySide": "Berdampingan",
"flicker": "Kedip",
"syncScroll": "Sinkronkan gulir",
"export": "Ekspor",
"exportAsPdf": "Ekspor sebagai PDF",
"splitView": "Tampilan terbagi",
"alternating": "Bergantian",
"leftDocument": "Dokumen kiri",
"rightDocument": "Dokumen kanan",
"original": "Asli",
"modified": "Diubah",
"searchChanges": "Cari perubahan...",
"deleted": "Dihapus",
"added": "Ditambahkan",
"prevPage": "Halaman sebelumnya",
"nextPage": "Halaman berikutnya",
"prevChange": "Perubahan sebelumnya",
"nextChange": "Perubahan berikutnya",
"uploadTwoPdfs": "Unggah dua PDF untuk melihat perbedaannya.",
"noDifferences": "Tidak ada perbedaan yang terdeteksi pada halaman ini.",
"noMatchingChanges": "Tidak ada perubahan yang cocok dengan filter saat ini.",
"pageNotExist": "Halaman {{page}} tidak ada di PDF ini.",
"noPairedPage": "Tidak ada halaman pasangan untuk sisi ini.",
"buildingModel": "Membangun model pemasangan halaman...",
"indexingPdf": "Mengindeks PDF {{num}} halaman {{page}} dari {{total}}...",
"loadingComparison": "Memuat perbandingan {{current}} dari {{total}}...",
"runningOcr": "Menjalankan OCR pada halaman {{page}}...",
"preparingExport": "Menyiapkan ekspor PDF...",
"renderingPage": "Merender halaman {{current}} dari {{total}}...",
"exportError": "Kesalahan ekspor",
"exportFailed": "Tidak dapat mengekspor PDF perbandingan.",
"loadingFile": "Memuat {{name}}...",
"invalidFile": "File tidak valid",
"invalidFileMsg": "Silakan pilih file PDF yang valid.",
"loadError": "Tidak dapat memuat PDF. Mungkin rusak atau dilindungi kata sandi."
},
"posterizePdf": {
"name": "Posterisasi PDF",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "Confronta PDF",
"subtitle": "Confronta due PDF fianco a fianco."
"subtitle": "Confronta due PDF fianco a fianco.",
"firstPdf": "Primo PDF",
"secondPdf": "Secondo PDF",
"clickOrDrop": "Clicca o rilascia",
"page": "Pagina",
"overlay": "Sovrapposizione",
"sideBySide": "Affiancato",
"flicker": "Lampeggio",
"syncScroll": "Sincronizza scorrimento",
"export": "Esporta",
"exportAsPdf": "Esporta come PDF",
"splitView": "Vista divisa",
"alternating": "Alternato",
"leftDocument": "Documento sinistro",
"rightDocument": "Documento destro",
"original": "Originale",
"modified": "Modificato",
"searchChanges": "Cerca modifiche...",
"deleted": "Eliminato",
"added": "Aggiunto",
"prevPage": "Pagina precedente",
"nextPage": "Pagina successiva",
"prevChange": "Modifica precedente",
"nextChange": "Modifica successiva",
"uploadTwoPdfs": "Carica due PDF per vedere le differenze.",
"noDifferences": "Nessuna differenza rilevata in questa pagina.",
"noMatchingChanges": "Nessuna modifica corrisponde al filtro corrente.",
"pageNotExist": "La pagina {{page}} non esiste in questo PDF.",
"noPairedPage": "Nessuna pagina associata per questo lato.",
"buildingModel": "Creazione del modello di abbinamento pagine...",
"indexingPdf": "Indicizzazione del PDF {{num}}, pagina {{page}} di {{total}}...",
"loadingComparison": "Caricamento confronto {{current}} di {{total}}...",
"runningOcr": "Esecuzione OCR sulla pagina {{page}}...",
"preparingExport": "Preparazione esportazione PDF...",
"renderingPage": "Rendering pagina {{current}} di {{total}}...",
"exportError": "Errore di esportazione",
"exportFailed": "Impossibile esportare il PDF di confronto.",
"loadingFile": "Caricamento di {{name}}...",
"invalidFile": "File non valido",
"invalidFileMsg": "Seleziona un file PDF valido.",
"loadError": "Impossibile caricare il PDF. Potrebbe essere danneggiato o protetto da password."
},
"posterizePdf": {
"name": "Posterizza PDF",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "PDF 비교",
"subtitle": "두 PDF를 나란히 비교합니다."
"subtitle": "두 PDF를 나란히 비교합니다.",
"firstPdf": "첫 번째 PDF",
"secondPdf": "두 번째 PDF",
"clickOrDrop": "클릭 또는 드롭",
"page": "페이지",
"overlay": "오버레이",
"sideBySide": "나란히 보기",
"flicker": "깜빡임",
"syncScroll": "스크롤 동기화",
"export": "내보내기",
"exportAsPdf": "PDF로 내보내기",
"splitView": "분할 보기",
"alternating": "번갈아 보기",
"leftDocument": "왼쪽 문서",
"rightDocument": "오른쪽 문서",
"original": "원본",
"modified": "수정본",
"searchChanges": "변경 사항 검색...",
"deleted": "삭제됨",
"added": "추가됨",
"prevPage": "이전 페이지",
"nextPage": "다음 페이지",
"prevChange": "이전 변경",
"nextChange": "다음 변경",
"uploadTwoPdfs": "차이점을 보려면 두 개의 PDF를 업로드하세요.",
"noDifferences": "이 페이지에서 차이점이 감지되지 않았습니다.",
"noMatchingChanges": "현재 필터와 일치하는 변경 사항이 없습니다.",
"pageNotExist": "페이지 {{page}}는 이 PDF에 존재하지 않습니다.",
"noPairedPage": "이쪽에 대응되는 페이지가 없습니다.",
"buildingModel": "페이지 페어링 모델을 만드는 중...",
"indexingPdf": "PDF {{num}}의 {{page}} / {{total}} 페이지를 인덱싱하는 중...",
"loadingComparison": "비교 {{current}} / {{total}} 불러오는 중...",
"runningOcr": "페이지 {{page}}에서 OCR 실행 중...",
"preparingExport": "PDF 내보내기 준비 중...",
"renderingPage": "페이지 {{current}} / {{total}} 렌더링 중...",
"exportError": "내보내기 오류",
"exportFailed": "비교 PDF를 내보낼 수 없습니다.",
"loadingFile": "{{name}} 불러오는 중...",
"invalidFile": "잘못된 파일",
"invalidFileMsg": "유효한 PDF 파일을 선택하세요.",
"loadError": "PDF를 불러올 수 없습니다. 손상되었거나 비밀번호로 보호되었을 수 있습니다."
},
"posterizePdf": {
"name": "PDF 포스터화",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "PDF's Vergelijken",
"subtitle": "Twee PDF's zij-aan-zij vergelijken."
"subtitle": "Twee PDF's zij-aan-zij vergelijken.",
"firstPdf": "Eerste PDF",
"secondPdf": "Tweede PDF",
"clickOrDrop": "Klik of sleep neer",
"page": "Pagina",
"overlay": "Overlay",
"sideBySide": "Zij aan zij",
"flicker": "Flikkeren",
"syncScroll": "Scroll synchroniseren",
"export": "Exporteren",
"exportAsPdf": "Exporteren als PDF",
"splitView": "Gesplitste weergave",
"alternating": "Afwisselend",
"leftDocument": "Linkerdocument",
"rightDocument": "Rechterdocument",
"original": "Origineel",
"modified": "Gewijzigd",
"searchChanges": "Wijzigingen zoeken...",
"deleted": "Verwijderd",
"added": "Toegevoegd",
"prevPage": "Vorige pagina",
"nextPage": "Volgende pagina",
"prevChange": "Vorige wijziging",
"nextChange": "Volgende wijziging",
"uploadTwoPdfs": "Upload twee PDF's om de verschillen te zien.",
"noDifferences": "Geen verschillen gedetecteerd op deze pagina.",
"noMatchingChanges": "Geen wijzigingen komen overeen met het huidige filter.",
"pageNotExist": "Pagina {{page}} bestaat niet in deze PDF.",
"noPairedPage": "Geen gekoppelde pagina voor deze zijde.",
"buildingModel": "Model voor paginakoppeling wordt opgebouwd...",
"indexingPdf": "PDF {{num}}, pagina {{page}} van {{total}} wordt geïndexeerd...",
"loadingComparison": "Vergelijking {{current}} van {{total}} wordt geladen...",
"runningOcr": "OCR wordt uitgevoerd op pagina {{page}}...",
"preparingExport": "PDF-export wordt voorbereid...",
"renderingPage": "Pagina {{current}} van {{total}} wordt gerenderd...",
"exportError": "Exportfout",
"exportFailed": "Vergelijkings-PDF kon niet worden geëxporteerd.",
"loadingFile": "{{name}} wordt geladen...",
"invalidFile": "Ongeldig bestand",
"invalidFileMsg": "Selecteer een geldig PDF-bestand.",
"loadError": "Kon PDF niet laden. Het bestand kan beschadigd zijn of met een wachtwoord beveiligd zijn."
},
"posterizePdf": {
"name": "PDF-Poster",

View File

@@ -288,7 +288,47 @@
},
"comparePdfs": {
"name": "Comparar PDFs",
"subtitle": "Compare dois PDFs lado a lado."
"subtitle": "Compare dois PDFs lado a lado.",
"firstPdf": "Primeiro PDF",
"secondPdf": "Segundo PDF",
"clickOrDrop": "Clique ou solte",
"page": "Página",
"overlay": "Sobreposição",
"sideBySide": "Lado a lado",
"flicker": "Alternância rápida",
"syncScroll": "Sincronizar rolagem",
"export": "Exportar",
"exportAsPdf": "Exportar como PDF",
"splitView": "Visualização dividida",
"alternating": "Alternado",
"leftDocument": "Documento esquerdo",
"rightDocument": "Documento direito",
"original": "Original",
"modified": "Modificado",
"searchChanges": "Pesquisar alterações...",
"deleted": "Excluído",
"added": "Adicionado",
"prevPage": "Página anterior",
"nextPage": "Próxima página",
"prevChange": "Alteração anterior",
"nextChange": "Próxima alteração",
"uploadTwoPdfs": "Envie dois PDFs para ver as diferenças.",
"noDifferences": "Nenhuma diferença detectada nesta página.",
"noMatchingChanges": "Nenhuma alteração corresponde ao filtro atual.",
"pageNotExist": "A página {{page}} não existe neste PDF.",
"noPairedPage": "Não há página pareada para este lado.",
"buildingModel": "Criando modelo de pareamento de páginas...",
"indexingPdf": "Indexando PDF {{num}}, página {{page}} de {{total}}...",
"loadingComparison": "Carregando comparação {{current}} de {{total}}...",
"runningOcr": "Executando OCR na página {{page}}...",
"preparingExport": "Preparando exportação em PDF...",
"renderingPage": "Renderizando página {{current}} de {{total}}...",
"exportError": "Erro de exportação",
"exportFailed": "Não foi possível exportar o PDF de comparação.",
"loadingFile": "Carregando {{name}}...",
"invalidFile": "Arquivo inválido",
"invalidFileMsg": "Selecione um arquivo PDF válido.",
"loadError": "Não foi possível carregar o PDF. Ele pode estar corrompido ou protegido por senha."
},
"posterizePdf": {
"name": "Posterizar PDF",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "Jämför PDF:er",
"subtitle": "Jämför två PDF:er bredvid varandra."
"subtitle": "Jämför två PDF:er bredvid varandra.",
"firstPdf": "Första PDF",
"secondPdf": "Andra PDF",
"clickOrDrop": "Klicka eller släpp",
"page": "Sida",
"overlay": "Överlägg",
"sideBySide": "Sida vid sida",
"flicker": "Flimmer",
"syncScroll": "Synkronisera rullning",
"export": "Exportera",
"exportAsPdf": "Exportera som PDF",
"splitView": "Delad vy",
"alternating": "Växlande",
"leftDocument": "Vänster dokument",
"rightDocument": "Höger dokument",
"original": "Original",
"modified": "Ändrad",
"searchChanges": "Sök ändringar...",
"deleted": "Borttagen",
"added": "Tillagd",
"prevPage": "Föregående sida",
"nextPage": "Nästa sida",
"prevChange": "Föregående ändring",
"nextChange": "Nästa ändring",
"uploadTwoPdfs": "Ladda upp två PDF:er för att se skillnaderna.",
"noDifferences": "Inga skillnader upptäcktes på denna sida.",
"noMatchingChanges": "Inga ändringar matchar det aktuella filtret.",
"pageNotExist": "Sidan {{page}} finns inte i denna PDF.",
"noPairedPage": "Ingen matchad sida för denna sida.",
"buildingModel": "Bygger sidparningsmodell...",
"indexingPdf": "Indexerar PDF {{num}}, sida {{page}} av {{total}}...",
"loadingComparison": "Läser in jämförelse {{current}} av {{total}}...",
"runningOcr": "Kör OCR på sida {{page}}...",
"preparingExport": "Förbereder PDF-export...",
"renderingPage": "Renderar sida {{current}} av {{total}}...",
"exportError": "Exportfel",
"exportFailed": "Kunde inte exportera jämförelse-PDF.",
"loadingFile": "Läser in {{name}}...",
"invalidFile": "Ogiltig fil",
"invalidFileMsg": "Välj en giltig PDF-fil.",
"loadError": "Kunde inte läsa in PDF. Den kan vara skadad eller lösenordsskyddad."
},
"posterizePdf": {
"name": "Postera PDF",

View File

@@ -288,7 +288,47 @@
},
"comparePdfs": {
"name": "PDF'leri Karşılaştır",
"subtitle": "İki PDF'yi yan yana karşılaştırın."
"subtitle": "İki PDF'yi yan yana karşılaştırın.",
"firstPdf": "İlk PDF",
"secondPdf": "İkinci PDF",
"clickOrDrop": "Tıklayın veya bırakın",
"page": "Sayfa",
"overlay": "Üst üste",
"sideBySide": "Yan yana",
"flicker": "Titreşim",
"syncScroll": "Kaydırmayı senkronize et",
"export": "Dışa aktar",
"exportAsPdf": "PDF olarak dışa aktar",
"splitView": "Bölünmüş görünüm",
"alternating": "Sırayla",
"leftDocument": "Sol belge",
"rightDocument": "Sağ belge",
"original": "Orijinal",
"modified": "Değiştirilmiş",
"searchChanges": "Değişiklikleri ara...",
"deleted": "Silindi",
"added": "Eklendi",
"prevPage": "Önceki sayfa",
"nextPage": "Sonraki sayfa",
"prevChange": "Önceki değişiklik",
"nextChange": "Sonraki değişiklik",
"uploadTwoPdfs": "Farkları görmek için iki PDF yükleyin.",
"noDifferences": "Bu sayfada fark algılanmadı.",
"noMatchingChanges": "Geçerli filtreyle eşleşen değişiklik yok.",
"pageNotExist": "{{page}} sayfası bu PDF'de yok.",
"noPairedPage": "Bu taraf için eşleştirilmiş sayfa yok.",
"buildingModel": "Sayfa eşleştirme modeli oluşturuluyor...",
"indexingPdf": "PDF {{num}} için {{total}} içinden {{page}}. sayfa dizinleniyor...",
"loadingComparison": "{{total}} içinden {{current}}. karşılaştırma yükleniyor...",
"runningOcr": "{{page}}. sayfada OCR çalıştırılıyor...",
"preparingExport": "PDF dışa aktarma hazırlanıyor...",
"renderingPage": "{{total}} içinden {{current}}. sayfa işleniyor...",
"exportError": "Dışa aktarma hatası",
"exportFailed": "Karşılaştırma PDF'i dışa aktarılamadı.",
"loadingFile": "{{name}} yükleniyor...",
"invalidFile": "Geçersiz dosya",
"invalidFileMsg": "Lütfen geçerli bir PDF dosyası seçin.",
"loadError": "PDF yüklenemedi. Bozuk olabilir veya parola korumalı olabilir."
},
"posterizePdf": {
"name": "PDF'yi Posta Boyutuna Böl",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "So sánh PDF",
"subtitle": "So sánh hai PDF cạnh nhau."
"subtitle": "So sánh hai PDF cạnh nhau.",
"firstPdf": "PDF thứ nhất",
"secondPdf": "PDF thứ hai",
"clickOrDrop": "Nhấp hoặc thả",
"page": "Trang",
"overlay": "Chồng lớp",
"sideBySide": "Cạnh nhau",
"flicker": "Nhấp nháy",
"syncScroll": "Đồng bộ cuộn",
"export": "Xuất",
"exportAsPdf": "Xuất dưới dạng PDF",
"splitView": "Chế độ chia đôi",
"alternating": "Luân phiên",
"leftDocument": "Tài liệu bên trái",
"rightDocument": "Tài liệu bên phải",
"original": "Bản gốc",
"modified": "Đã sửa đổi",
"searchChanges": "Tìm kiếm thay đổi...",
"deleted": "Đã xóa",
"added": "Đã thêm",
"prevPage": "Trang trước",
"nextPage": "Trang sau",
"prevChange": "Thay đổi trước",
"nextChange": "Thay đổi sau",
"uploadTwoPdfs": "Tải lên hai PDF để xem sự khác biệt.",
"noDifferences": "Không phát hiện khác biệt trên trang này.",
"noMatchingChanges": "Không có thay đổi nào khớp với bộ lọc hiện tại.",
"pageNotExist": "Trang {{page}} không tồn tại trong PDF này.",
"noPairedPage": "Không có trang ghép cho phía này.",
"buildingModel": "Đang xây dựng mô hình ghép trang...",
"indexingPdf": "Đang lập chỉ mục PDF {{num}}, trang {{page}} trên {{total}}...",
"loadingComparison": "Đang tải so sánh {{current}} trên {{total}}...",
"runningOcr": "Đang chạy OCR trên trang {{page}}...",
"preparingExport": "Đang chuẩn bị xuất PDF...",
"renderingPage": "Đang kết xuất trang {{current}} trên {{total}}...",
"exportError": "Lỗi xuất",
"exportFailed": "Không thể xuất PDF so sánh.",
"loadingFile": "Đang tải {{name}}...",
"invalidFile": "Tệp không hợp lệ",
"invalidFileMsg": "Vui lòng chọn tệp PDF hợp lệ.",
"loadError": "Không thể tải PDF. Có thể tệp bị hỏng hoặc được bảo vệ bằng mật khẩu."
},
"posterizePdf": {
"name": "Posterize PDF",

View File

@@ -288,7 +288,47 @@
},
"comparePdfs": {
"name": "比較 PDF",
"subtitle": "並排比較兩個 PDF。"
"subtitle": "並排比較兩個 PDF。",
"firstPdf": "第一個 PDF",
"secondPdf": "第二個 PDF",
"clickOrDrop": "點擊或拖放",
"page": "頁面",
"overlay": "疊加",
"sideBySide": "並排",
"flicker": "閃爍",
"syncScroll": "同步捲動",
"export": "匯出",
"exportAsPdf": "匯出為 PDF",
"splitView": "分割檢視",
"alternating": "交替",
"leftDocument": "左側文件",
"rightDocument": "右側文件",
"original": "原始",
"modified": "修改後",
"searchChanges": "搜尋變更...",
"deleted": "已刪除",
"added": "已新增",
"prevPage": "上一頁",
"nextPage": "下一頁",
"prevChange": "上一個變更",
"nextChange": "下一個變更",
"uploadTwoPdfs": "上傳兩個 PDF 以查看差異。",
"noDifferences": "此頁面未偵測到差異。",
"noMatchingChanges": "沒有符合目前篩選條件的變更。",
"pageNotExist": "此 PDF 中不存在第 {{page}} 頁。",
"noPairedPage": "此側沒有配對頁面。",
"buildingModel": "正在建立頁面配對模型...",
"indexingPdf": "正在索引 PDF {{num}},第 {{page}} / {{total}} 頁...",
"loadingComparison": "正在載入比較 {{current}} / {{total}}...",
"runningOcr": "正在對第 {{page}} 頁執行 OCR...",
"preparingExport": "正在準備 PDF 匯出...",
"renderingPage": "正在轉譯第 {{current}} / {{total}} 頁...",
"exportError": "匯出錯誤",
"exportFailed": "無法匯出比較 PDF。",
"loadingFile": "正在載入 {{name}}...",
"invalidFile": "無效檔案",
"invalidFileMsg": "請選擇有效的 PDF 檔案。",
"loadError": "無法載入 PDF。檔案可能已損毀或受密碼保護。"
},
"posterizePdf": {
"name": "海報化 PDF",

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "比较 PDF",
"subtitle": "并排比较两个 PDF。"
"subtitle": "并排比较两个 PDF。",
"firstPdf": "第一个 PDF",
"secondPdf": "第二个 PDF",
"clickOrDrop": "点击或拖放",
"page": "页面",
"overlay": "叠加",
"sideBySide": "并排",
"flicker": "闪烁",
"syncScroll": "同步滚动",
"export": "导出",
"exportAsPdf": "导出为 PDF",
"splitView": "分屏视图",
"alternating": "交替",
"leftDocument": "左侧文档",
"rightDocument": "右侧文档",
"original": "原始",
"modified": "修改后",
"searchChanges": "搜索更改...",
"deleted": "已删除",
"added": "已添加",
"prevPage": "上一页",
"nextPage": "下一页",
"prevChange": "上一处更改",
"nextChange": "下一处更改",
"uploadTwoPdfs": "上传两个 PDF 以查看差异。",
"noDifferences": "此页面未检测到差异。",
"noMatchingChanges": "没有与当前筛选条件匹配的更改。",
"pageNotExist": "此 PDF 中不存在第 {{page}} 页。",
"noPairedPage": "此侧没有配对页面。",
"buildingModel": "正在构建页面配对模型...",
"indexingPdf": "正在索引 PDF {{num}},第 {{page}} / {{total}} 页...",
"loadingComparison": "正在加载比较 {{current}} / {{total}}...",
"runningOcr": "正在对第 {{page}} 页运行 OCR...",
"preparingExport": "正在准备 PDF 导出...",
"renderingPage": "正在渲染第 {{current}} / {{total}} 页...",
"exportError": "导出错误",
"exportFailed": "无法导出比较 PDF。",
"loadingFile": "正在加载 {{name}}...",
"invalidFile": "无效文件",
"invalidFileMsg": "请选择有效的 PDF 文件。",
"loadError": "无法加载 PDF。文件可能已损坏或受密码保护。"
},
"posterizePdf": {
"name": "海报化 PDF",