feat: 发布 v0.4.0 桌面端

This commit is contained in:
SkyJourney
2026-07-27 20:56:39 +08:00
parent 92a5bfd016
commit 4d60741f5a
90 changed files with 10431 additions and 223 deletions
+32 -2
View File
@@ -1,4 +1,7 @@
import type { ExportConfig } from "@md-to-pdf/core";
import type {
ExportConfig,
PagedDocumentPayload
} from "@md-to-pdf/core";
export interface PdfExportRequest {
markdown: string;
@@ -129,11 +132,38 @@ export async function requestPdfExport(
};
}
export function downloadPdf(blob: Blob, fileName: string) {
export async function requestDesktopPdfExport(
payload: PagedDocumentPayload
): Promise<PdfExportResult> {
const bridge = window.mdToPdfDesktop;
if (!bridge) {
throw new Error("桌面 PDF 引擎不可用");
}
const result = await bridge.generatePdf(payload);
const pdfBytes = Uint8Array.from(result.pdf);
return {
blob: new Blob([pdfBytes.buffer], { type: "application/pdf" }),
fileName: payload.fileName.replace(/\.(md|markdown)$/i, "") + ".pdf",
pageCount: result.pageCount,
echartsErrorCount: result.echartsErrors.length,
mermaidErrorCount: result.mermaidErrors.length
};
}
export async function downloadPdf(blob: Blob, fileName: string) {
if (window.mdToPdfDesktop) {
return window.mdToPdfDesktop.savePdf(
fileName,
new Uint8Array(await blob.arrayBuffer())
);
}
const url = URL.createObjectURL(blob);
const anchor = document.createElement("a");
anchor.href = url;
anchor.download = fileName;
anchor.click();
window.setTimeout(() => URL.revokeObjectURL(url), 0);
return true;
}