英文引用网址: 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内容相关推荐

  1. sap 打印预览界面点击打印时记录打印次数_SAP打印机设置

    一.SAP打印原理 SAP的打印过程分两个步骤: 创建假脱机请求 创建输出请求 在点击打印按钮后,系统会提示创建假脱机请求后,你可以选择直接生成输出请求,或者手动生成输出请求,产生输出请求后,系统会根 ...

  2. access 打印预览 代码_TSC TTP-244条码打印机如何批量打印二维码

    二维码的应用可以说是非常的普遍了,二维码在应用之前不但需要条码打印机批量打印二维码,还需要相关的二维码制作软件制作二维码.今天小编就教大家用TSC TTP-244条码打印机批量打印二维码. 1.打开二 ...

  3. html 打印预览跟实际不一样,excel打印预览与实际不符(excel应对打印结果与画面显示有误差的方法)...

    excel打印预览与具体不符合(excel解决复印結果与界面表明有确定误差的方式 )大伙儿是不是了解"WYSIWYG"?它是"What You See Is What Y ...

  4. html打印预览 分页,有分页功能的WEB打印_js

    看看 .Noprint{display:none;} .PageNext{page-break-after: always;} .tdp { border-bottom: 1 solid #00000 ...

  5. ie8 html js页面打印预览,Print.js javascript库 实现页面打印

    您可以从GitHub版本下载最新版本的Print.js npm 安装 npm install print-js --save npm安装时将库导入项目 import print from 'print ...

  6. (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作...

    http://www.cnblogs.com/wuhuacong/p/5147368.html 在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这 ...

  7. excel打印预览在哪里_别再浪费A4纸了,Excel按下这个键,一张纸可以打印全部表格内容...

    我们在工作和生活中,经常需要打印Excel表格,可是有时表格太宽了,无法打印在一张A4纸上,今天就来教大家几种方法,只需按下一个键,就可以打印全部表格内容. 一.表格打印一页 1.设置分页 首先点击[ ...

  8. 网页中JS实现(调用)打印预览功能

    近期的项目中需要在页面中实现打印预览功能--点击网页中的"打印"(Print),弹出打印预览窗口,点击窗口页面中的"开始打印"(Print),则出现浏览器的打印 ...

  9. js iframe 打印 打印预览 页眉页脚的设置

    1.window.print方式: Html代码 //jsp页面 打印按钮: <input type="button" value="打印" onclic ...

最新文章

  1. SAP PM 初级系列15 - IW33事务代码界面里查看维修工单对应的维修通知单的几个方法
  2. 干货 | 图解 https 单向认证和双向认证!
  3. boost::spirit模块实现罗马数字解析器(演示符号表)的测试程序
  4. 中文版开源!最最最经典的Python编程教材强势来袭~
  5. app aws_服务网格:Istio和AWS App Mesh
  6. oracle表压缩比,oracle的compress 特性介绍
  7. Centos7 修改防火墙,开放端口、转发端口
  8. 转载:NPOI导出到Excel表格
  9. java后台处理跨域问题_用cros解决前后端分离的跨域问题
  10. 基于cat12和SPM12进行SBM数据分析笔记
  11. UOJ275 [清华集训2016] 组合数问题 【Lucas定理】【数位DP】
  12. mac打开注册机显示“您没有权限来打开应用程序
  13. 论“搜狗”输入法对用户的影响
  14. 在 sysservers 中找不到服务器,在 sys.servers 中找不到服务器的解决办法,自己解决的...
  15. 逆向之汇编(EBP寻址)
  16. docx文件格式转PDF格式
  17. 【两周快速入门pr】三、定格动画制作-基础操作成就你的脑洞
  18. C语言Math函数库简介
  19. 解决libpng warning: iCCP: known incorrect sRGB profile
  20. MySQL查看数据库状态命令详解

热门文章

  1. CTS、CLS、CLR分别作何解释
  2. 期货市场倒挂什么意思(期货市场倒挂什么意思啊)
  3. word图片被文字覆盖一部分的解决方法
  4. JavaSwing编程总结
  5. 生物特征识别门禁系统分类和基本概念
  6. android 程序题期末,Android应用开发期末考试题
  7. win11系统输入法增加小鹤双排
  8. Linux使用Aria2命令下载BT种子/磁力/直链文件
  9. 哈工大C语言程序设计精髓第十三周
  10. 计算机设备管理器里面没有图像,设备管理器里没有图像设备怎么办?