qt打印预览html,QT 5.9 实现 QWebEngineView 打印html内容
英文引用网址: https://www3.sra.co.jp/qt/relation/doc/qtwebengine/qtwebengine-webenginewidgets-printme-example.html
做个纪录,以便以后参考:
In the main function, we first instantiate a QWebEngineView and set the URL to our internal HTML page. Next, we create a PrintHandler instance and pass the requested page. For convenience, we also create keyboard shortcuts that can be used to call a print dialog or print preview dialog.
QWebEngineView view;
view.setUrl(QUrl(QStringLiteral("qrc:/index.html")));
view.resize(1024, 750);
view.show();
PrintHandler handler;
handler.setPage(view.page());
auto printPreviewShortCut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_P), &view);
auto printShortCut = new QShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_P), &view);
QObject::connect(printPreviewShortCut, &QShortcut::activated, &handler, &PrintHandler::printPreview);
QObject::connect(printShortCut, &QShortcut::activated, &handler, &PrintHandler::print);
Print Handler
In the PrintHandler function, we first implement printPreview(), where we instantiate QPrinter together with QPrintPreviewDialog. We need the QPrintPreviewDialog::paintRequested handle to generate a set of preview pages.
void PrintHandler::printPreview()
{
if (!m_page)
return;
if (m_inPrintPreview)
return;
m_inPrintPreview = true;
QPrinter printer;
QPrintPreviewDialog preview(&printer, m_page->view());
connect(&preview, &QPrintPreviewDialog::paintRequested,
this, &PrintHandler::printDocument);
preview.exec();
m_inPrintPreview = false;
}
Now we can implement the PrintHandler::printDocument() slot, which is called in response to the QPrintPreviewDialog::paintRequested signal.
void PrintHandler::printDocument(QPrinter *printer)
{
QEventLoop loop;
bool result;
auto printPreview = [&](bool success) { result = success; loop.quit(); };
m_page->print(printer, std::move(printPreview));
loop.exec();
if (!result) {
QPainter painter;
if (painter.begin(printer)) {
QFont font = painter.font();
font.setPixelSize(20);
painter.setFont(font);
painter.drawText(QPointF(10,25),
QStringLiteral("Could not generate print preview."));
painter.end();
}
}
}
To do actual painting on a printer, we call the QWebEnginePage::print() function. Because this call blocks the main event loop, we need to create a local one. We begin the local event loop by calling QEventLoop::exec(). When the local event loop terminates, we check for result and report any errors that occurred.
The last function we implement, PrintHandler::print(), is trivial, because it simply opens QPrintDialog and calls the previously implemented PrintHandler::printDocument().
void PrintHandler::print()
{
QPrinter printer(QPrinter::HighResolution);
QPrintDialog dialog(&printer, m_page->view());
if (dialog.exec() != QDialog::Accepted)
return;
printDocument(&printer);
}
qt打印预览html,QT 5.9 实现 QWebEngineView 打印html内容相关推荐
- sap 打印预览界面点击打印时记录打印次数_SAP打印机设置
一.SAP打印原理 SAP的打印过程分两个步骤: 创建假脱机请求 创建输出请求 在点击打印按钮后,系统会提示创建假脱机请求后,你可以选择直接生成输出请求,或者手动生成输出请求,产生输出请求后,系统会根 ...
- access 打印预览 代码_TSC TTP-244条码打印机如何批量打印二维码
二维码的应用可以说是非常的普遍了,二维码在应用之前不但需要条码打印机批量打印二维码,还需要相关的二维码制作软件制作二维码.今天小编就教大家用TSC TTP-244条码打印机批量打印二维码. 1.打开二 ...
- html 打印预览跟实际不一样,excel打印预览与实际不符(excel应对打印结果与画面显示有误差的方法)...
excel打印预览与具体不符合(excel解决复印結果与界面表明有确定误差的方式 )大伙儿是不是了解"WYSIWYG"?它是"What You See Is What Y ...
- html打印预览 分页,有分页功能的WEB打印_js
看看 .Noprint{display:none;} .PageNext{page-break-after: always;} .tdp { border-bottom: 1 solid #00000 ...
- ie8 html js页面打印预览,Print.js javascript库 实现页面打印
您可以从GitHub版本下载最新版本的Print.js npm 安装 npm install print-js --save npm安装时将库导入项目 import print from 'print ...
- (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作...
http://www.cnblogs.com/wuhuacong/p/5147368.html 在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这 ...
- excel打印预览在哪里_别再浪费A4纸了,Excel按下这个键,一张纸可以打印全部表格内容...
我们在工作和生活中,经常需要打印Excel表格,可是有时表格太宽了,无法打印在一张A4纸上,今天就来教大家几种方法,只需按下一个键,就可以打印全部表格内容. 一.表格打印一页 1.设置分页 首先点击[ ...
- 网页中JS实现(调用)打印预览功能
近期的项目中需要在页面中实现打印预览功能--点击网页中的"打印"(Print),弹出打印预览窗口,点击窗口页面中的"开始打印"(Print),则出现浏览器的打印 ...
- js iframe 打印 打印预览 页眉页脚的设置
1.window.print方式: Html代码 //jsp页面 打印按钮: <input type="button" value="打印" onclic ...
最新文章
- SAP PM 初级系列15 - IW33事务代码界面里查看维修工单对应的维修通知单的几个方法
- 干货 | 图解 https 单向认证和双向认证!
- boost::spirit模块实现罗马数字解析器(演示符号表)的测试程序
- 中文版开源!最最最经典的Python编程教材强势来袭~
- app aws_服务网格:Istio和AWS App Mesh
- oracle表压缩比,oracle的compress 特性介绍
- Centos7 修改防火墙,开放端口、转发端口
- 转载:NPOI导出到Excel表格
- java后台处理跨域问题_用cros解决前后端分离的跨域问题
- 基于cat12和SPM12进行SBM数据分析笔记
- UOJ275 [清华集训2016] 组合数问题 【Lucas定理】【数位DP】
- mac打开注册机显示“您没有权限来打开应用程序
- 论“搜狗”输入法对用户的影响
- 在 sysservers 中找不到服务器,在 sys.servers 中找不到服务器的解决办法,自己解决的...
- 逆向之汇编(EBP寻址)
- docx文件格式转PDF格式
- 【两周快速入门pr】三、定格动画制作-基础操作成就你的脑洞
- C语言Math函数库简介
- 解决libpng warning: iCCP: known incorrect sRGB profile
- MySQL查看数据库状态命令详解