mirror of
https://github.com/docmost/docmost.git
synced 2025-11-13 11:32:39 +10:00
* fix maths node * render default html width * Add page export module * with support for html and markdown exports * Page export UI * Add PDF print too * remove unused import
35 lines
958 B
TypeScript
35 lines
958 B
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { jsonToHtml } from '../../collaboration/collaboration.util';
|
|
import { turndown } from './turndown-utils';
|
|
import { ExportFormat } from './dto/export-dto';
|
|
import { Page } from '@docmost/db/types/entity.types';
|
|
|
|
@Injectable()
|
|
export class ExportService {
|
|
async exportPage(format: string, page: Page) {
|
|
const titleNode = {
|
|
type: 'heading',
|
|
attrs: { level: 1 },
|
|
content: [{ type: 'text', text: page.title }],
|
|
};
|
|
|
|
let prosemirrorJson: any = page.content || { type: 'doc', content: [] };
|
|
|
|
if (page.title) {
|
|
prosemirrorJson.content.unshift(titleNode);
|
|
}
|
|
|
|
const pageHtml = jsonToHtml(prosemirrorJson);
|
|
|
|
if (format === ExportFormat.HTML) {
|
|
return `<!DOCTYPE html><html><head><title>${page.title}</title></head><body>${pageHtml}</body></html>`;
|
|
}
|
|
|
|
if (format === ExportFormat.Markdown) {
|
|
return turndown(pageHtml);
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|