mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-04-19 19:21:18 +00:00
Compare commits
No commits in common. "main" and "v0.45.6" have entirely different histories.
@ -49,7 +49,7 @@
|
||||
"java.configuration.updateBuildConfiguration": "interactive",
|
||||
"java.format.enabled": true,
|
||||
"java.format.settings.profile": "GoogleStyle",
|
||||
"java.format.settings.google.version": "1.26.0",
|
||||
"java.format.settings.google.version": "1.25.2",
|
||||
"java.format.settings.google.extra": "--aosp --skip-sorting-imports --skip-javadoc-formatting",
|
||||
"java.saveActions.cleanup": true,
|
||||
"java.cleanup.actions": [
|
||||
|
@ -186,7 +186,7 @@ jobs:
|
||||
file: ./Dockerfile
|
||||
push: true
|
||||
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/test:pr-${{ needs.check-comment.outputs.pr_number }}
|
||||
build-args: VERSION_TAG=alpha
|
||||
build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
||||
platforms: linux/amd64
|
||||
|
||||
- name: Set up SSH
|
||||
|
@ -1,6 +1,6 @@
|
||||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.11.6
|
||||
rev: v0.9.10
|
||||
hooks:
|
||||
- id: ruff
|
||||
args:
|
||||
@ -22,7 +22,7 @@ repos:
|
||||
files: \.(html|css|js|py|md)$
|
||||
exclude: (.vscode|.devcontainer|src/main/resources|Dockerfile|.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js)
|
||||
- repo: https://github.com/gitleaks/gitleaks
|
||||
rev: v8.24.3
|
||||
rev: v8.24.0
|
||||
hooks:
|
||||
- id: gitleaks
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
|
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -10,7 +10,7 @@
|
||||
"java.configuration.updateBuildConfiguration": "interactive",
|
||||
"java.format.enabled": true,
|
||||
"java.format.settings.profile": "GoogleStyle",
|
||||
"java.format.settings.google.version": "1.26.0",
|
||||
"java.format.settings.google.version": "1.25.2",
|
||||
"java.format.settings.google.extra": "--aosp --skip-sorting-imports --skip-javadoc-formatting",
|
||||
// (DE) Aktiviert Kommentare im Java-Format.
|
||||
// (EN) Enables comments in Java formatting.
|
||||
|
@ -141,7 +141,7 @@ Stirling-PDF currently supports 39 languages!
|
||||
| Persian (فارسی) (fa_IR) |  |
|
||||
| Polish (Polski) (pl_PL) |  |
|
||||
| Portuguese (Português) (pt_PT) |  |
|
||||
| Portuguese Brazilian (Português) (pt_BR) |  |
|
||||
| Portuguese Brazilian (Português) (pt_BR) |  |
|
||||
| Romanian (Română) (ro_RO) |  |
|
||||
| Russian (Русский) (ru_RU) |  |
|
||||
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
||||
@ -153,7 +153,7 @@ Stirling-PDF currently supports 39 languages!
|
||||
| Thai (ไทย) (th_TH) |  |
|
||||
| Tibetan (བོད་ཡིག་) (zh_BO) |  |
|
||||
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
||||
| Turkish (Türkçe) (tr_TR) |  |
|
||||
| Turkish (Türkçe) (tr_TR) |  |
|
||||
| Ukrainian (Українська) (uk_UA) |  |
|
||||
| Vietnamese (Tiếng Việt) (vi_VN) |  |
|
||||
|
||||
|
@ -365,7 +365,7 @@ spotless {
|
||||
java {
|
||||
target project.fileTree('src').include('**/*.java')
|
||||
|
||||
googleJavaFormat("1.26.0").aosp().reorderImports(false)
|
||||
googleJavaFormat("1.25.2").aosp().reorderImports(false)
|
||||
|
||||
importOrder("java", "javax", "org", "com", "net", "io", "jakarta", "lombok", "me", "stirling")
|
||||
toggleOffOn()
|
||||
|
@ -208,8 +208,7 @@ public class PipelineDirectoryProcessor {
|
||||
// Check against allowed extensions
|
||||
boolean isAllowed =
|
||||
allowAllFiles
|
||||
|| inputExtensions.contains(
|
||||
extension.toLowerCase());
|
||||
|| inputExtensions.contains(extension);
|
||||
if (!isAllowed) {
|
||||
log.info(
|
||||
"Skipping file with unsupported extension: {} ({})",
|
||||
|
@ -112,8 +112,7 @@ public class PipelineProcessor {
|
||||
for (Resource file : outputFiles) {
|
||||
boolean hasInputFileType = false;
|
||||
for (String extension : inputFileTypes) {
|
||||
if ("ALL".equals(extension)
|
||||
|| file.getFilename().toLowerCase().endsWith(extension)) {
|
||||
if ("ALL".equals(extension) || file.getFilename().endsWith(extension)) {
|
||||
hasInputFileType = true;
|
||||
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
|
||||
body.add("fileInput", file);
|
||||
@ -167,9 +166,7 @@ public class PipelineProcessor {
|
||||
.filter(
|
||||
file ->
|
||||
finalinputFileTypes.stream()
|
||||
.anyMatch(
|
||||
file.getFilename().toLowerCase()
|
||||
::endsWith))
|
||||
.anyMatch(file.getFilename()::endsWith))
|
||||
.toList();
|
||||
}
|
||||
// Check if there are matching files
|
||||
|
@ -1094,8 +1094,8 @@ imageToPDF.selectText.5=Convertir en PDF séparés
|
||||
|
||||
|
||||
#pdfToImage
|
||||
pdfToImage.title=PDF en Image
|
||||
pdfToImage.header=PDF en Image
|
||||
pdfToImage.title=Image en PDF
|
||||
pdfToImage.header=Image en PDF
|
||||
pdfToImage.selectText=Format d'image
|
||||
pdfToImage.singleOrMultiple=Type de résultat
|
||||
pdfToImage.single=Une seule grande image
|
||||
|
@ -10,9 +10,9 @@ multiPdfPrompt=Selecione os PDFs (2+)
|
||||
multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs desejados:
|
||||
imgPrompt=Selecione a(s) Imagem(ns)
|
||||
genericSubmit=Enviar
|
||||
uploadLimit=Tamanho máximo do arquivo:
|
||||
uploadLimitExceededSingular=está acima do limite. Tamanho máximo permitido é
|
||||
uploadLimitExceededPlural=estão acima do limite. Tamanho máximo permitido é
|
||||
uploadLimit=Maximum file size:
|
||||
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||
processTimeWarning=Aviso: Este processo pode levar até um minuto, dependendo do tamanho do arquivo
|
||||
pageOrderPrompt=Ordem de Página Personalizada (Digite uma lista de números de páginas, separadas por vírgula ou funções como 2n+1):
|
||||
pageSelectionPrompt=Seleção de Página Personalizada (Digite uma lista de números de páginas, separadas por vírgula como 1,5,6 ou funções como 2n+1):
|
||||
@ -86,14 +86,14 @@ loading=Carregando...
|
||||
addToDoc=Adicionar ao Documento
|
||||
reset=Reiniciar
|
||||
apply=Aplicar
|
||||
noFileSelected=Nenhum arquivo selecionado. Por favo, envie um arquivo.
|
||||
noFileSelected=No file selected. Please upload one.
|
||||
|
||||
legal.privacy=Política de Privacidade
|
||||
legal.terms=Termos e Condições
|
||||
legal.accessibility=Acessibilidade
|
||||
legal.cookie=Política de Cookies
|
||||
legal.impressum=Informações legais
|
||||
legal.showCookieBanner=Preferências de Cookies
|
||||
legal.showCookieBanner=Cookie Preferences
|
||||
|
||||
###############
|
||||
# Pipeline #
|
||||
@ -237,31 +237,31 @@ adminUserSettings.activeUsers=Usuários Ativos:
|
||||
adminUserSettings.disabledUsers=Usuários Desabilitados:
|
||||
adminUserSettings.totalUsers=Total de Usuários:
|
||||
adminUserSettings.lastRequest=Última solicitação
|
||||
adminUserSettings.usage=Ver Utilização
|
||||
adminUserSettings.usage=View Usage
|
||||
|
||||
endpointStatistics.title=Estatísticas de Endpoints
|
||||
endpointStatistics.header=Estatísticas de Endpoints
|
||||
endpointStatistics.title=Endpoint Statistics
|
||||
endpointStatistics.header=Endpoint Statistics
|
||||
endpointStatistics.top10=Top 10
|
||||
endpointStatistics.top20=Top 20
|
||||
endpointStatistics.all=Todos
|
||||
endpointStatistics.refresh=Atualizar
|
||||
endpointStatistics.includeHomepage=Incluir Página Inicial ('/')
|
||||
endpointStatistics.includeLoginPage=Incluir Página de Login ('/login')
|
||||
endpointStatistics.totalEndpoints=Total de Endpoints
|
||||
endpointStatistics.totalVisits=Total de Visitas
|
||||
endpointStatistics.showing=Mostrando
|
||||
endpointStatistics.selectedVisits=Visitas Selecionadas
|
||||
endpointStatistics.all=All
|
||||
endpointStatistics.refresh=Refresh
|
||||
endpointStatistics.includeHomepage=Include Homepage ('/')
|
||||
endpointStatistics.includeLoginPage=Include Login Page ('/login')
|
||||
endpointStatistics.totalEndpoints=Total Endpoints
|
||||
endpointStatistics.totalVisits=Total Visits
|
||||
endpointStatistics.showing=Showing
|
||||
endpointStatistics.selectedVisits=Selected Visits
|
||||
endpointStatistics.endpoint=Endpoint
|
||||
endpointStatistics.visits=Visitas
|
||||
endpointStatistics.percentage=Percentagem
|
||||
endpointStatistics.loading=Carregando...
|
||||
endpointStatistics.failedToLoad=Falha ao carregar dados do Endpoint. Por favor, tente atualizar.
|
||||
endpointStatistics.visits=Visits
|
||||
endpointStatistics.percentage=Percentage
|
||||
endpointStatistics.loading=Loading...
|
||||
endpointStatistics.failedToLoad=Failed to load endpoint data. Please try refreshing.
|
||||
endpointStatistics.home=Home
|
||||
endpointStatistics.login=Login
|
||||
endpointStatistics.top=Top
|
||||
endpointStatistics.numberOfVisits=Número de Visitas
|
||||
endpointStatistics.visitsTooltip=Visitas: {0} ({1}% do total)
|
||||
endpointStatistics.retry=Tentar novamente
|
||||
endpointStatistics.numberOfVisits=Number of Visits
|
||||
endpointStatistics.visitsTooltip=Visits: {0} ({1}% of total)
|
||||
endpointStatistics.retry=Retry
|
||||
|
||||
database.title=Importar/Exportar banco de dados
|
||||
database.header=Importar/Exportar banco de dados
|
||||
@ -739,10 +739,10 @@ sanitizePDF.title=Higienizar
|
||||
sanitizePDF.header=Higienizar
|
||||
sanitizePDF.selectText.1=Remover scripts de JavaScript.
|
||||
sanitizePDF.selectText.2=Remover arquivos embutidos.
|
||||
sanitizePDF.selectText.3=Remover metadados XMP.
|
||||
sanitizePDF.selectText.3=Remove XMP metadata
|
||||
sanitizePDF.selectText.4=Remover links.
|
||||
sanitizePDF.selectText.5=Remover fontes.
|
||||
sanitizePDF.selectText.6=Remover metadados de informações do documento.
|
||||
sanitizePDF.selectText.6=Remove Document Info Metadata
|
||||
sanitizePDF.submit=Higienizar PDF
|
||||
|
||||
|
||||
@ -1408,25 +1408,25 @@ validateSignature.cert.bits=bits
|
||||
####################
|
||||
# Cookie banner #
|
||||
####################
|
||||
cookieBanner.popUp.title=Como nós utilizamos Cookies:
|
||||
cookieBanner.popUp.description.1=Nós utilizamos cookies e outras tecnologias para melhorar o Stirling PDF, ajude-nos para que possamos desenvolver novas funcionalidades que você irá amar.
|
||||
cookieBanner.popUp.description.2=Se você não tiver interesse, clicando em "Não, Obrigado" será habilitado apenas cookies essenciais, para o site funcionar sem problemas.
|
||||
cookieBanner.popUp.acceptAllBtn=Aceito
|
||||
cookieBanner.popUp.acceptNecessaryBtn=Não, Obrigado
|
||||
cookieBanner.popUp.showPreferencesBtn=Gerenciar Preferências
|
||||
cookieBanner.preferencesModal.title=Central de Preferências de Consentimento
|
||||
cookieBanner.preferencesModal.acceptAllBtn=Aceitar tudo
|
||||
cookieBanner.preferencesModal.acceptNecessaryBtn=Rejeitar tudo
|
||||
cookieBanner.preferencesModal.savePreferencesBtn=Salvar preferências
|
||||
cookieBanner.preferencesModal.closeIconLabel=Fechar janela
|
||||
cookieBanner.preferencesModal.serviceCounterLabel=Serviço|Serviços
|
||||
cookieBanner.preferencesModal.subtitle=Uso de Cookies
|
||||
cookieBanner.preferencesModal.description.1=Stirling PDF utiliza cookies e tecnologias semelhantes para aprimorar sua experiência e entender como nossas ferramentas são utilizadas. Isso nos ajuda a melhorar o desempenho, desenvolver os recursos de seu interesse e fornecer suporte contínuo aos nossos usuários.
|
||||
cookieBanner.preferencesModal.description.2=O Stirling PDF não pode – e nunca irá – rastrear ou acessar o conteúdo dos documentos que você manipula.
|
||||
cookieBanner.preferencesModal.description.3=Sua privacidade e confiança são prioridades para nós.
|
||||
cookieBanner.preferencesModal.necessary.title.1=Cookies Estritamente Necessários
|
||||
cookieBanner.preferencesModal.necessary.title.2=Sempre Ativado
|
||||
cookieBanner.preferencesModal.necessary.description=Estes cookies são essenciais para o bom funcionamento do site. Eles habilitam recursos básicos como definir suas preferências de privacidade, realizar login e preencher formulários – e é por isso que não podem ser desativados.
|
||||
cookieBanner.preferencesModal.analytics.title=Cookies Analíticos
|
||||
cookieBanner.preferencesModal.analytics.description=Estes cookies nos ajudam a entender como nossas ferramentas estão sendo utilizadas, para que possamos nos concentrar na construção dos recursos que nossa comunidade mais valoriza. Fique tranquilo: o Stirling PDF não pode e nunca rastreará o conteúdo dos documentos com os quais você manipula.
|
||||
cookieBanner.popUp.title=How we use Cookies
|
||||
cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love.
|
||||
cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly.
|
||||
cookieBanner.popUp.acceptAllBtn=Okay
|
||||
cookieBanner.popUp.acceptNecessaryBtn=No Thanks
|
||||
cookieBanner.popUp.showPreferencesBtn=Manage preferences
|
||||
cookieBanner.preferencesModal.title=Consent Preferences Center
|
||||
cookieBanner.preferencesModal.acceptAllBtn=Accept all
|
||||
cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all
|
||||
cookieBanner.preferencesModal.savePreferencesBtn=Save preferences
|
||||
cookieBanner.preferencesModal.closeIconLabel=Close modal
|
||||
cookieBanner.preferencesModal.serviceCounterLabel=Service|Services
|
||||
cookieBanner.preferencesModal.subtitle=Cookie Usage
|
||||
cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users.
|
||||
cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use.
|
||||
cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do.
|
||||
cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies
|
||||
cookieBanner.preferencesModal.necessary.title.2=Always Enabled
|
||||
cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off.
|
||||
cookieBanner.preferencesModal.analytics.title=Analytics
|
||||
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
|
||||
|
||||
|
@ -10,9 +10,9 @@ multiPdfPrompt=PDFleri seçin (2+)
|
||||
multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın)
|
||||
imgPrompt=Resim(leri) seçin
|
||||
genericSubmit=Gönder
|
||||
uploadLimit=Maksimum dosya boyutu:
|
||||
uploadLimitExceededSingular=çok büyük. İzin verilen maksimum boyut:
|
||||
uploadLimitExceededPlural=çok büyük. İzin verilen maksimum boyut:
|
||||
uploadLimit=Maximum file size:
|
||||
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
||||
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
||||
pageSelectionPrompt=Özel Sayfa Seçimi (1,5,6 sayfa numaralarının virgülle ayrılmış bir listesini veya 2n+1 gibi bir fonksiyon girin) :
|
||||
@ -80,20 +80,20 @@ color=Renk
|
||||
sponsor=Bağış
|
||||
info=Bilgi
|
||||
pro=Pro
|
||||
page=Sayfa
|
||||
pages=Sayfalar
|
||||
loading=Yükleniyor...
|
||||
addToDoc=Dökümana Ekle
|
||||
reset=Sıfırla
|
||||
apply=Uygula
|
||||
noFileSelected=Hiçbir dosya seçilmedi. Lütfen bir dosya yükleyin.
|
||||
page=Page
|
||||
pages=Pages
|
||||
loading=Loading...
|
||||
addToDoc=Add to Document
|
||||
reset=Reset
|
||||
apply=Apply
|
||||
noFileSelected=No file selected. Please upload one.
|
||||
|
||||
legal.privacy=Gizlilik Politikası
|
||||
legal.terms=Şartlar ve koşullar
|
||||
legal.accessibility=Erişilebilirlik
|
||||
legal.cookie=Çerez Politikası
|
||||
legal.impressum=Hakkımızda
|
||||
legal.showCookieBanner=Çerez Tercihleri
|
||||
legal.showCookieBanner=Cookie Preferences
|
||||
|
||||
###############
|
||||
# Pipeline #
|
||||
@ -123,21 +123,21 @@ pipelineOptions.validateButton=Doğrula
|
||||
########################
|
||||
# ENTERPRISE EDITION #
|
||||
########################
|
||||
enterpriseEdition.button=Pro Sürümüne Yükselt
|
||||
enterpriseEdition.warning=Bu özellik yalnızca Pro kullanıcılarına sunulmaktadır.
|
||||
enterpriseEdition.yamlAdvert=Stirling PDF Pro, YAML yapılandırma dosyalarını ve diğer SSO özelliklerini destekler.
|
||||
enterpriseEdition.ssoAdvert=Daha fazla kullanıcı yönetimi özelliği mi arıyorsunuz? Stirling PDF Pro'ya göz atın
|
||||
enterpriseEdition.button=Upgrade to Pro
|
||||
enterpriseEdition.warning=This feature is only available to Pro users.
|
||||
enterpriseEdition.yamlAdvert=Stirling PDF Pro supports YAML configuration files and other SSO features.
|
||||
enterpriseEdition.ssoAdvert=Looking for more user management features? Check out Stirling PDF Pro
|
||||
|
||||
|
||||
#################
|
||||
# Analytics #
|
||||
#################
|
||||
analytics.title=Stirling PDF’i daha iyi hale getirmek ister misiniz?
|
||||
analytics.paragraph1=Stirling PDF, ürünü geliştirmemize yardımcı olmak için isteğe bağlı analizleri içerir. Kişisel bilgileri veya dosya içeriklerini asla takip etmiyoruz.
|
||||
analytics.paragraph2=Stirling PDF’in büyümesine destek olmak ve kullanıcılarımızı daha iyi anlayabilmemiz için analizleri etkinleştirmeyi düşünebilirsiniz.
|
||||
analytics.enable=Analizi Etkinleştir
|
||||
analytics.disable=Analizi Devre Dışı Bırak
|
||||
analytics.settings=Analiz ayarlarını config/settings.yml dosyasından değiştirebilirsiniz
|
||||
analytics.title=Do you want make Stirling PDF better?
|
||||
analytics.paragraph1=Stirling PDF has opt in analytics to help us improve the product. We do not track any personal information or file contents.
|
||||
analytics.paragraph2=Please consider enabling analytics to help Stirling-PDF grow and to allow us to understand our users better.
|
||||
analytics.enable=Enable analytics
|
||||
analytics.disable=Disable analytics
|
||||
analytics.settings=You can change the settings for analytics in the config/settings.yml file
|
||||
|
||||
|
||||
#############
|
||||
@ -237,31 +237,31 @@ adminUserSettings.activeUsers=Aktif Kullanıcılar:
|
||||
adminUserSettings.disabledUsers=Devre Dışı Kullanıcılar:
|
||||
adminUserSettings.totalUsers=Toplam Kullanıcılar:
|
||||
adminUserSettings.lastRequest=Son İstek
|
||||
adminUserSettings.usage=Kullanımı Görüntüle
|
||||
adminUserSettings.usage=View Usage
|
||||
|
||||
endpointStatistics.title=Endpoint İstatistikleri
|
||||
endpointStatistics.header=Endpoint İstatistikleri
|
||||
endpointStatistics.top10=En Çok Kullanılan 10
|
||||
endpointStatistics.top20=En Çok Kullanılan 20
|
||||
endpointStatistics.all=Hepsi
|
||||
endpointStatistics.refresh=Yenile
|
||||
endpointStatistics.includeHomepage=Ana Sayfayı Dahil Et ('/')
|
||||
endpointStatistics.includeLoginPage=Giriş Sayfasını Dahil Et ('/login')
|
||||
endpointStatistics.totalEndpoints=Toplam Uç Nokta
|
||||
endpointStatistics.totalVisits=Toplam Ziyaret
|
||||
endpointStatistics.showing=Gösteriliyor
|
||||
endpointStatistics.selectedVisits=Seçilen Ziyaretler
|
||||
endpointStatistics.title=Endpoint Statistics
|
||||
endpointStatistics.header=Endpoint Statistics
|
||||
endpointStatistics.top10=Top 10
|
||||
endpointStatistics.top20=Top 20
|
||||
endpointStatistics.all=All
|
||||
endpointStatistics.refresh=Refresh
|
||||
endpointStatistics.includeHomepage=Include Homepage ('/')
|
||||
endpointStatistics.includeLoginPage=Include Login Page ('/login')
|
||||
endpointStatistics.totalEndpoints=Total Endpoints
|
||||
endpointStatistics.totalVisits=Total Visits
|
||||
endpointStatistics.showing=Showing
|
||||
endpointStatistics.selectedVisits=Selected Visits
|
||||
endpointStatistics.endpoint=Endpoint
|
||||
endpointStatistics.visits=Ziyaret
|
||||
endpointStatistics.percentage=Yüzde
|
||||
endpointStatistics.loading=Yükleniyor...
|
||||
endpointStatistics.failedToLoad=Endpoint verileri yüklenemedi. Lütfen sayfayı yenileyin.
|
||||
endpointStatistics.home=Ana Sayfa
|
||||
endpointStatistics.login=Giriş
|
||||
endpointStatistics.top=En Çok
|
||||
endpointStatistics.numberOfVisits=Ziyaret Sayısı
|
||||
endpointStatistics.visitsTooltip=Ziyaret: {0} (toplamın %{1}’i)
|
||||
endpointStatistics.retry=Yeniden Dene
|
||||
endpointStatistics.visits=Visits
|
||||
endpointStatistics.percentage=Percentage
|
||||
endpointStatistics.loading=Loading...
|
||||
endpointStatistics.failedToLoad=Failed to load endpoint data. Please try refreshing.
|
||||
endpointStatistics.home=Home
|
||||
endpointStatistics.login=Login
|
||||
endpointStatistics.top=Top
|
||||
endpointStatistics.numberOfVisits=Number of Visits
|
||||
endpointStatistics.visitsTooltip=Visits: {0} ({1}% of total)
|
||||
endpointStatistics.retry=Retry
|
||||
|
||||
database.title=Veri Tabanını İçe/Dışa Aktar
|
||||
database.header=Veri Tabanını İçe/Dışa Aktar
|
||||
@ -276,14 +276,14 @@ database.info_1=Verileri içe aktarırken, yapının doğru olduğundan emin olm
|
||||
database.info_2=Karşıya yüklerken dosya adı önemli değildir. Daha sonra yedekleme_kullanıcısı_yyyyAAggSdd.sql biçiminde yeniden adlandırılacak ve tutarlı bir adlandırma kuralı sağlanacaktır.
|
||||
database.submit=Yedeklemeyi İçe Aktar
|
||||
database.importIntoDatabaseSuccessed=Veri tabanına başarıyla aktarıldı
|
||||
database.backupCreated=Veritabanı yedeklemesi başarılı
|
||||
database.backupCreated=Database backup successful
|
||||
database.fileNotFound=Dosya bulunamadı
|
||||
database.fileNullOrEmpty=Dosya yok veya boş olmamalıdır
|
||||
database.failedImportFile=Dosya İçe Aktarılamadı
|
||||
database.notSupported=Bu işlev, mevcut veritabanı bağlantınız için desteklenmiyor.
|
||||
database.notSupported=This function is not available for your database connection.
|
||||
|
||||
session.expired=Oturumunuzun süresi doldu. Lütfen sayfayı yenileyip tekrar deneyin.
|
||||
session.refreshPage=Sayfayı Yenile
|
||||
session.expired=Your session has expired. Please refresh the page and try again.
|
||||
session.refreshPage=Refresh Page
|
||||
|
||||
#############
|
||||
# HOME-PAGE #
|
||||
@ -296,14 +296,14 @@ home.viewPdf.title=View/Edit PDF
|
||||
home.viewPdf.desc=Görüntüleyin, açıklama ekleyin, metin veya resim ekleyin
|
||||
viewPdf.tags=görüntüle,oku,açıklama ekle,metin,görüntü
|
||||
|
||||
home.setFavorites=Favorilere Ekle
|
||||
home.hideFavorites=Favorileri Gizle
|
||||
home.showFavorites=Favorileri Göster
|
||||
home.legacyHomepage=Eski ana sayfa
|
||||
home.newHomePage=Yeni ana sayfamızı deneyin!
|
||||
home.alphabetical=Alfabetik
|
||||
home.globalPopularity=Global Popülerlik
|
||||
home.sortBy=Sıralama ölçütü:
|
||||
home.setFavorites=Set Favourites
|
||||
home.hideFavorites=Hide Favourites
|
||||
home.showFavorites=Show Favourites
|
||||
home.legacyHomepage=Old homepage
|
||||
home.newHomePage=Try our new homepage!
|
||||
home.alphabetical=Alphabetical
|
||||
home.globalPopularity=Global Popularity
|
||||
home.sortBy=Sort by:
|
||||
|
||||
home.multiTool.title=PDF Çoklu Araç
|
||||
home.multiTool.desc=Birleştir, Döndür, Yeniden Düzenle ve Sayfaları Kaldır
|
||||
@ -492,9 +492,9 @@ home.MarkdownToPDF.title=Markdown'dan PDF'e
|
||||
home.MarkdownToPDF.desc=Herhangi bir Markdown dosyasını PDF'e dönüştürür
|
||||
MarkdownToPDF.tags=biçimlendirme,web-içeriği,dönüşüm,dönüştür
|
||||
|
||||
home.PDFToMarkdown.title=PDF'den Markdown'a
|
||||
home.PDFToMarkdown.desc=Herhangi bir PDF'yi Markdown formatına dönüştürür
|
||||
PDFToMarkdown.tags=biçimlendirme,web-içeriği,dönüşüm,dönüştür,md
|
||||
home.PDFToMarkdown.title=PDF to Markdown
|
||||
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||
|
||||
home.getPdfInfo.title=PDF Hakkında TÜM Bilgiyi Al
|
||||
home.getPdfInfo.desc=PDF'ler hakkında mümkün olan her türlü bilgiyi toplar
|
||||
@ -519,9 +519,9 @@ home.autoRedact.title=Otomatik Karartma
|
||||
home.autoRedact.desc=Giriş metnine dayanarak bir PDF'teki metni Otomatik Karartır (Redakte)
|
||||
autoRedact.tags=Karart,Gizle,karartma,siyah,markör,gizli
|
||||
|
||||
home.redact.title=Manuel Sansürleme
|
||||
home.redact.desc=Seçilen metinler, çizilen şekiller ve/veya belirli sayfalar üzerinden PDF'yi sansürler
|
||||
redact.tags=Sansürle,Gizle,karart,karartma,işaretleyici,gizli,manuel
|
||||
home.redact.title=Manual Redaction
|
||||
home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s)
|
||||
redact.tags=Redact,Hide,black out,black,marker,hidden,manual
|
||||
|
||||
home.tableExtraxt.title=PDF'den CSV'ye
|
||||
home.tableExtraxt.desc=PDF'den Tabloları çıkarır ve CSV'ye dönüştürür
|
||||
@ -551,32 +551,32 @@ home.removeImagePdf.desc=Dosya boyutunu küçültmek için PDF'den resmi kaldır
|
||||
removeImagePdf.tags=Resmi Kaldır,Sayfa İşlemleri,Arka uç,sunucu tarafı
|
||||
|
||||
|
||||
home.splitPdfByChapters.title=PDF'yi Bölümlere Göre Böl
|
||||
home.splitPdfByChapters.desc=PDF'yi bölüm yapısına göre birden fazla dosyaya ayırın.
|
||||
splitPdfByChapters.tags=böl, bölümler, yer imleri, düzenle
|
||||
home.splitPdfByChapters.title=Split PDF by Chapters
|
||||
home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure.
|
||||
splitPdfByChapters.tags=split,chapters,bookmarks,organize
|
||||
|
||||
home.validateSignature.title=PDF İmzasını Doğrula
|
||||
home.validateSignature.desc=PDF belgelerindeki dijital imzaları ve sertifikaları doğrulayın
|
||||
validateSignature.tags=imza, doğrula, geçerlilik kontrolü, pdf, sertifika, dijital imza, İmzayı Doğrula, Sertifikayı Doğrula
|
||||
home.validateSignature.title=Validate PDF Signature
|
||||
home.validateSignature.desc=Verify digital signatures and certificates in PDF documents
|
||||
validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate
|
||||
|
||||
#replace-invert-color
|
||||
replace-color.title=Renk Değiştir-Tersine Çevir
|
||||
replace-color.header=PDF Renklerini Değiştir veya Tersine Çevir
|
||||
home.replaceColorPdf.title=Renkleri Değiştir ve Tersine Çevir
|
||||
home.replaceColorPdf.desc=PDF'deki metin ve arka plan renklerini değiştirin ve PDF'nin tüm renklerini tersine çevirerek dosya boyutunu azaltın
|
||||
replaceColorPdf.tags=Renk Değiştir, Sayfa işlemleri, Arka yüz, Sunucu tarafı
|
||||
replace-color.selectText.1=Renk Değiştir veya Tersine Çevirme Seçenekleri
|
||||
replace-color.selectText.2=Varsayılan (Yüksek kontrastlı varsayılan renkler)
|
||||
replace-color.selectText.3=Özel (Kişiselleştirilmiş renkler)
|
||||
replace-color.selectText.4=Tümü Tersine Çevir (Tüm renkleri tersine çevir)
|
||||
replace-color.selectText.5=Yüksek kontrastlı renk seçenekleri
|
||||
replace-color.selectText.6=Siyah arka plan üzerine beyaz metin
|
||||
replace-color.selectText.7=Beyaz arka plan üzerine siyah metin
|
||||
replace-color.selectText.8=Siyah arka plan üzerine sarı metin
|
||||
replace-color.selectText.9=Siyah arka plan üzerine yeşil metin
|
||||
replace-color.selectText.10=Metin Rengini Seç
|
||||
replace-color.selectText.11=Arka Plan Rengini Seç
|
||||
replace-color.submit=Değiştir
|
||||
replace-color.title=Replace-Invert-Color
|
||||
replace-color.header=Replace-Invert Color PDF
|
||||
home.replaceColorPdf.title=Replace and Invert Color
|
||||
home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size
|
||||
replaceColorPdf.tags=Replace Color,Page operations,Back end,server side
|
||||
replace-color.selectText.1=Replace or Invert color Options
|
||||
replace-color.selectText.2=Default(Default high contrast colors)
|
||||
replace-color.selectText.3=Custom(Customized colors)
|
||||
replace-color.selectText.4=Full-Invert(Invert all colors)
|
||||
replace-color.selectText.5=High contrast color options
|
||||
replace-color.selectText.6=white text on black background
|
||||
replace-color.selectText.7=Black text on white background
|
||||
replace-color.selectText.8=Yellow text on black background
|
||||
replace-color.selectText.9=Green text on black background
|
||||
replace-color.selectText.10=Choose text Color
|
||||
replace-color.selectText.11=Choose background Color
|
||||
replace-color.submit=Replace
|
||||
|
||||
|
||||
|
||||
@ -602,11 +602,11 @@ login.oauth2invalidRequest=Geçersiz İstek
|
||||
login.oauth2AccessDenied=Erişim Reddedildi
|
||||
login.oauth2InvalidTokenResponse=Geçersiz Belirteç Yanıtı
|
||||
login.oauth2InvalidIdToken=Geçersiz Kimlik Belirteci
|
||||
login.relyingPartyRegistrationNotFound=Bağlı taraf kaydı bulunamadı
|
||||
login.relyingPartyRegistrationNotFound=No relying party registration found
|
||||
login.userIsDisabled=Kullanıcı devre dışı bırakıldı, şu anda bu kullanıcı adıyla giriş engellendi. Lütfen yöneticiyle iletişime geçin.
|
||||
login.alreadyLoggedIn=Zaten şu cihazlarda oturum açılmış:
|
||||
login.alreadyLoggedIn2=Lütfen bu cihazlardan çıkış yaparak tekrar deneyin.
|
||||
login.toManySessions=Çok fazla aktif oturumunuz var
|
||||
login.alreadyLoggedIn=You are already logged in to
|
||||
login.alreadyLoggedIn2=devices. Please log out of the devices and try again.
|
||||
login.toManySessions=You have too many active sessions
|
||||
|
||||
#auto-redact
|
||||
autoRedact.title=Otomatik Karartma
|
||||
@ -621,31 +621,31 @@ autoRedact.convertPDFToImageLabel=PDF'i PDF-Görüntü'ye dönüştür (Kutunun
|
||||
autoRedact.submitButton=Gönder
|
||||
|
||||
#redact
|
||||
redact.title=Manuel Sansürleme
|
||||
redact.header=Manuel Sansürleme
|
||||
redact.submit=Sansürle
|
||||
redact.textBasedRedaction=Metin Tabanlı Sansürleme
|
||||
redact.pageBasedRedaction=Sayfa Tabanlı Sansürleme
|
||||
redact.convertPDFToImageLabel=PDF'yi Görsel PDF'ye Dönüştür (Kutunun arkasındaki metni kaldırmak için kullanılır)
|
||||
redact.pageRedactionNumbers.title=Sayfalar
|
||||
redact.pageRedactionNumbers.placeholder=(örneğin: 1,2,8 veya 4,7,12-16 ya da 2n-1)
|
||||
redact.redactionColor.title=Sansür Rengi
|
||||
redact.export=Dışa Aktar
|
||||
redact.upload=Yükle
|
||||
redact.boxRedaction=Kutu Çizerek Sansürleme
|
||||
redact.zoom=Yakınlaştırma
|
||||
redact.zoomIn=Yakınlaştır
|
||||
redact.zoomOut=Uzaklaştır
|
||||
redact.nextPage=Sonraki Sayfa
|
||||
redact.previousPage=Önceki Sayfa
|
||||
redact.toggleSidebar=Kenar Çubuğunu Aç/Kapat
|
||||
redact.showThumbnails=Küçük Resimleri Göster
|
||||
redact.showDocumentOutline=Belge Anahatlarını Göster (tüm öğeleri genişletmek/daraltmak için çift tıklayın)
|
||||
redact.showAttatchments=Ekleri Göster
|
||||
redact.showLayers=Katmanları Göster (tüm katmanları varsayılana döndürmek için çift tıklayın)
|
||||
redact.colourPicker=Renk Seçici
|
||||
redact.findCurrentOutlineItem=Geçerli Anahat Öğesini Bul
|
||||
redact.applyChanges=Değişiklikleri Uygula
|
||||
redact.title=Manual Redaction
|
||||
redact.header=Manual Redaction
|
||||
redact.submit=Redact
|
||||
redact.textBasedRedaction=Text based Redaction
|
||||
redact.pageBasedRedaction=Page-based Redaction
|
||||
redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box)
|
||||
redact.pageRedactionNumbers.title=Pages
|
||||
redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||
redact.redactionColor.title=Redaction Color
|
||||
redact.export=Export
|
||||
redact.upload=Upload
|
||||
redact.boxRedaction=Box draw redaction
|
||||
redact.zoom=Zoom
|
||||
redact.zoomIn=Zoom in
|
||||
redact.zoomOut=Zoom out
|
||||
redact.nextPage=Next Page
|
||||
redact.previousPage=Previous Page
|
||||
redact.toggleSidebar=Toggle Sidebar
|
||||
redact.showThumbnails=Show Thumbnails
|
||||
redact.showDocumentOutline=Show Document Outline (double-click to expand/collapse all items)
|
||||
redact.showAttatchments=Show Attachments
|
||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
||||
redact.colourPicker=Colour Picker
|
||||
redact.findCurrentOutlineItem=Find current outline item
|
||||
redact.applyChanges=Apply Changes
|
||||
|
||||
#showJS
|
||||
showJS.title=Javascript'i Göster
|
||||
@ -739,10 +739,10 @@ 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=XMP meta verisini kaldır
|
||||
sanitizePDF.selectText.3=Remove XMP metadata
|
||||
sanitizePDF.selectText.4=Linkleri kaldır
|
||||
sanitizePDF.selectText.5=Fontları kaldır
|
||||
sanitizePDF.selectText.6=Belge Bilgisi Meta Verisini Kaldır
|
||||
sanitizePDF.selectText.6=Remove Document Info Metadata
|
||||
sanitizePDF.submit=PDF'i Temizle
|
||||
|
||||
|
||||
@ -821,7 +821,7 @@ scalePages.submit=Gönder
|
||||
certSign.title=Sertifika İmzalama
|
||||
certSign.header=Sertifikanızla bir PDF imzalayın (Devam eden iş)
|
||||
certSign.selectPDF=İmzalamak için bir PDF Dosyası seçin:
|
||||
certSign.jksNote=Not: Sertifika türünüz aşağıda listelenmemişse, lütfen keytool komut satırı aracını kullanarak sertifikanızı bir Java Keystore (.jks) dosyasına dönüştürün. Ardından, aşağıdaki .jks dosyası seçeneğini seçin.
|
||||
certSign.jksNote=Note: Sertifika türünüz aşağıda listelenmemişse, lütfen keytool komut satırı aracını kullanarak sertifikanızı bir Java Keystore (.jks) dosyasına dönüştürün. Ardından, aşağıdaki .jks dosyası seçeneğini seçin.
|
||||
certSign.selectKey=Özel Anahtar Dosyanızı Seçin (PKCS#8 formatında, .pem veya .der olabilir):
|
||||
certSign.selectCert=Sertifika Dosyanızı Seçin (X.509 formatında, .pem veya .der olabilir):
|
||||
certSign.selectP12=PKCS#12 Anahtar Deposu Dosyanızı Seçin (.p12 veya .pfx) (İsteğe bağlı, sağlanırsa, özel anahtarınızı ve sertifikanızı içermelidir):
|
||||
@ -867,9 +867,9 @@ compare.highlightColor.2=Vurgu Rengi 2:
|
||||
compare.document.1=Belge 1
|
||||
compare.document.2=Belge 2
|
||||
compare.submit=Karşılaştır
|
||||
compare.complex.message=Verilen belgelerden biri veya her ikisi büyük dosyalar olduğundan karşılaştırma doğruluğu azalabilir
|
||||
compare.large.file.message=Verilen belgelerden biri veya her ikisi işlenemeyecek kadar büyük
|
||||
compare.no.text.message=Seçilen PDF'lerden biri veya her ikisinde metin içeriği yok. Lütfen karşılaştırma için metin içeren PDF'ler seçin.
|
||||
compare.complex.message=One or both of the provided documents are large files, accuracy of comparison may be reduced
|
||||
compare.large.file.message=One or Both of the provided documents are too large to process
|
||||
compare.no.text.message=One or both of the selected PDFs have no text content. Please choose PDFs with text for comparison.
|
||||
|
||||
#sign
|
||||
sign.title=İmzala
|
||||
@ -879,20 +879,20 @@ sign.draw=İmza Çiz
|
||||
sign.text=Metin Girişi
|
||||
sign.clear=Temizle
|
||||
sign.add=Ekle
|
||||
sign.saved=Kaydedilmiş İmzalar
|
||||
sign.save=İmzayı Kaydet
|
||||
sign.personalSigs=Kişisel İmzalar
|
||||
sign.sharedSigs=Paylaşılan İmzalar
|
||||
sign.noSavedSigs=Kayıtlı imza bulunamadı
|
||||
sign.addToAll=Tüm sayfalara ekle
|
||||
sign.delete=Sil
|
||||
sign.first=İlk sayfa
|
||||
sign.last=Son sayfa
|
||||
sign.next=Sonraki sayfa
|
||||
sign.previous=Önceki sayfa
|
||||
sign.maintainRatio=Oranı korumayı değiştir
|
||||
sign.undo=Geri Al
|
||||
sign.redo=Yinele
|
||||
sign.saved=Saved Signatures
|
||||
sign.save=Save Signature
|
||||
sign.personalSigs=Personal Signatures
|
||||
sign.sharedSigs=Shared Signatures
|
||||
sign.noSavedSigs=No saved signatures found
|
||||
sign.addToAll=Add to all pages
|
||||
sign.delete=Delete
|
||||
sign.first=First page
|
||||
sign.last=Last page
|
||||
sign.next=Next page
|
||||
sign.previous=Previous page
|
||||
sign.maintainRatio=Toggle maintain aspect ratio
|
||||
sign.undo=Undo
|
||||
sign.redo=Redo
|
||||
|
||||
#repair
|
||||
repair.title=Onar
|
||||
@ -1003,7 +1003,7 @@ pdfOrganiser.mode.7=İlk Önce Kaldır
|
||||
pdfOrganiser.mode.8=Sonuncuyu Kaldır
|
||||
pdfOrganiser.mode.9=İlk ve Sonu Kaldır
|
||||
pdfOrganiser.mode.10=Tek-Çift Birleştirme
|
||||
pdfOrganiser.mode.11=Tüm sayfaları çoğalt
|
||||
pdfOrganiser.mode.11=Duplicate all pages
|
||||
pdfOrganiser.placeholder=(örn. 1,3,2 veya 4-8,2,10-12 veya 2n-1)
|
||||
|
||||
|
||||
@ -1011,39 +1011,39 @@ pdfOrganiser.placeholder=(örn. 1,3,2 veya 4-8,2,10-12 veya 2n-1)
|
||||
multiTool.title=PDF Çoklu Araç
|
||||
multiTool.header=PDF Çoklu Araç
|
||||
multiTool.uploadPrompts=Dosya Adı
|
||||
multiTool.selectAll=Tümünü Seç
|
||||
multiTool.deselectAll=Seçimi Kaldır
|
||||
multiTool.selectPages=Sayfa Seç
|
||||
multiTool.selectedPages=Seçilen Sayfalar
|
||||
multiTool.page=Sayfa
|
||||
multiTool.deleteSelected=Seçilenleri Sil
|
||||
multiTool.downloadAll=Dışa Aktar
|
||||
multiTool.downloadSelected=Seçilenleri Dışa Aktar
|
||||
multiTool.selectAll=Select All
|
||||
multiTool.deselectAll=Deselect All
|
||||
multiTool.selectPages=Page Select
|
||||
multiTool.selectedPages=Selected Pages
|
||||
multiTool.page=Page
|
||||
multiTool.deleteSelected=Delete Selected
|
||||
multiTool.downloadAll=Export
|
||||
multiTool.downloadSelected=Export Selected
|
||||
|
||||
multiTool.insertPageBreak=Sayfa Sonu Ekle
|
||||
multiTool.addFile=Dosya Ekle
|
||||
multiTool.rotateLeft=Sola Döndür
|
||||
multiTool.rotateRight=Sağa Döndür
|
||||
multiTool.split=Böl
|
||||
multiTool.moveLeft=Sola Taşı
|
||||
multiTool.moveRight=Sağa Taşı
|
||||
multiTool.delete=Sil
|
||||
multiTool.dragDropMessage=Sayfa(lar) Seçildi
|
||||
multiTool.undo=Geri Al
|
||||
multiTool.redo=Yinele
|
||||
multiTool.insertPageBreak=Insert Page Break
|
||||
multiTool.addFile=Add File
|
||||
multiTool.rotateLeft=Rotate Left
|
||||
multiTool.rotateRight=Rotate Right
|
||||
multiTool.split=Split
|
||||
multiTool.moveLeft=Move Left
|
||||
multiTool.moveRight=Move Right
|
||||
multiTool.delete=Delete
|
||||
multiTool.dragDropMessage=Page(s) Selected
|
||||
multiTool.undo=Undo
|
||||
multiTool.redo=Redo
|
||||
|
||||
#decrypt
|
||||
decrypt.passwordPrompt=Bu dosya parola korumalı. Lütfen parolayı girin:
|
||||
decrypt.cancelled=PDF için işlem iptal edildi: {0}
|
||||
decrypt.noPassword=Şifrelenmiş PDF için parola girilmedi: {0}
|
||||
decrypt.invalidPassword=Lütfen doğru parolayla tekrar deneyin.
|
||||
decrypt.invalidPasswordHeader=PDF için yanlış parola veya desteklenmeyen şifreleme: {0}
|
||||
decrypt.unexpectedError=Dosya işlenirken bir hata oluştu. Lütfen tekrar deneyin.
|
||||
decrypt.serverError=Şifre çözme sırasında sunucu hatası: {0}
|
||||
decrypt.success=Dosyanın şifresi başarıyla çözüldü.
|
||||
decrypt.passwordPrompt=This file is password-protected. Please enter the password:
|
||||
decrypt.cancelled=Operation cancelled for PDF: {0}
|
||||
decrypt.noPassword=No password provided for encrypted PDF: {0}
|
||||
decrypt.invalidPassword=Please try again with the correct password.
|
||||
decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0}
|
||||
decrypt.unexpectedError=There was an error processing the file. Please try again.
|
||||
decrypt.serverError=Server error while decrypting: {0}
|
||||
decrypt.success=File decrypted successfully.
|
||||
|
||||
#multiTool-advert
|
||||
multiTool-advert.message=Bu özellik <a href="{0}">çoklu araçlar sayfamızda</a> da mevcuttur. Sayfa sayfa gelişmiş arayüz ve ek özellikler için göz atın!
|
||||
multiTool-advert.message=This feature is also available in our <a href="{0}">multi-tool page</a>. Check it out for enhanced page-by-page UI and additional features!
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View/Edit PDF
|
||||
@ -1306,21 +1306,21 @@ licenses.license=Lisans
|
||||
survey.nav=Anket
|
||||
survey.title=Stirling-PDF Anketi
|
||||
survey.description=Stirling-PDF'te izleme yok, bu yüzden Stirling-PDF'i iyileştirmek için kullanıcılarımızdan geri bildirim almak istiyoruz!
|
||||
survey.changes=Stirling-PDF son ankete göre değişti! Daha fazla bilgi için blog yazımıza göz atın:
|
||||
survey.changes2=Bu değişikliklerle birlikte ücretli kurumsal destek ve fon alıyoruz
|
||||
survey.changes=Stirling-PDF has changed since the last survey! To find out more please check our blog post here:
|
||||
survey.changes2=With these changes we are getting paid business support and funding
|
||||
survey.please=Lütfen anketimize katılmayı düşünün!
|
||||
survey.disabled=(Anket açılır penceresi sonraki güncellemelerde devre dışı bırakılacak ancak sayfanın alt kısmında yer alacaktır)
|
||||
survey.button=Ankete Katıl
|
||||
survey.dontShowAgain=Tekrar gösterme
|
||||
survey.meeting.1=Eğer Stirling PDF'i iş yerinizde kullanıyorsanız, sizinle görüşmek isteriz. 15 dakikalık bir kullanıcı keşif oturumu karşılığında teknik destek sunuyoruz.
|
||||
survey.meeting.2=Bu fırsat sayesinde:
|
||||
survey.meeting.3=Kurulum, entegrasyonlar veya sorun giderme konularında yardım alabilirsiniz
|
||||
survey.meeting.4=Performans, uç durumlar ve eksik özellikler hakkında doğrudan geri bildirim sağlayabilirsiniz
|
||||
survey.meeting.5=Stirling PDF’i gerçek dünya kurumsal kullanımı için daha iyi hale getirmemize yardımcı olabilirsiniz
|
||||
survey.meeting.6=İlgileniyorsanız, ekibimizden doğrudan zaman ayırabilirsiniz. (Yalnızca İngilizce)
|
||||
survey.meeting.7=Kullanım senaryolarınızı dinlemeyi ve Stirling PDF’i daha da iyi hale getirmeyi sabırsızlıkla bekliyoruz!
|
||||
survey.meeting.notInterested=Kurumsal kullanıcı değilseniz ve/veya görüşmeye ilgi duymuyorsanız
|
||||
survey.meeting.button=Görüşme Planla
|
||||
survey.meeting.1=If you're using Stirling PDF at work, we'd love to speak to you. We're offering technical support sessions in exchange for a 15 minute user discovery session.
|
||||
survey.meeting.2=This is a chance to:
|
||||
survey.meeting.3=Get help with deployment, integrations, or troubleshooting
|
||||
survey.meeting.4=Provide direct feedback on performance, edge cases, and feature gaps
|
||||
survey.meeting.5=Help us refine Stirling PDF for real-world enterprise use
|
||||
survey.meeting.6=If you're interested, you can book time with our team directly. (English speaking only)
|
||||
survey.meeting.7=Looking forward to digging into your use cases and making Stirling PDF even better!
|
||||
survey.meeting.notInterested=Not a business and/or interested in a meeting?
|
||||
survey.meeting.button=Book meeting
|
||||
|
||||
#error
|
||||
error.sorry=Sorun için özür dileriz!
|
||||
@ -1343,90 +1343,90 @@ removeImage.removeImage=Resmi kaldır
|
||||
removeImage.submit=Resmi kaldır
|
||||
|
||||
|
||||
splitByChapters.title=PDF'yi Bölümlere Ayır
|
||||
splitByChapters.header=PDF'yi Bölümlere Ayır
|
||||
splitByChapters.bookmarkLevel=Yer imi Seviyesi
|
||||
splitByChapters.includeMetadata=Meta Veriyi Dahil Et
|
||||
splitByChapters.allowDuplicates=Yinelenen Yer İmlerine İzin Ver
|
||||
splitByChapters.desc.1=Bu araç, bir PDF dosyasını bölüm yapısına göre birden fazla PDF'ye böler.
|
||||
splitByChapters.desc.2=Bölme için kullanılacak yer imi seviyesini seçin (0 en üst seviye, 1 ikinci seviye vb.).
|
||||
splitByChapters.desc.3=Meta Veriyi Dahil Et: İşaretlenirse, orijinal PDF'nin meta verisi her bir bölünmüş PDF'ye dahil edilir.
|
||||
splitByChapters.desc.4=Yinelenen Yer İmlerine İzin Ver: İşaretlenirse, aynı sayfadaki birden fazla yer imi ayrı PDF'ler oluşturabilir.
|
||||
splitByChapters.submit=PDF'yi Ayır
|
||||
splitByChapters.title=Split PDF by Chapters
|
||||
splitByChapters.header=Split PDF by Chapters
|
||||
splitByChapters.bookmarkLevel=Bookmark Level
|
||||
splitByChapters.includeMetadata=Include Metadata
|
||||
splitByChapters.allowDuplicates=Allow Duplicates
|
||||
splitByChapters.desc.1=This tool splits a PDF file into multiple PDFs based on its chapter structure.
|
||||
splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitting (0 for top-level, 1 for second-level, etc.).
|
||||
splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF.
|
||||
splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs.
|
||||
splitByChapters.submit=Split PDF
|
||||
|
||||
#File Chooser
|
||||
fileChooser.click=Seç
|
||||
fileChooser.or=veya
|
||||
fileChooser.dragAndDrop=Sürükle & Bırak
|
||||
fileChooser.dragAndDropPDF=PDF dosyasını Sürükle & Bırak
|
||||
fileChooser.dragAndDropImage=Görsel dosyasını Sürükle & Bırak
|
||||
fileChooser.hoveredDragAndDrop=Dosya(lar)ı buraya sürükleyip bırakın
|
||||
fileChooser.extractPDF=PDF Çıkarılıyor...
|
||||
fileChooser.click=Click
|
||||
fileChooser.or=or
|
||||
fileChooser.dragAndDrop=Drag & Drop
|
||||
fileChooser.dragAndDropPDF=Drag & Drop PDF file
|
||||
fileChooser.dragAndDropImage=Drag & Drop Image file
|
||||
fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here
|
||||
fileChooser.extractPDF=Extracting...
|
||||
|
||||
#release notes
|
||||
releases.footer=Sürümler
|
||||
releases.title=Sürüm Notları
|
||||
releases.header=Sürüm Notları
|
||||
releases.current.version=Mevcut Sürüm
|
||||
releases.note=Sürüm notları yalnızca İngilizce dilinde mevcuttur
|
||||
releases.footer=Releases
|
||||
releases.title=Release Notes
|
||||
releases.header=Release Notes
|
||||
releases.current.version=Current Release
|
||||
releases.note=Release notes are only available in English
|
||||
|
||||
#Validate Signature
|
||||
validateSignature.title=PDF İmzalarını Doğrula
|
||||
validateSignature.header=Dijital İmzaları Doğrula
|
||||
validateSignature.selectPDF=İmzalanmış PDF dosyasını seçin
|
||||
validateSignature.submit=İmzaları Doğrula
|
||||
validateSignature.results=Doğrulama Sonuçları
|
||||
validateSignature.status=Durum
|
||||
validateSignature.signer=İmzalayan
|
||||
validateSignature.date=Tarih
|
||||
validateSignature.reason=Gerekçe
|
||||
validateSignature.location=Konum
|
||||
validateSignature.noSignatures=Bu belgede dijital imza bulunamadı
|
||||
validateSignature.status.valid=Geçerli
|
||||
validateSignature.status.invalid=Geçersiz
|
||||
validateSignature.chain.invalid=Sertifika zinciri doğrulaması başarısız - imzalayanın kimliği doğrulanamıyor
|
||||
validateSignature.trust.invalid=Sertifika güvenilir mağazada değil - kaynak doğrulanamıyor
|
||||
validateSignature.cert.expired=Sertifika süresi dolmuş
|
||||
validateSignature.cert.revoked=Sertifika iptal edilmiş
|
||||
validateSignature.signature.info=İmza Bilgisi
|
||||
validateSignature.signature=İmza
|
||||
validateSignature.signature.mathValid=İmza matematiksel olarak geçerli, ANCAK:
|
||||
validateSignature.selectCustomCert=Özel Sertifika Dosyası X.509 (İsteğe Bağlı)
|
||||
validateSignature.cert.info=Sertifika Detayları
|
||||
validateSignature.cert.issuer=Veren
|
||||
validateSignature.cert.subject=Konu
|
||||
validateSignature.cert.serialNumber=Seri Numarası
|
||||
validateSignature.cert.validFrom=Geçerlilik Başlangıcı
|
||||
validateSignature.cert.validUntil=Geçerlilik Bitişi
|
||||
validateSignature.cert.algorithm=Algoritma
|
||||
validateSignature.cert.keySize=Anahtar Boyutu
|
||||
validateSignature.cert.version=Sürüm
|
||||
validateSignature.cert.keyUsage=Anahtar Kullanımı
|
||||
validateSignature.cert.selfSigned=Kendi Kendine İmzalı
|
||||
validateSignature.title=Validate PDF Signatures
|
||||
validateSignature.header=Validate Digital Signatures
|
||||
validateSignature.selectPDF=Select signed PDF file
|
||||
validateSignature.submit=Validate Signatures
|
||||
validateSignature.results=Validation Results
|
||||
validateSignature.status=Status
|
||||
validateSignature.signer=Signer
|
||||
validateSignature.date=Date
|
||||
validateSignature.reason=Reason
|
||||
validateSignature.location=Location
|
||||
validateSignature.noSignatures=No digital signatures found in this document
|
||||
validateSignature.status.valid=Valid
|
||||
validateSignature.status.invalid=Invalid
|
||||
validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity
|
||||
validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified
|
||||
validateSignature.cert.expired=Certificate has expired
|
||||
validateSignature.cert.revoked=Certificate has been revoked
|
||||
validateSignature.signature.info=Signature Information
|
||||
validateSignature.signature=Signature
|
||||
validateSignature.signature.mathValid=Signature is mathematically valid BUT:
|
||||
validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional)
|
||||
validateSignature.cert.info=Certificate Details
|
||||
validateSignature.cert.issuer=Issuer
|
||||
validateSignature.cert.subject=Subject
|
||||
validateSignature.cert.serialNumber=Serial Number
|
||||
validateSignature.cert.validFrom=Valid From
|
||||
validateSignature.cert.validUntil=Valid Until
|
||||
validateSignature.cert.algorithm=Algorithm
|
||||
validateSignature.cert.keySize=Key Size
|
||||
validateSignature.cert.version=Version
|
||||
validateSignature.cert.keyUsage=Key Usage
|
||||
validateSignature.cert.selfSigned=Self-Signed
|
||||
validateSignature.cert.bits=bits
|
||||
|
||||
####################
|
||||
# Cookie banner #
|
||||
####################
|
||||
cookieBanner.popUp.title=Çerezleri Nasıl Kullanıyoruz
|
||||
cookieBanner.popUp.description.1=Stirling PDF’yi sizin için daha iyi çalıştırmak için çerezler ve diğer teknolojileri kullanıyoruz — araçlarımızı geliştirmemize ve seveceğiniz özellikler oluşturmamıza yardımcı oluyorlar.
|
||||
cookieBanner.popUp.description.2=İstemiyorsanız, ‘Hayır Teşekkürler’ butonuna tıklayarak yalnızca temel, gerekli çerezleri etkinleştirebilirsiniz.
|
||||
cookieBanner.popUp.acceptAllBtn=Tamam
|
||||
cookieBanner.popUp.acceptNecessaryBtn=Hayır Teşekkürler
|
||||
cookieBanner.popUp.showPreferencesBtn=Tercihleri Yönet
|
||||
cookieBanner.preferencesModal.title=Onay Tercih Merkezi
|
||||
cookieBanner.preferencesModal.acceptAllBtn=Tümünü Kabul Et
|
||||
cookieBanner.preferencesModal.acceptNecessaryBtn=Tümünü Reddet
|
||||
cookieBanner.preferencesModal.savePreferencesBtn=Tercihleri Kaydet
|
||||
cookieBanner.preferencesModal.closeIconLabel=Kapat
|
||||
cookieBanner.preferencesModal.serviceCounterLabel=Hizmet|Hizmetler
|
||||
cookieBanner.preferencesModal.subtitle=Çerez Kullanımı
|
||||
cookieBanner.preferencesModal.description.1=Stirling PDF, deneyiminizi geliştirmek ve araçlarımızın nasıl kullanıldığını anlamak için çerezler ve benzeri teknolojiler kullanır. Bu, performansı iyileştirmemize, önemsediğiniz özellikleri geliştirmemize ve kullanıcılarımıza sürekli destek sağlamamıza yardımcı olur.
|
||||
cookieBanner.preferencesModal.description.2=Stirling PDF, kullandığınız belgelerin içeriğini asla takip edemez veya erişemez.
|
||||
cookieBanner.preferencesModal.description.3=Gizliliğiniz ve güveniniz bizim için en önemli şeydir.
|
||||
cookieBanner.preferencesModal.necessary.title.1=Kesinlikle Gerekli Çerezler
|
||||
cookieBanner.preferencesModal.necessary.title.2=Her Zaman Etkin
|
||||
cookieBanner.preferencesModal.necessary.description=Bu çerezler, web sitesinin düzgün çalışabilmesi için gereklidir. Gizlilik tercihlerinizi ayarlama, giriş yapma ve form doldurma gibi temel işlevleri mümkün kılarlar — bu nedenle devre dışı bırakılamazlar.
|
||||
cookieBanner.preferencesModal.analytics.title=Analitik
|
||||
cookieBanner.preferencesModal.analytics.description=Bu çerezler, araçlarımızın nasıl kullanıldığını anlamamıza yardımcı olur, böylece topluluğumuzun en çok değer verdiği özellikleri geliştirmeye odaklanabiliriz. İçiniz rahat olsun — Stirling PDF, belgelerinizin içeriğini asla takip etmez ve etmeyecektir.
|
||||
cookieBanner.popUp.title=How we use Cookies
|
||||
cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love.
|
||||
cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly.
|
||||
cookieBanner.popUp.acceptAllBtn=Okay
|
||||
cookieBanner.popUp.acceptNecessaryBtn=No Thanks
|
||||
cookieBanner.popUp.showPreferencesBtn=Manage preferences
|
||||
cookieBanner.preferencesModal.title=Consent Preferences Center
|
||||
cookieBanner.preferencesModal.acceptAllBtn=Accept all
|
||||
cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all
|
||||
cookieBanner.preferencesModal.savePreferencesBtn=Save preferences
|
||||
cookieBanner.preferencesModal.closeIconLabel=Close modal
|
||||
cookieBanner.preferencesModal.serviceCounterLabel=Service|Services
|
||||
cookieBanner.preferencesModal.subtitle=Cookie Usage
|
||||
cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users.
|
||||
cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use.
|
||||
cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do.
|
||||
cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies
|
||||
cookieBanner.preferencesModal.necessary.title.2=Always Enabled
|
||||
cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off.
|
||||
cookieBanner.preferencesModal.analytics.title=Analytics
|
||||
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.
|
||||
|
||||
|
@ -10,9 +10,9 @@ multiPdfPrompt=選擇多個 PDF 檔案
|
||||
multiPdfDropPrompt=選擇(或拖放)所有需要的 PDF 檔案
|
||||
imgPrompt=選擇圖片
|
||||
genericSubmit=送出
|
||||
uploadLimit=檔案大小上限:
|
||||
uploadLimitExceededSingular=太大。允許的最大檔案大小為
|
||||
uploadLimitExceededPlural=太大。允許的最大檔案大小為
|
||||
uploadLimit=Maximum file size:
|
||||
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||
processTimeWarning=警告:此過程可能長達一分鐘,具體取決於檔案大小
|
||||
pageOrderPrompt=自訂頁面順序(輸入以逗號分隔的頁碼或函式,如 2n+1):
|
||||
pageSelectionPrompt=自訂頁面選擇(輸入以逗號分隔的頁碼 1、5、6 或 2n+1 等函式的清單):
|
||||
@ -237,30 +237,30 @@ adminUserSettings.activeUsers=使用中的使用者:
|
||||
adminUserSettings.disabledUsers=已停用的使用者:
|
||||
adminUserSettings.totalUsers=使用者總數:
|
||||
adminUserSettings.lastRequest=最後請求時間
|
||||
adminUserSettings.usage=檢視使用情況
|
||||
adminUserSettings.usage=查看使用方式
|
||||
|
||||
endpointStatistics.title=端點統計
|
||||
endpointStatistics.header=端點統計
|
||||
endpointStatistics.top10=前 10 名
|
||||
endpointStatistics.top20=前 20 名
|
||||
endpointStatistics.all=全部
|
||||
endpointStatistics.refresh=重新整理
|
||||
endpointStatistics.includeHomepage=包含首頁 ('/')
|
||||
endpointStatistics.title=端點統計資料
|
||||
endpointStatistics.header=端點統計資料
|
||||
endpointStatistics.top10=前 10
|
||||
endpointStatistics.top20=前 20
|
||||
endpointStatistics.all=選擇全部
|
||||
endpointStatistics.refresh=重新載入
|
||||
endpointStatistics.includeHomepage=包含主頁 ('/')
|
||||
endpointStatistics.includeLoginPage=包含登入頁面 ('/login')
|
||||
endpointStatistics.totalEndpoints=端點總數
|
||||
endpointStatistics.totalVisits=總造訪次數
|
||||
endpointStatistics.totalEndpoints=全部端點
|
||||
endpointStatistics.totalVisits=總瀏覽次數
|
||||
endpointStatistics.showing=顯示中
|
||||
endpointStatistics.selectedVisits=選取的造訪次數
|
||||
endpointStatistics.selectedVisits=所選瀏覽次數
|
||||
endpointStatistics.endpoint=端點
|
||||
endpointStatistics.visits=造訪次數
|
||||
endpointStatistics.visits=訪問次數
|
||||
endpointStatistics.percentage=百分比
|
||||
endpointStatistics.loading=載入中...
|
||||
endpointStatistics.failedToLoad=無法載入端點資料。請嘗試重新整理。
|
||||
endpointStatistics.home=首頁
|
||||
endpointStatistics.failedToLoad=無法載入端點。請嘗試重新載入。
|
||||
endpointStatistics.home=主頁
|
||||
endpointStatistics.login=登入
|
||||
endpointStatistics.top=前
|
||||
endpointStatistics.numberOfVisits=造訪次數
|
||||
endpointStatistics.visitsTooltip=造訪次數:{0}(總數的 {1}%)
|
||||
endpointStatistics.top=最多瀏覽
|
||||
endpointStatistics.numberOfVisits=瀏覽次數
|
||||
endpointStatistics.visitsTooltip=瀏覽次數: {0} ({1}% of total)
|
||||
endpointStatistics.retry=重試
|
||||
|
||||
database.title=資料庫匯入/匯出
|
||||
@ -891,7 +891,7 @@ sign.last=最後一頁
|
||||
sign.next=下一頁
|
||||
sign.previous=上一頁
|
||||
sign.maintainRatio=切換維持長寬比
|
||||
sign.undo=撤銷
|
||||
sign.undo=撤销
|
||||
sign.redo=重做
|
||||
|
||||
#repair
|
||||
@ -1319,7 +1319,7 @@ survey.meeting.4=針對效能、特殊案例和缺少的功能提供直接意見
|
||||
survey.meeting.5=協助我們改良 Stirling PDF 以符合實際企業使用需求
|
||||
survey.meeting.6=如果您有興趣,可以直接預約時間與我們的團隊交流。(僅提供英語服務)
|
||||
survey.meeting.7=期待深入了解您的使用情境,讓 Stirling PDF 變得更好!
|
||||
survey.meeting.notInterested=不是企業使用者或對會議不感興趣?
|
||||
survey.meeting.notInterested=不是企業用戶或對會議不感興趣?
|
||||
survey.meeting.button=預約會議
|
||||
|
||||
#error
|
||||
@ -1418,11 +1418,11 @@ cookieBanner.preferencesModal.title=喜好設定中心
|
||||
cookieBanner.preferencesModal.acceptAllBtn=全部接受
|
||||
cookieBanner.preferencesModal.acceptNecessaryBtn=全部拒絕
|
||||
cookieBanner.preferencesModal.savePreferencesBtn=儲存設定
|
||||
cookieBanner.preferencesModal.closeIconLabel=關閉視窗
|
||||
cookieBanner.preferencesModal.closeIconLabel=Close modal
|
||||
cookieBanner.preferencesModal.serviceCounterLabel=服務|服務
|
||||
cookieBanner.preferencesModal.subtitle=Cookies 的用途
|
||||
cookieBanner.preferencesModal.description.1=Stirling PDF 使用 Cookies 與其他相似技術去改善您的體驗和分析您如何使用我們的工具。這有助於我們改善效能、開發您注目的功能,和提供使用者協助。
|
||||
cookieBanner.preferencesModal.description.2=Stirling PDF 不能——且永遠不會——追蹤或存取您的文件。
|
||||
cookieBanner.preferencesModal.description.2=Stirling PDF 不會——且永遠——追蹤或存取您的文件。
|
||||
cookieBanner.preferencesModal.description.3=您的隱私和信任是我們的核心理念。
|
||||
cookieBanner.preferencesModal.necessary.title.1=必要的 Cookies
|
||||
cookieBanner.preferencesModal.necessary.title.2=永遠開啟
|
||||
|
@ -544,17 +544,21 @@ const DraggableUtils = {
|
||||
angle: rotateAngle, // Store rotation
|
||||
};
|
||||
|
||||
const pageRotation = page.getRotation();
|
||||
// Auxiliary variables
|
||||
let widthAdjusted = page.getWidth();
|
||||
let heightAdjusted = page.getHeight();
|
||||
const rotation = page.getRotation();
|
||||
|
||||
// Normalize page rotation angle
|
||||
let normalizedAngle = pageRotation.angle % 360;
|
||||
let normalizedAngle = rotation.angle % 360;
|
||||
if (normalizedAngle < 0) {
|
||||
normalizedAngle += 360;
|
||||
}
|
||||
|
||||
// Determine the viewed page dimensions based on the normalized rotation angle
|
||||
let viewedPageWidth = (normalizedAngle === 90 || normalizedAngle === 270) ? page.getHeight() : page.getWidth();
|
||||
let viewedPageHeight = (normalizedAngle === 90 || normalizedAngle === 270) ? page.getWidth() : page.getHeight();
|
||||
// Adjust page dimensions for rotated pages
|
||||
if (normalizedAngle === 90 || normalizedAngle === 270) {
|
||||
[widthAdjusted, heightAdjusted] = [heightAdjusted, widthAdjusted];
|
||||
}
|
||||
|
||||
const draggablePositionRelative = {
|
||||
x: draggablePositionPixels.x / offsetWidth,
|
||||
@ -565,58 +569,51 @@ const DraggableUtils = {
|
||||
};
|
||||
|
||||
const draggablePositionPdf = {
|
||||
x: draggablePositionRelative.x * viewedPageWidth,
|
||||
y: draggablePositionRelative.y * viewedPageHeight,
|
||||
width: draggablePositionRelative.width * viewedPageWidth,
|
||||
height: draggablePositionRelative.height * viewedPageHeight,
|
||||
x: draggablePositionRelative.x * widthAdjusted,
|
||||
y: draggablePositionRelative.y * heightAdjusted,
|
||||
width: draggablePositionRelative.width * widthAdjusted,
|
||||
height: draggablePositionRelative.height * heightAdjusted,
|
||||
};
|
||||
|
||||
// Calculate position based on normalized page rotation
|
||||
let x = draggablePositionPdf.x;
|
||||
let y = viewedPageHeight - draggablePositionPdf.y - draggablePositionPdf.height;
|
||||
let y = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height;
|
||||
|
||||
let originx = x + draggablePositionPdf.width / 2;
|
||||
let originy = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height / 2;
|
||||
|
||||
if (normalizedAngle === 90) {
|
||||
x = draggablePositionPdf.y;
|
||||
x = draggablePositionPdf.y + draggablePositionPdf.height;
|
||||
y = draggablePositionPdf.x;
|
||||
} else if (normalizedAngle === 180) {
|
||||
x = viewedPageWidth - draggablePositionPdf.x - draggablePositionPdf.width;
|
||||
y = draggablePositionPdf.y;
|
||||
x = widthAdjusted - draggablePositionPdf.x;
|
||||
y = draggablePositionPdf.y + draggablePositionPdf.height;
|
||||
} else if (normalizedAngle === 270) {
|
||||
x = viewedPageHeight - draggablePositionPdf.y - draggablePositionPdf.height;
|
||||
y = viewedPageWidth - draggablePositionPdf.x - draggablePositionPdf.width;
|
||||
x = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height;
|
||||
y = widthAdjusted - draggablePositionPdf.x;
|
||||
}
|
||||
|
||||
// Convert rotation angle to radians
|
||||
let pageRotationInRadians = PDFLib.degreesToRadians(normalizedAngle);
|
||||
const rotationInRadians = pageRotationInRadians - draggablePositionPixels.angle;
|
||||
|
||||
// Calculate the center of the image
|
||||
const imageCenterX = x + draggablePositionPdf.width / 2;
|
||||
const imageCenterY = y + draggablePositionPdf.height / 2;
|
||||
|
||||
// Apply transformations to rotate the image about its center
|
||||
// let angle = draggablePositionPixels.angle % 360;
|
||||
// if (angle < 0) angle += 360; // Normalize to positive angle
|
||||
const radians = -draggablePositionPixels.angle; // Convert angle to radians
|
||||
page.pushOperators(
|
||||
PDFLib.pushGraphicsState(),
|
||||
PDFLib.concatTransformationMatrix(1, 0, 0, 1, imageCenterX, imageCenterY), // Translate to center
|
||||
PDFLib.concatTransformationMatrix(1, 0, 0, 1, originx, originy),
|
||||
PDFLib.concatTransformationMatrix(
|
||||
Math.cos(rotationInRadians),
|
||||
Math.sin(rotationInRadians),
|
||||
-Math.sin(rotationInRadians),
|
||||
Math.cos(rotationInRadians),
|
||||
Math.cos(radians),
|
||||
Math.sin(radians),
|
||||
-Math.sin(radians),
|
||||
Math.cos(radians),
|
||||
0,
|
||||
0
|
||||
), // Rotate
|
||||
PDFLib.concatTransformationMatrix(1, 0, 0, 1, -imageCenterX, -imageCenterY) // Translate back
|
||||
),
|
||||
PDFLib.concatTransformationMatrix(1, 0, 0, 1, -1 * originx, -1 * originy)
|
||||
);
|
||||
|
||||
page.drawImage(pdfImageObject, {
|
||||
x: x,
|
||||
y: y,
|
||||
width: draggablePositionPdf.width,
|
||||
height: draggablePositionPdf.height,
|
||||
});
|
||||
|
||||
// Restore the graphics state
|
||||
page.pushOperators(PDFLib.popGraphicsState());
|
||||
}
|
||||
}
|
||||
|
@ -170,7 +170,7 @@ function setupFileInput(chooser) {
|
||||
inputContainer.querySelector('#fileInputText').innerHTML = window.fileInput.loading;
|
||||
|
||||
async function checkZipFile() {
|
||||
const hasZipFiles = allFiles.some(file => ((typeof(file.type) != undefined) && zipTypes.includes(file.type)));
|
||||
const hasZipFiles = allFiles.some(file => file.type && zipTypes.includes(file.type));
|
||||
|
||||
// Only change to extractPDF message if we actually have zip files
|
||||
if (hasZipFiles) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user