feat: v0.5.0 —— 导出 PDF(带预览窗口)
导出 - 文件 → 导出 PDF…(Ctrl+E)先弹出预览窗口,确认后点「保存 PDF…」选路径 - A4 纸、16mm 页边距;预览和导出共用同一个 QTextDocument,页宽一致 - 只用 Qt 自带的 QPrinter / QTextDocument,没有引入外部 PDF 库 排版 - 新增 MarkdownRenderer:把 Markdown 解析成排版好的富文本文档 - 支持标题、列表 / 任务列表、引用、围栏代码块、行内代码、 粗体 / 斜体 / 删除线、链接;图片输出 alt 文字,表格暂按原文 - 代码块带底色、引用带竖线、分隔线画成横线 其它 - 用用户更新后的 logo.png 重新生成了 ico / icns / png - docs/screenshot-export.png 与 README 同步
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "MainWindow.h"
|
||||
|
||||
#include "ExportDialog.h"
|
||||
#include "MarkdownEditor.h"
|
||||
#include "ThemeManager.h"
|
||||
|
||||
@@ -133,6 +134,10 @@ void MainWindow::createActions()
|
||||
m_saveAsAction->setShortcut(QKeySequence(QStringLiteral("Ctrl+Shift+S")));
|
||||
connect(m_saveAsAction, &QAction::triggered, this, [this] { saveFileAs(); });
|
||||
|
||||
m_exportPdfAction = new QAction(tr("导出 PDF…"), this);
|
||||
m_exportPdfAction->setShortcut(QKeySequence(QStringLiteral("Ctrl+E")));
|
||||
connect(m_exportPdfAction, &QAction::triggered, this, &MainWindow::exportPdf);
|
||||
|
||||
m_quitAction = new QAction(tr("退出"), this);
|
||||
m_quitAction->setShortcut(QKeySequence::Quit);
|
||||
connect(m_quitAction, &QAction::triggered, this, &QWidget::close);
|
||||
@@ -269,6 +274,7 @@ void MainWindow::createMenus()
|
||||
fileMenu->addSeparator();
|
||||
fileMenu->addAction(m_saveAction);
|
||||
fileMenu->addAction(m_saveAsAction);
|
||||
fileMenu->addAction(m_exportPdfAction);
|
||||
fileMenu->addSeparator();
|
||||
fileMenu->addAction(m_quitAction);
|
||||
|
||||
@@ -536,6 +542,12 @@ bool MainWindow::saveFileAs()
|
||||
return writeToFile(path);
|
||||
}
|
||||
|
||||
void MainWindow::exportPdf()
|
||||
{
|
||||
ExportDialog dialog(m_editor->toPlainText(), displayName(), startDirectory(), this);
|
||||
dialog.exec();
|
||||
}
|
||||
|
||||
bool MainWindow::writeToFile(const QString &path)
|
||||
{
|
||||
QString text = m_editor->toPlainText();
|
||||
|
||||
Reference in New Issue
Block a user