refactor: move PageWatermarkConfig interface to dedicated types file
feat(i18n): add missing translations for 5 languages - be: common.close, upload.clearFiles - zh: addStamps username fields - zh-TW, tr, pt: compressPdf compression settings
This commit is contained in:
@@ -67,6 +67,7 @@
|
|||||||
"filesNeverLeave": "Вашы файлы ніколі не пакідаюць прыладу.",
|
"filesNeverLeave": "Вашы файлы ніколі не пакідаюць прыладу.",
|
||||||
"addMore": "Дадаць больш файлаў",
|
"addMore": "Дадаць больш файлаў",
|
||||||
"clearAll": "Ачысціць усё",
|
"clearAll": "Ачысціць усё",
|
||||||
|
"clearFiles": "Ачысціць файлы",
|
||||||
"hints": {
|
"hints": {
|
||||||
"singlePdf": "Адзін файл PDF",
|
"singlePdf": "Адзін файл PDF",
|
||||||
"pdfFile": "Файл PDF",
|
"pdfFile": "Файл PDF",
|
||||||
@@ -253,7 +254,8 @@
|
|||||||
"error": "Памылка",
|
"error": "Памылка",
|
||||||
"success": "Поспех",
|
"success": "Поспех",
|
||||||
"file": "Файл",
|
"file": "Файл",
|
||||||
"files": "Файлы"
|
"files": "Файлы",
|
||||||
|
"close": "Зачыніць"
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"hero": {
|
"hero": {
|
||||||
|
|||||||
@@ -22,7 +22,29 @@
|
|||||||
},
|
},
|
||||||
"compressPdf": {
|
"compressPdf": {
|
||||||
"name": "Comprimir PDF",
|
"name": "Comprimir PDF",
|
||||||
"subtitle": "Reduza o tamanho do arquivo do seu PDF."
|
"subtitle": "Reduza o tamanho do arquivo do seu PDF.",
|
||||||
|
"algorithmLabel": "Algoritmo de Compressão",
|
||||||
|
"condense": "Condense (Recomendado)",
|
||||||
|
"photon": "Photon (Para PDFs com Muitas Fotos)",
|
||||||
|
"condenseInfo": "Condense usa compressão avançada: remove dados desnecessários, otimiza imagens, subconjunta fontes. Ideal para a maioria dos PDFs.",
|
||||||
|
"photonInfo": "Photon converte páginas em imagens. Use para PDFs com muitas fotos/digitalizados.",
|
||||||
|
"photonWarning": "Aviso: O texto ficará não selecionável e os links deixarão de funcionar.",
|
||||||
|
"levelLabel": "Nível de Compressão",
|
||||||
|
"light": "Leve (Preservar Qualidade)",
|
||||||
|
"balanced": "Equilibrado (Recomendado)",
|
||||||
|
"aggressive": "Agressivo (Arquivos Menores)",
|
||||||
|
"extreme": "Extremo (Compressão Máxima)",
|
||||||
|
"grayscale": "Converter para Escala de Cinza",
|
||||||
|
"grayscaleHint": "Reduz o tamanho do arquivo removendo informações de cor",
|
||||||
|
"customSettings": "Configurações Personalizadas",
|
||||||
|
"customSettingsHint": "Ajuste fino dos parâmetros de compressão:",
|
||||||
|
"outputQuality": "Qualidade de Saída",
|
||||||
|
"resizeImagesTo": "Redimensionar Imagens Para",
|
||||||
|
"onlyProcessAbove": "Processar Apenas Acima de",
|
||||||
|
"removeMetadata": "Remover metadados",
|
||||||
|
"subsetFonts": "Subconjunto de fontes (remover glifos não utilizados)",
|
||||||
|
"removeThumbnails": "Remover miniaturas incorporadas",
|
||||||
|
"compressButton": "Comprimir PDF"
|
||||||
},
|
},
|
||||||
"pdfEditor": {
|
"pdfEditor": {
|
||||||
"name": "Editor de PDF",
|
"name": "Editor de PDF",
|
||||||
|
|||||||
@@ -22,7 +22,29 @@
|
|||||||
},
|
},
|
||||||
"compressPdf": {
|
"compressPdf": {
|
||||||
"name": "PDF Sıkıştır",
|
"name": "PDF Sıkıştır",
|
||||||
"subtitle": "PDF dosya boyutunu küçültün."
|
"subtitle": "PDF dosya boyutunu küçültün.",
|
||||||
|
"algorithmLabel": "Sıkıştırma Algoritması",
|
||||||
|
"condense": "Condense (Önerilen)",
|
||||||
|
"photon": "Photon (Fotoğraf Ağırlıklı PDF'ler İçin)",
|
||||||
|
"condenseInfo": "Condense gelişmiş sıkıştırma kullanır: gereksiz verileri kaldırır, görselleri optimize eder, fontları küçültür. Çoğu PDF için idealdir.",
|
||||||
|
"photonInfo": "Photon sayfaları görsellere dönüştürür. Fotoğraf ağırlıklı/taranmış PDF'ler için kullanın.",
|
||||||
|
"photonWarning": "Uyarı: Metin seçilemez hale gelecek ve bağlantılar çalışmayacak.",
|
||||||
|
"levelLabel": "Sıkıştırma Seviyesi",
|
||||||
|
"light": "Hafif (Kaliteyi Koru)",
|
||||||
|
"balanced": "Dengeli (Önerilen)",
|
||||||
|
"aggressive": "Agresif (Daha Küçük Dosyalar)",
|
||||||
|
"extreme": "Aşırı (Maksimum Sıkıştırma)",
|
||||||
|
"grayscale": "Gri Tonlamaya Dönüştür",
|
||||||
|
"grayscaleHint": "Renk bilgisini kaldırarak dosya boyutunu küçültür",
|
||||||
|
"customSettings": "Özel Ayarlar",
|
||||||
|
"customSettingsHint": "Sıkıştırma parametrelerini ince ayarlayın:",
|
||||||
|
"outputQuality": "Çıktı Kalitesi",
|
||||||
|
"resizeImagesTo": "Görselleri Şu Boyuta Dönüştür",
|
||||||
|
"onlyProcessAbove": "Yalnızca Şunun Üzerini İşle",
|
||||||
|
"removeMetadata": "Meta verileri kaldır",
|
||||||
|
"subsetFonts": "Font alt kümesi oluştur (kullanılmayan glifleri kaldır)",
|
||||||
|
"removeThumbnails": "Gömülü küçük resimleri kaldır",
|
||||||
|
"compressButton": "PDF'yi Sıkıştır"
|
||||||
},
|
},
|
||||||
"pdfEditor": {
|
"pdfEditor": {
|
||||||
"name": "PDF Düzenleyici",
|
"name": "PDF Düzenleyici",
|
||||||
|
|||||||
@@ -22,7 +22,29 @@
|
|||||||
},
|
},
|
||||||
"compressPdf": {
|
"compressPdf": {
|
||||||
"name": "壓縮 PDF",
|
"name": "壓縮 PDF",
|
||||||
"subtitle": "降低你的 PDF 檔案大小。"
|
"subtitle": "降低你的 PDF 檔案大小。",
|
||||||
|
"algorithmLabel": "壓縮演算法",
|
||||||
|
"condense": "Condense(推薦)",
|
||||||
|
"photon": "Photon(適用於圖片較多的 PDF)",
|
||||||
|
"condenseInfo": "Condense 使用高級壓縮:移除冗餘資料、優化圖片、精簡字型。適用於大多數 PDF。",
|
||||||
|
"photonInfo": "Photon 將頁面轉換為圖片。適用於圖片較多/掃描的 PDF。",
|
||||||
|
"photonWarning": "警告:文字將無法選取,連結將失效。",
|
||||||
|
"levelLabel": "壓縮等級",
|
||||||
|
"light": "輕度(保持品質)",
|
||||||
|
"balanced": "平衡(推薦)",
|
||||||
|
"aggressive": "積極(更小檔案)",
|
||||||
|
"extreme": "極限(最大壓縮)",
|
||||||
|
"grayscale": "轉換為灰階",
|
||||||
|
"grayscaleHint": "透過移除色彩資訊來縮小檔案大小",
|
||||||
|
"customSettings": "自訂設定",
|
||||||
|
"customSettingsHint": "微調壓縮參數:",
|
||||||
|
"outputQuality": "輸出品質",
|
||||||
|
"resizeImagesTo": "調整圖片至",
|
||||||
|
"onlyProcessAbove": "僅處理高於",
|
||||||
|
"removeMetadata": "移除中繼資料",
|
||||||
|
"subsetFonts": "精簡字型(移除未使用的字符)",
|
||||||
|
"removeThumbnails": "移除嵌入的縮圖",
|
||||||
|
"compressButton": "壓縮 PDF"
|
||||||
},
|
},
|
||||||
"pdfEditor": {
|
"pdfEditor": {
|
||||||
"name": "PDF 編輯器",
|
"name": "PDF 編輯器",
|
||||||
|
|||||||
@@ -144,7 +144,10 @@
|
|||||||
},
|
},
|
||||||
"addStamps": {
|
"addStamps": {
|
||||||
"name": "添加印章",
|
"name": "添加印章",
|
||||||
"subtitle": "使用注释工具栏向您的 PDF 添加图片印章。"
|
"subtitle": "使用注释工具栏向您的 PDF 添加图片印章。",
|
||||||
|
"usernameLabel": "印章用户名",
|
||||||
|
"usernamePlaceholder": "输入您的姓名(用于印章)",
|
||||||
|
"usernameHint": "此名称将显示在您创建的印章上。"
|
||||||
},
|
},
|
||||||
"removeAnnotations": {
|
"removeAnnotations": {
|
||||||
"name": "移除注释",
|
"name": "移除注释",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
addImageWatermark,
|
addImageWatermark,
|
||||||
parsePageRange,
|
parsePageRange,
|
||||||
} from '../utils/pdf-operations.js';
|
} from '../utils/pdf-operations.js';
|
||||||
import { AddWatermarkState } from '@/types';
|
import { AddWatermarkState, PageWatermarkConfig } from '@/types';
|
||||||
import * as pdfjsLib from 'pdfjs-dist';
|
import * as pdfjsLib from 'pdfjs-dist';
|
||||||
|
|
||||||
pdfjsLib.GlobalWorkerOptions.workerSrc = new URL(
|
pdfjsLib.GlobalWorkerOptions.workerSrc = new URL(
|
||||||
@@ -20,22 +20,6 @@ pdfjsLib.GlobalWorkerOptions.workerSrc = new URL(
|
|||||||
import.meta.url
|
import.meta.url
|
||||||
).toString();
|
).toString();
|
||||||
|
|
||||||
interface PageWatermarkConfig {
|
|
||||||
type: 'text' | 'image';
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
text: string;
|
|
||||||
fontSize: number;
|
|
||||||
color: string;
|
|
||||||
opacityText: number;
|
|
||||||
angleText: number;
|
|
||||||
imageDataUrl: string | null;
|
|
||||||
imageFile: File | null;
|
|
||||||
imageScale: number;
|
|
||||||
opacityImage: number;
|
|
||||||
angleImage: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
const pageState: AddWatermarkState = {
|
const pageState: AddWatermarkState = {
|
||||||
file: null,
|
file: null,
|
||||||
pdfDoc: null,
|
pdfDoc: null,
|
||||||
|
|||||||
@@ -8,3 +8,19 @@ export interface AddWatermarkState {
|
|||||||
watermarkX: number; // 0–1, percentage from left
|
watermarkX: number; // 0–1, percentage from left
|
||||||
watermarkY: number; // 0–1, percentage from top (flipped to bottom for PDF)
|
watermarkY: number; // 0–1, percentage from top (flipped to bottom for PDF)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface PageWatermarkConfig {
|
||||||
|
type: 'text' | 'image';
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
text: string;
|
||||||
|
fontSize: number;
|
||||||
|
color: string;
|
||||||
|
opacityText: number;
|
||||||
|
angleText: number;
|
||||||
|
imageDataUrl: string | null;
|
||||||
|
imageFile: File | null;
|
||||||
|
imageScale: number;
|
||||||
|
opacityImage: number;
|
||||||
|
angleImage: number;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user