pyqt5+QWebEngineView+pdfjs+win32print实现pdf文件的预览、打印

一、pdf显示逻辑

import sys
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets

PDFJS = 'file:///pdfjs-1.9.426-dist/web/viewer.html'
# PDFJS = 'file:///usr/share/pdf.js/web/viewer.html'
PDF = 'file:///D:/Code/report.pdf'

class Window(QtWebEngineWidgets.QWebEngineView):
    def __init__(self):
        super().__init__()
        print('%s?file=%s' % (PDFJS, PDF))
        self.load(QtCore.QUrl.fromUserInput('%s?file=%s' % (PDFJS, PDF)))

if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    window = Window()
    window.setGeometry(600, 50, 800, 600)
    window.show()
    sys.exit(app.exec_())

必要条件: 下载PDFJS1.9.426(版本太高可能不支持pyqt5显示),调用web文件夹下的 view.html文件。
注意: view.html.pdf文件的路径前需要加上file:///字符串,不然无法显示。原理可能涉及到前端技术,不过可以解释的是,当你用浏览器打开本地pdf文件时,路径前的确加了file:///。之前一直不知道是什么东西没有加一直显示不出来,无意间看到浏览器下本地pdf的路径豁然开朗。

在这里插入图片描述
二、完整代码

主界面

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from pdfui import Ui_Form
import sys
import time
from tools import print_interface

import os
Pdf_path = ''
class ui_main(QMainWindow, Ui_Form):
    def __init__(self):
        super(ui_main, self).__init__()
        self.setupUi(self)


        self.pdf_view_btn.clicked.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/223131.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大话数据结构-查找-散列表查找(哈希表)

注:本文同步发布于稀土掘金。 8 散列表查找(哈希表) 8.1 定义 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给…

Python Collections库的高级功能详解

更多资料获取 📚 个人网站:ipengtao.com Python的collections库提供了一系列有用的数据类型,扩展了内建的数据类型,为开发者提供了更多高级功能。本文将深入探讨collections库的一些高级功能,通过详细的示例代码演示&…

北森2023半年报洞察:中国HCM SaaS市场的未来,只能是北森

作者 | 曾响铃 文 | 响铃说 中国的HCM SaaS市场处在了一个不尴不尬的状态,尽管前景广阔,但是需求却迟迟未能爆发,整体行业卡在了一个明显的瓶颈期。 其中,又以北森的处境最为典型。 根据IDC发布的《IDC中国人力资本管理&#…

EDW国际数据管理最新趋势(二)|信息供应链与数据

最近Data Fabric、Data Mesh、DataOps等话题非常火。其实,信息供应链谈的也是同样的东西,那就是如何将数据治理与数据集成整合在一起的解决方案。 下图虽然简单但涵盖了非常大的信息量。将4A架构进行了拆解,应用架构与技术架构主要是支撑业务…

AOP记录操作日志

