From 894049e97a7e542f800f4910409c543e0e78a4a0 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 20 Oct 2025 21:39:42 +0800 Subject: [PATCH] :art: Support calling system printing on HarmonyOS https://github.com/siyuan-note/siyuan/issues/16164 Signed-off-by: Daniel <845765@qq.com> --- app/src/menus/commonMenuItem.ts | 9 +++++++-- app/src/protyle/export/index.ts | 7 ++++--- app/src/protyle/util/compatibility.ts | 9 +++++++++ app/src/types/index.d.ts | 2 ++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/app/src/menus/commonMenuItem.ts b/app/src/menus/commonMenuItem.ts index 0a8ec60ed..01dde9225 100644 --- a/app/src/menus/commonMenuItem.ts +++ b/app/src/menus/commonMenuItem.ts @@ -758,7 +758,7 @@ export const exportMd = (id: string) => { id: "exportPDF", label: window.siyuan.languages.print, icon: "iconPDF", - ignore: !isInAndroid(), + ignore: !isInAndroid() && !isInHarmony(), click: () => { const msId = showMessage(window.siyuan.languages.exporting); const localData = window.siyuan.storage[Constants.LOCAL_EXPORTPDF]; @@ -768,7 +768,12 @@ export const exportMd = (id: string) => { merge: localData.mergeSubdocs, }, async response => { const html = await onExport(response, undefined, {type: "pdf", id}); - window.JSAndroid.print(html); + if (isInAndroid()) { + window.JSAndroid.print(html); + } else if (isInHarmony()) { + window.JSHarmony.print(html); + } + setTimeout(() => { hideMessage(msId); }, 3000); diff --git a/app/src/protyle/export/index.ts b/app/src/protyle/export/index.ts index 0ffd20d39..0d74b7898 100644 --- a/app/src/protyle/export/index.ts +++ b/app/src/protyle/export/index.ts @@ -11,7 +11,7 @@ import {getThemeMode, setInlineStyle} from "../../util/assets"; import {fetchPost, fetchSyncPost} from "../../util/fetch"; import {Dialog} from "../../dialog"; import {replaceLocalPath} from "../../editor/rename"; -import {isInAndroid, setStorageVal} from "../util/compatibility"; +import {getScreenWidth, isInAndroid, isInHarmony, setStorageVal} from "../util/compatibility"; import {getFrontend} from "../../util/functions"; const getPluginStyle = async () => { @@ -669,7 +669,8 @@ export const onExport = async (data: IWebSocketData, filePath: string, exportOpt if (!isDefault) { themeStyle = ``; } - const minWidthHtml = isInAndroid() ? `document.body.style.minWidth = "${window.JSAndroid.getScreenWidthPx()}px"` : ""; + let screenWidth = getScreenWidth(); + const minWidthHtml = isInAndroid() || isInHarmony() ? `document.body.style.minWidth = "${screenWidth}px"` : ""; const html = `
@@ -694,7 +695,7 @@ export const onExport = async (data: IWebSocketData, filePath: string, exportOpt