From cef8ca8cf7e48ca3c8ed68ebf5e7ec6ad15decfc Mon Sep 17 00:00:00 2001 From: Jeffrey Chen <78434827+TCOTC@users.noreply.github.com> Date: Fri, 26 Dec 2025 10:54:17 +0800 Subject: [PATCH] :art: Desktop export PDF supports no pagination https://ld246.com/article/1764933918963 (#16537) --- app/appearance/langs/ar_SA.json | 1 + app/appearance/langs/de_DE.json | 3 +- app/appearance/langs/en_US.json | 1 + app/appearance/langs/es_ES.json | 1 + app/appearance/langs/fr_FR.json | 1 + app/appearance/langs/he_IL.json | 3 +- app/appearance/langs/it_IT.json | 3 +- app/appearance/langs/ja_JP.json | 1 + app/appearance/langs/ko_KR.json | 1 + app/appearance/langs/pl_PL.json | 3 +- app/appearance/langs/pt_BR.json | 3 +- app/appearance/langs/ru_RU.json | 3 +- app/appearance/langs/tr_TR.json | 1 + app/appearance/langs/zh_CHT.json | 1 + app/appearance/langs/zh_CN.json | 1 + app/src/boot/onGetConfig.ts | 8 +- app/src/protyle/export/index.ts | 114 ++++++++++++++++++++------ app/src/protyle/util/compatibility.ts | 3 +- 18 files changed, 117 insertions(+), 35 deletions(-) diff --git a/app/appearance/langs/ar_SA.json b/app/appearance/langs/ar_SA.json index 7caf21fff..fabc8ddff 100644 --- a/app/appearance/langs/ar_SA.json +++ b/app/appearance/langs/ar_SA.json @@ -740,6 +740,7 @@ "exportPDF3": "مقياس الصفحة", "exportPDF4": "تضمين الأصول", "exportPDF5": "البقاء مطوية", + "paged": "ترقيم الصفحات", "mergeSubdocs": "إبقاء مطوياً", "removeAssetsFolder": "إزالة دليل الأصول", "upload": "رفع", diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index cdca4d31d..aadbed1dd 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -740,6 +740,7 @@ "exportPDF3": "Seitenmaßstab", "exportPDF4": "Assets einbetten", "exportPDF5": "Aufgeklappt beibehalten", + "paged": "Seitenumbruch", "mergeSubdocs": "Unterdokumente zusammenführen", "removeAssetsFolder": "Assets-Verzeichnis entfernen", "upload": "Hochladen", @@ -1459,7 +1460,7 @@ "22": "Das Captcha ist falsch", "23": "Das Daten-Repository ist beschädigt, bitte setzen Sie das Daten-Repository zurück", "24": "Netzwerkzeitüberschreitung, bitte versuchen Sie es später erneut", - "25": "Der Attributname darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten und muss mit einem Kleinbuchstaben beginnen", + "25": "Der Attributname unterstützt nur englische Buchstaben und Ziffern", "26": "Bitte initialisieren Sie zuerst den Schlüssel des Daten-Repositorys in [Einstellungen - Über - Schlüssel des Daten-Repositorys]", "27": "Hochladen [%v]", "28": "Das Netzwerk ist abnormal, bitte versuchen Sie es später erneut", diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 0d892f51b..8655586be 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -740,6 +740,7 @@ "exportPDF3": "Page Scale", "exportPDF4": "Embed assets", "exportPDF5": "Keep folded", + "paged": "Paged", "mergeSubdocs": "Merge subdocuments", "removeAssetsFolder": "Remove assets directory", "upload": "Upload", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 54b308a4a..1112de355 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -740,6 +740,7 @@ "exportPDF3": "Escala de la página", "exportPDF4": "Activos incrustados", "exportPDF5": "Mantener doblado", + "paged": "Paginado", "mergeSubdocs": "Fusionar subdocumentos", "removeAssetsFolder": "Eliminar directorio de activos", "upload": "Subir", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index baf1bfe9e..17aa43fee 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -740,6 +740,7 @@ "exportPDF3": "Échelle de page", "exportPDF4": "Incorporer des ressources", "exportPDF5": "Garder plié", + "paged": "Pagination", "mergeSubdocs": "Fusionner les sous-documents", "removeAssetsFolder": "Supprimer le répertoire des actifs", "upload": "Télécharger", diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index 90d4add8e..a41ce10b3 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -740,6 +740,7 @@ "exportPDF3": "קנה מידה של עמוד", "exportPDF4": "הכנס נכסים", "exportPDF5": "שמור מקופל", + "paged": "עמודים", "mergeSubdocs": "מזג תתי-מסמכים", "removeAssetsFolder": "הסר תיקיית נכסים", "upload": "העלה", @@ -1459,7 +1460,7 @@ "22": "ה-captcha לא נכון", "23": "מאגר הנתונים פגום, אנא אפס את מאגר הנתונים", "24": "החיבור לרשת פג, אנא נסה שוב מאוחר יותר", - "25": "שם המאפיין יכול להכיל רק אותיות אנגליות קטנות, ספרות ומקפים, ויש להתחיל באות אנגלית קטנה", + "25": "שם המאפיין תומך רק באותיות אנגליות ובתווים", "26": "אנא אתחל קודם את מפתח מאגר הנתונים ב[הגדרות - אודות - מפתח מאגר הנתונים]", "27": "מעלה [%v]", "28": "חיבור לרשת בלתי תקין, אנא נסה שוב מאוחר יותר", diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index 7df06fc36..c1a039a65 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -740,6 +740,7 @@ "exportPDF3": "Scala pagina", "exportPDF4": "Incorpora asset", "exportPDF5": "Mantieni piegato", + "paged": "Paginazione", "mergeSubdocs": "Unisci sotto-documenti", "removeAssetsFolder": "Rimuovi directory asset", "upload": "Carica", @@ -1459,7 +1460,7 @@ "22": "Il captcha è errato", "23": "Il repository dei dati è corrotto, per favore ripristina il repository dei dati", "24": "La rete ha impiegato troppo tempo, riprova più tardi", - "25": "Il nome dell'attributo può contenere solo lettere minuscole, numeri e trattini e deve iniziare con una lettera minuscola", + "25": "Il nome dell'attributo supporta solo lettere e numeri", "26": "Si prega di inizializzare prima la chiave del repository dati in [Impostazioni - Informazioni - Chiave del repository dati]", "27": "Caricamento [%v]", "28": "La rete è anormale, riprova più tardi", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index 7a9b1bd66..bd0ebd964 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -740,6 +740,7 @@ "exportPDF3": "ページスケール", "exportPDF4": "アセットの埋め込み", "exportPDF5": "折りたたみを保持", + "paged": "ページ分割", "mergeSubdocs": "サブドキュメントをマージ", "removeAssetsFolder": "アセットディレクトリを削除", "upload": "アップロード", diff --git a/app/appearance/langs/ko_KR.json b/app/appearance/langs/ko_KR.json index a3c55cc2d..a2bd832bc 100644 --- a/app/appearance/langs/ko_KR.json +++ b/app/appearance/langs/ko_KR.json @@ -740,6 +740,7 @@ "exportPDF3": "페이지 비율", "exportPDF4": "에셋 임베드", "exportPDF5": "접힌 상태 유지", + "paged": "페이지 분할", "mergeSubdocs": "하위 문서 병합", "removeAssetsFolder": "assets 디렉토리 제거", "upload": "업로드", diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index c12a7278e..a96ffbf4c 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -740,6 +740,7 @@ "exportPDF3": "Skala strony", "exportPDF4": "Osadź zasoby", "exportPDF5": "Zachowaj złożone", + "paged": "Stronicowanie", "mergeSubdocs": "Scal poddokumenty", "removeAssetsFolder": "Usuń katalog zasobów", "upload": "Prześlij", @@ -1459,7 +1460,7 @@ "22": "Captcha jest nieprawidłowa", "23": "Repozytorium danych jest uszkodzone, proszę zresetować repozytorium danych", "24": "Czas oczekiwania w sieci, proszę spróbować ponownie później", - "25": "Nazwa atrybutu może zawierać tylko małe litery angielskie, cyfry i myślniki i musi zaczynać się od małej litery angielskiej", + "25": "Nazwa atrybutu obsługuje tylko litery angielskie i cyfry", "26": "Proszę najpierw zainicjować klucz repozytorium danych w [Ustawienia - O - Klucz repozytorium danych]", "27": "Przesyłanie [%v]", "28": "Sieć jest nieprawidłowa, proszę spróbować ponownie później", diff --git a/app/appearance/langs/pt_BR.json b/app/appearance/langs/pt_BR.json index df46423ac..16b1f31b0 100644 --- a/app/appearance/langs/pt_BR.json +++ b/app/appearance/langs/pt_BR.json @@ -740,6 +740,7 @@ "exportPDF3": "Escala da página", "exportPDF4": "Incorporar ativos", "exportPDF5": "Manter dobrado", + "paged": "Paginação", "mergeSubdocs": "Mesclar subdocumentos", "removeAssetsFolder": "Remover diretório de ativos", "upload": "Enviar", @@ -1459,7 +1460,7 @@ "22": "O captcha está incorreto", "23": "O repositório de dados está corrompido, por favor redefina o repositório de dados", "24": "Tempo limite da rede, por favor tente novamente mais tarde", - "25": "O nome do atributo pode conter apenas letras minúsculas, dígitos e hífens e deve começar com uma letra minúscula", + "25": "O nome do atributo só suporta letras inglesas e dígitos", "26": "Por favor, inicialize a chave do repositório de dados primeiro em [Configurações - Sobre - Chave do repositório de dados]", "27": "Enviando [%v]", "28": "A rede está anormal, por favor tente novamente mais tarde", diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index 88bf2dc0d..15558e1fc 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -740,6 +740,7 @@ "exportPDF3": "Масштаб страницы", "exportPDF4": "Встраивать ресурсы", "exportPDF5": "Сохранить сложенные", + "paged": "Разбивка на страницы", "mergeSubdocs": "Объединить поддокументы", "removeAssetsFolder": "Удалить директорию ресурсов", "upload": "Загрузить", @@ -1459,7 +1460,7 @@ "22": "Капча неверна", "23": "Репозиторий данных поврежден, пожалуйста, сбросьте репозиторий данных", "24": "Таймаут сети, пожалуйста, попробуйте позже", - "25": "Имя атрибута может содержать только строчные английские буквы, цифры и дефисы и должно начинаться со строчной английской буквы", + "25": "Имя атрибута поддерживает только английские буквы и цифры", "26": "Пожалуйста, сначала инициализируйте ключ репозитория данных в [Настройки - О программе - Ключ репозитория данных]", "27": "Загрузка [%v]", "28": "Сеть аномальная, пожалуйста, попробуйте позже", diff --git a/app/appearance/langs/tr_TR.json b/app/appearance/langs/tr_TR.json index 562a878c4..c30861a6f 100644 --- a/app/appearance/langs/tr_TR.json +++ b/app/appearance/langs/tr_TR.json @@ -740,6 +740,7 @@ "exportPDF3": "Sayfa ölçeği", "exportPDF4": "Varlıkları göm", "exportPDF5": "Daraltılmış alanları koru", + "paged": "Sayfalandırılmış", "mergeSubdocs": "Alt belgeleri birleştir", "removeAssetsFolder": "Varlıklar klasörünü kaldır", "upload": "Yükle", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 844d44bf0..55ad9679d 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -740,6 +740,7 @@ "exportPDF3": "頁面縮放", "exportPDF4": "嵌入資源文件", "exportPDF5": "保持折疊狀態", + "paged": "分頁", "mergeSubdocs": "合併子文檔", "removeAssetsFolder": "移除 assets 目錄", "upload": "上傳", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index ec0c950d5..ae9cc81ee 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -740,6 +740,7 @@ "exportPDF3": "页面缩放", "exportPDF4": "嵌入资源文件", "exportPDF5": "保持折叠状态", + "paged": "分页", "mergeSubdocs": "合并子文档", "removeAssetsFolder": "移除 assets 目录", "upload": "上传", diff --git a/app/src/boot/onGetConfig.ts b/app/src/boot/onGetConfig.ts index 718b5c4d2..dc2f4f1f7 100644 --- a/app/src/boot/onGetConfig.ts +++ b/app/src/boot/onGetConfig.ts @@ -221,6 +221,9 @@ export const initWindow = async (app: App) => { }); ipcRenderer.on(Constants.SIYUAN_EXPORT_PDF, async (e, ipcData) => { const msgId = showMessage(window.siyuan.languages.exporting, -1); + const isPaged = ipcData.paged !== undefined ? ipcData.paged : true; + // 分页模式下 pageSize 是字符串,不分页模式下是对象,统一使用 pageSizeValue 获取原始页面大小 + const pageSizeValue = ipcData.pageSizeValue !== undefined ? ipcData.pageSizeValue : (isPaged ? ipcData.pdfOptions.pageSize : "A4"); window.siyuan.storage[Constants.LOCAL_EXPORTPDF] = { removeAssets: ipcData.removeAssets, keepFold: ipcData.keepFold, @@ -228,16 +231,17 @@ export const initWindow = async (app: App) => { watermark: ipcData.watermark, landscape: ipcData.pdfOptions.landscape, marginType: ipcData.pdfOptions.marginType, - pageSize: ipcData.pdfOptions.pageSize, + pageSize: pageSizeValue, scale: ipcData.pdfOptions.scale, marginTop: ipcData.pdfOptions.margins.top, marginRight: ipcData.pdfOptions.margins.right, marginBottom: ipcData.pdfOptions.margins.bottom, marginLeft: ipcData.pdfOptions.margins.left, + paged: isPaged, }; setStorageVal(Constants.LOCAL_EXPORTPDF, window.siyuan.storage[Constants.LOCAL_EXPORTPDF]); try { - if (window.siyuan.config.export.pdfFooter.trim()) { + if (window.siyuan.config.export.pdfFooter.trim() && isPaged) { const response = await fetchSyncPost("/api/template/renderSprig", {template: window.siyuan.config.export.pdfFooter}); ipcData.pdfOptions.displayHeaderFooter = true; ipcData.pdfOptions.headerTemplate = ""; diff --git a/app/src/protyle/export/index.ts b/app/src/protyle/export/index.ts index 00aa0bf44..07c5d3aa0 100644 --- a/app/src/protyle/export/index.ts +++ b/app/src/protyle/export/index.ts @@ -304,7 +304,7 @@ const renderPDF = async (id: string) => { ${window.siyuan.languages.exportPDF1} - +