创建数据库表 -- 操作日志 create table operate_log (id int unsigned primary key auto_increment commentid,operate_user int unsigned comment 操作人员Id,operate_time datetime comment 操作时间,class_name varchar(100)comment 操作类,method_name varchar(100)comme…

IDEA 修改encoding

IDEA 修改encoding 现象:idea展示乱码 打开Settings>>File Encodings,修改为UTF-8即可

Kubernetes(K8s)_17_Kubernetes扩展

Kubernetes(K8s)_17_Kubernetes扩展 Kubernetes扩展CustomResuorceDefinition自定义API ServerOperator Kubernetes扩展 Kubernetes扩展: 不同角度实现对Kubernetes功能的增加/增强 内部组件: API Server、CRD、Operator、授权和准入控制kubelet: CRI、…

Linux环境变量与命令行参数

Linux环境变量与命令行参数 一.命令行参数1.语法2.应用1:简易计算器 二.环境变量1.环境变量的概念2.环境变量的作用3.进一步理解环境变量的作用4.常见环境变量5.导出环境变量(添加环境变量)6.环境变量的特性7.另一种获取环境变量的方式8.小功能:用于身份验证的代码9.补充:第三种…

Elasticsearch:什么是机器学习?

机器学习定义 机器学习 (ML) 是人工智能 (AI) 的一个分支,专注于使用数据和算法来模仿人类的学习方式,并随着时间的推移逐渐提高准确性。 计算机科学家和人工智能创新者 Arthur Samuel 在 20 世纪 50 年代首次将其定义为 “赋予计算机无需明确编程即可学…

C 语言实现TCP 通信,以及地址复用

服务端 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <arpa/inet.h>int main() {//监听套接字文件描述符int listenFd -1;//连接套接字的文件描述符int connFd -1;//服务器的地址结构st…

html实现好看的个人博客留言板源码

文章目录 1.设计来源1.1 博客主界面1.2 常用源码1.3 我的文章1.4 留言板1.5 联系我 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134837482 html实现好看的个人博客留言…

(C语言)判定同数异形体

同数异形体&#xff1a;有相同的数字包括数字个数&#xff0c;不同排列形成的正整数。 例如&#xff1a;12334和33214均由1个1,1个2,2个3,1个4组成&#xff0c;故互为同数异形体&#xff0c;而1234和3221就不是。 #include<stdio.h> bool Isomorphism(int num1,int num…

js二维数组实现纵向求和

需求&#xff1a;横向纵向都可以求和&#xff0c;剩余分数为100减去纵向之和 var arr [{id: 张丹,rowInfo: [{ realScore: 12 },{ realScore: 34 },{ realScore: 0 },{ realScore: 0 },{ realScore: 0 },],},{id: 丽丽,rowInfo: [{ realScore: 0 },{ realScore: 0 },{ realSc…

2023年最详细介绍Linux 系统目录结构!你确定不来了解一下吗?

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有…

Python实现FA萤火虫优化算法优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

一文带你区分Cookie 和 Session

Cookie 和 Session HTTP 协议是一种无状态协议&#xff0c;即每次服务端接收到客户端的请求时&#xff0c;都是一个全新的请求&#xff0c;服务器并不知道客户端的历史请求记录&#xff1b; Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性 1、Session 是什么 …

IDEA导入JavaWeb项目(Maven)

IDEA导入JavaWeb(Maven)项目教程 运行教程 亲爱的粉丝们&#xff0c;我深知你们对IDEA导入JAVAWeb工程的迫切需求。在这个充满竞争的时代&#xff0c;每一个项目都离不开高效的沟通。过程中需要对应的环境适配和软件安…

openGauss学习笔记-146 openGauss 数据库运维-备份与恢复-配置文件的备份与恢复

文章目录 openGauss学习笔记-146 openGauss 数据库运维-备份与恢复-配置文件的备份与恢复146.1 背景信息146.2 前置条件146.3 操作步骤146.4 示例 openGauss学习笔记-146 openGauss 数据库运维-备份与恢复-配置文件的备份与恢复 146.1 背景信息 在openGauss使用过程中&#x…

class051 二分答案法与相关题目【算法】

class051 二分答案法与相关题目【算法】 算法讲解051【必备】二分答案法与相关题目 code1 875. 爱吃香蕉的珂珂 // 爱吃香蕉的珂珂 // 珂珂喜欢吃香蕉。这里有 n 堆香蕉&#xff0c;第 i 堆中有 piles[i] 根香蕉 // 警卫已经离开了&#xff0c;将在 h 小时后回来。 // 珂珂…

生成对抗网络——研讨会

时隔一年&#xff0c;再跟着李沐大师学习了GAN之后&#xff0c;仍旧没能在离散优化中实现通用的应用&#xff0c;实在惭愧&#xff0c;借着组内研讨会的机会&#xff0c;再队GAN的前世今生做一个简单的综述。 GAN产生的背景 目前与GAN相关的应用 去reddit社区的机器学习板块…