网站首页 > 技术文章 正文
Python开发打印服务(2)
1.前端环境
在上一盘《Python开发打印服务(1)》中,我们介绍的内容主要集中在后端 Python 实现打印服务功能的思路及方法,在本篇中,我们来介绍前端如何展现和打印 pdf 。
前端开发环境:
软件 | 说明 |
Vue3 | |
PrimeVUE | UI组件 |
pdf.js | pdf 展现和打印 |
2.实现思路
3.调用打印服务
对于调用打印服务,我们可以封装为统一的函数,代码如下:
# coding: utf-8
import json
import rpyc
import settings
def print_text(template_file_name, data: dict):
c = rpyc.connect(settings.PRINT_HOST, settings.PRINT_PORT)
pdf_file = c.root.print_text(template_file_name, json.dumps(data))
c.close()
return pdf_file
def print_table(template_file_name, data: dict):
c = rpyc.connect(settings.PRINT_HOST, settings.PRINT_PORT)
pdf_file = c.root.print_table(template_file_name, json.dumps(data))
c.close()
return pdf_file
4.打印按钮
在 web 页面中添加 PrimeVUE 的按钮,代码示例如下:
<Button type="button" label="打印" icon="pi pi-print" style="margin-right: 12px;" @click="print_button_clicked"/>
5.实现打印事件
打印按钮主要实现调用后端 API,后端 API 实现根据提交参数获取要打印的数据,然后调用打印服务生成 pdf 文件。打印按钮事件代码示例:
postRequest(
'/xxxxxx_api/xxx/print_xxx',
{date: print_date}
).then((response) => {
let pdf = response.data.pdf
if (!pdf) return
pdfUrl.value = '/pdfjs-2.13.216-dist/web/viewer.html?file=/print_serve_api/reader/read/' + pdf
})
此处的关键语句:
pdfUrl.value = '/pdfjs-2.13.216-dist/web/viewer.html?file=/print_serve_api/reader/read/' + pdf
其中:/print_serve_api/reader/read/为打印服务提供的 api,用于从打印服务器下载生成的pdf文件。
6.实现pdf展现和打印
将 pdf.js 下载的代码存放到 public 目录下。
在web页面上增加全屏侧边栏,代码如下:
<!--打印预览全屏侧边栏-->
<Sidebar v-model:visible="isPrintView" :baseZIndex="10000" position="full">
<iframe :src="pdfUrl" style="width: 100%; height: calc(100vh - 80px);"/>
</Sidebar>
我们可以看到,通过打开全屏侧边栏,在侧边栏中用 ifrme 来展现 pdfUrl 变量给定的内容。
效果如下:
打印操作如下图:
在这里,只需要点击打印即可在选择的打印机上输出文件内容。
猜你喜欢
- 2025-05-28 改善施乐5575系列,打印输出纸张前端、后端有粘碳粉现象
- 2025-05-28 3D打印,演绎制造新传奇
- 2025-05-28 世界最大规模3D打印混凝土步行桥落户上海科普公园
- 2025-05-28 【实战篇】数字化打印——打印部署管理接口开发
- 2025-05-28 前端实用技术分享—用Vue实现打印指定区域
- 2025-05-28 行业案例:高效打印,智能办公
- 2024-09-25 上海首座3D打印书屋亮相!可容纳15人,有地暖有天窗
- 2024-09-25 “JVM” 上的AOP:Java Agent 实战
- 2024-09-25 Python短文,关于print函数的基础用法(一)
- 2024-09-25 电子签章处理文件和打印基于ABP框架的前端项目Vue&Element
你 发表评论:
欢迎- 500℃几个Oracle空值处理函数 oracle处理null值的函数
- 494℃Oracle分析函数之Lag和Lead()使用
- 493℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 481℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 472℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 468℃【数据统计分析】详解Oracle分组函数之CUBE
- 453℃Oracle有哪些常见的函数? oracle中常用的函数
- 448℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
-
- Spring Boot跨域难题终结者:3种方案,从此告别CORS噩梦!
- 京东大佬问我,SpringBoot为什么会出现跨域问题?如何解决?
- 在 Spring Boot3 中轻松解决接口跨域访问问题
- 最常见五种跨域解决方案(常见跨域及其解决方案)
- Java Web开发中优雅应对跨域问题(java跨域问题解决办法)
- Spring Boot解决跨域最全指南:从入门到放弃?不,到根治!
- Spring Boot跨域问题终极解决方案:3种方案彻底告别CORS错误
- Spring Cloud 轻松解决跨域,别再乱用了
- Github 太狠了,居然把 "master" 干掉了
- IntelliJ IDEA 调试 Java 8,实在太香了
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)