feat(转换能力): 修复PDF转换系统字体加载
build.yaml / build (push) Successful in 40s

This commit is contained in:
xiaoqidun committed 2026-09-28 12:16:49 +08:00
1 parent b5a00f47c3
commit 197521edb8
3 files changed
+46 -20

No files matched your search

+20 -1
View File
@@ -3253,10 +3253,23 @@ async function loadWASM() {
};
worker.onerror = (event) => fail(new Error(event.message || "引擎加载失败"));
worker.onmessageerror = () => fail(new Error("引擎通信失败"));
worker.onmessage = ({ data }) => {
worker.onmessage = async ({ data }) => {
if (worker !== wasmWorker) {
return;
}
if (data.type === "font") {
try {
const request = wasmRequests.get(data.id);
const font = request?.localFonts?.get(data.name);
if (!font || request.openSeq !== state.openSeq) throw new Error("系统字体不可用");
if (!request.fontData.has(font)) request.fontData.set(font, fontManager.read(font));
const bytes = await request.fontData.get(font);
if (worker === wasmWorker) worker.postMessage({ type: "font", request: data.request, bytes });
} catch (err) {
if (worker === wasmWorker) worker.postMessage({ type: "font", request: data.request, error: err.message });
}
return;
}
if (data.type === "progress") {
setProgress(data.text, data.percent);
} else if (data.type === "conversion") {
@@ -7939,6 +7952,12 @@ async function callWASM(name, ...args) {
return new Promise((resolve, reject) => {
const id = ++wasmRequestID;
wasmRequests.set(id, { resolve, reject, openSeq: state.openSeq });
if (name === "ofdgoConvertPDF") {
const request = wasmRequests.get(id);
request.localFonts = fontManager.localEntries();
request.fontData = new Map();
args.push([...request.localFonts.keys()]);
}
if (name === "ofdgoConvertPDF" || name === "ofdgoExportPage" || name === "ofdgoExportDocument" || name === "ofdgoExportAttachment" || name === "ofdgoSaveDocument" || name === "ofdgoSaveEncrypted" || name === "ofdgoSaveSigned" || name === "ofdgoImportPages") {
state.exportRequestID = id;
el.cancelExportButton.hidden = false;