python 全自动打印网站

python大道至简之flask Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。 阅读详情

项目介绍

  • win32print可以打开打印机,进行打印操作,以及一些高级打印机设置。
  • flask作为一个轻量级的web框架,很适合做一个无人打印自助的前端技术。
  • 使用花生壳进行内网穿透
  • 界面使用bootstrap稍加美化
  • 可以实现远程提交docx文件到本地电脑,调动打印机打印文件
    后端
    后端截图
    前端
    前端截图

开始部署项目

导入pywin32,os,flask库

导入

源代码

#!/user/bin/python
# _*_ coding:utf-8 _*_
#开发人员:eu_zero
#开发时间2021/10/19 16:57
#文件名称: test.py
#开发工具: pycharm
#项目名称 test
from flask import Flask
from flask import request
import os
import win32print
import win32api

def printer_loading(filename,chooseDuplex,chooseColor,chooseCopies):
    # name = win32print.GetDefaultPrinter()
    name = "EPSON L3150 Series"

    # printdefaults = {"DesiredAccess": win32print.PRINTER_ACCESS_ADMINISTER}
    printdefaults = {"DesiredAccess": win32print.PRINTER_ACCESS_USE}
    handle = win32print.OpenPrinter(name, printdefaults)

    level = 2
    attributes = win32print.GetPrinter(handle, level)
    print("old Duplex = %d" % attributes['pDevMode'].Duplex)
    print("old Orientation = %d" % attributes['pDevMode'].Orientation)
    print("old color = %d" % attributes['pDevMode'].Color)
    print("old copies = %d" % attributes['pDevMode'].Copies)
    attributes['pDevMode'].Duplex = int(chooseDuplex)           # 1单面 2长边装订双面 3短边装订双面
    attributes['pDevMode'].Orientation = 2                       #纵向打印(暂时无法横向打印)
    attributes['pDevMode'].Color = int(chooseColor)             # 0彩色 1黑白
    attributes['pDevMode'].Copies = int(chooseCopies)           #份数
    try:
        win32print.SetPrinter(handle, level, attributes, 0)
    except:
        print("new Duplex = %d" % attributes['pDevMode'].Duplex)
        print("new Orientation = %d" % attributes['pDevMode'].Orientation)
        print("new color = %d" % attributes['pDevMode'].Color)
        print("new copies = %d" % attributes['pDevMode'].Copies)
    res = win32api.ShellExecute(0, 'print', filename, None, '.', 0)
    win32print.ClosePrinter(handle)

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def home():
    return '''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
    <title>奔腾自助打印网站</title>
</head>
<body>
<p align="center">
<form class="mb-3" action="/printExcute" method="post" enctype="multipart/form-data">
    <div>
        <br/>
        <input class="form-control form-control-lg" id="formFileLg" type="file" name="printfile">
        <br/>
        <select class="form-select" aria-label="Default select example" name="chooseDuplex">
            <option selected>请选择单双面类型</option>
            <option value='1'>单面打印</option>
            <option value='2'>双面打印(长边装订)</option>
            <option value='3'>双面打印(短边装订)</option>
        </select>
        <br/>
        <select class="form-select" aria-label="Default select example" name="chooseColor">
            <option selected>请选择是否为黑白或彩色打印</option>
            <option value='0'>彩色</option>
            <option value='1'>黑白</option>
        </select>
        <br/>
        <select class="form-select" aria-label="Default select example" name="chooseCopies">
            <option selected>请选择打印份数</option>
            <option value='1'>1</option>
            <option value='2'>2</option>
            <option value='3'>3</option>
            <option value='4'>4</option>
            <option value='5'>5</option>
            <option value='6'>6</option>
            <option value='7'>7</option>
            <option value='8'>8</option>
            <option value='9'>9</option>
            <option value='10'>10</option>
        </select>
        <br/>
        <input class="btn btn-primary mb-3" type="submit" name="mufile" value="提交打印文件">
    </div>
</form>
</p>
</body>
</html>
'''

@app.route('/printExcute', methods=['POST'])
def printExcute():
    #接收文件,准备保存打印
    f = request.files.get('printfile')
    print(f.filename)
    path = r'C:\Users\29678\PycharmProjects\test\项目\打印网站\网站传输打印目录'
    file_path = os.path.join(path, f.filename)
    f.save(file_path)  # 保存到指定目录
    print("成功保存")
    if file_path.endswith("docx") or file_path.endswith("pdf"):
        printer_loading(file_path,request.form['chooseDuplex'],request.form['chooseColor'],request.form['chooseCopies'])
    print('打印机启动完毕')
    return '<p>打印提交成功</p>'

if __name__ == '__main__':
    app.run()

花生壳内网穿透

花生壳
配置详情
成功配置内网穿透

创建一个保存打印文件的目录

存放文件

运行项目

run
success
网站映射成功,通过外网网址进入网站可以看见网站内容

说明

打印机高级选项设置

	attributes['pDevMode'].Duplex = int(chooseDuplex)           # 1单面 2长边装订双面 3短边装订双面
    attributes['pDevMode'].Orientation = 2                       #纵向打印(暂时无法横向打印)
    attributes['pDevMode'].Color = int(chooseColor)             # 0彩色 1黑白
    attributes['pDevMode'].Copies = int(chooseCopies)           #份数

一个简单的表格是这么创建的:

类变量Value
Duplex1单面 2长边装订双面 3短边装订双面
Orientation未知,我怎么设置都只能纵向打印
Color0彩色 1黑白
Copies份数

[1]: flask用户指南 https://dormousehole.readthedocs.io/en/latest/
[2]: 高级打印设置 https://blog.youkuaiyun.com/u011356154/article/details/115719225?ops_request_misc=&request_id=&biz_id=102&utm_term=win32print%20%E6%A8%A1%E5%9D%97&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-115719225.pc_search_result_hbase_insert&spm=1018.2226.3001.4187

python调用打印机并打印 python调用打印机并打印。包括:在windows和linux、macOS下获取打印机列表及打印。 阅读详情

相关推荐

Python连接打印机:实现自动化打印的利器

监控和管理打印任务:为了及时发现并解决问题,可以使用Python的相关库(如psutil)来获取系统的资源使用情况,包括CPU、内存和磁盘空间等。此外,还可以使用打印机提供的API或命令行工具来获取打印任务的状态信息,以便及时了解打印进度和可能出现的问题。例如,可以选择更高速度的打印机、更大的内存容量或更高效的打印驱动程序来进一步提高整体的打印效率。它提供了与虚拟机交互的API,可以实现远程打印和虚拟打印机的管理。这样可以减少打印任务的数量,并可能利用打印机的自动分页功能,避免手动分页的繁琐操作。

AI 爪客,专注 AI 智能体与 Skill 研发落地,斩获腾讯云、讯飞、小米等多场 AI 赛事奖项,分享 Agent 实战干货与工程化经验。 1万+

推荐项目:WebPrint - 现代化的网页打印解决方案

推荐项目:WebPrint - 现代化的网页打印解决方案 项目地址:https://gitcode.com/gh_mirrors/web/WebPrint 是一个轻量级且高效的开源项目,它提供了对网页内容进行高质量打印的功能。这个项目的目标是解决在现代web环境中,尤其是在使用JavaScript丰富的页面时,用户打印体验不佳的问题。 技术分析 WebPrint 使用了现代前端技术栈,包括Reac...

gitblog_00039的博客 1299

在Python中打印所有ASCII字符

这个简单的Python脚本可以帮助我们打印出所有的ASCII字符。通过扩展这个方法,我们还可以打印其他编码系统中的字符。希望你喜欢这篇博客,如果有任何问题或建议,欢迎留言讨论。下次再见!希望这个完整的博客对你有帮助!如果你有任何其他问题,随时告诉我。

m0_74972192的博客 5016

浏览器网页怎么实现文档、小票自动静默打印?【深度】

方法一: 以chrome浏览器为例,浏览器自身可以设置静默打印(亲测有效) 操作系统:windows10 chrome版本: 76.0.3809.100(正式版本) (32 位) 需求 在浏览器中点击打印按钮(自定义),不需要每次点击chrome的打印预览框,直接开始打印,从而实现可以批量打印。 打开chrome浏览器Url输入框输入chrome://flags/ 设置 将Enable New Print Preview UI layout设置为Disabled 桌面上的chrom..

u010520850的博客 1万+

斑马打印机程序(python实现标签打印)

【代码】斑马打印机程序(python实现标签打印)

weixin_45888098的博客 1036

Python Selenium 浏览器打印预览_selenium 打印网页(1)

另外,我们需要下载相应浏览器的驱动程序。根据你使用的浏览器,在Selenium的官方网站(https://www.selenium.dev/documentation/en/webdriver/driver_requirements/)上下载对应的驱动程序,并将其配置到系统路径中。在打开打印预览之前,我们可以设置一些打印选项,例如页面大小、页边距等。在打开网页后,我们可以通过Selenium库来模拟用户操作,从而进行打印预览。这段代码创建了一个Chrome浏览器实例,后续我们将通过这个实例进行浏览器操作。

2401_84141210的博客 822

基于Python的校园预约打印网站的实现

的校园预约打印网站的实现。

liudefang的专栏 768

python网络爬虫-采集整个网站

介绍了整个网络爬虫的设计和编写方式

wanght89的专栏 7411

利用Python本地搭建自助打印网站

该打印程序操作简单,后续可以通过内网穿透达到外网打印。但是只能满足基础功能,各位开发者可以结合自己需要对此改进。

qq_56111476的博客 1106

使用Flask在HTML页面中打印文本文件数据

在Flask中,我们可以使用Python或JavaScript来将文本文件中的数据打印到HTML页面上。在index.html中,我们可以使用Flask提供的模板语法来显示数据。在上面的代码中,我们打开一个名为data.txt的文本文件,并将文件内容读取为data变量。在安装完Flask后,我们可以开始创建Flask应用程序。在Flask中,我们可以使用路由来定义URL和视图函数之间的映射关系。在上面的HTML模板中,我们使用双花括号({{ data }})来显示从Python代码中传递的数据。

RfqrScheme的博客 332

python 调用IEHtmlWindow打印网页

NULL 博文链接:https://emonkey.iteye.com/blog/1541859

使用 python 初始化和打印多个数据列表

通过这篇博客文章,你学会了如何使用 Python 初始化和打印多个数据列表。我们创建了九个数据列表,每个列表包含 15 个初始值为 0 的元素,并使用print函数将这些列表的内容打印出来。你可以根据需要修改和扩展这些列表,以实现更多的功能。希望这个详细的讲解对你有所帮助!如果你有任何问题或需要进一步的帮助,请随时告诉我。

m0_74972192的博客 4434

A2B音频总线在智能座舱中的应用

车载A2B链路音频是智能座舱的核心功能,涵盖车载音响、语音识别、e-Call、消噪及回声消除等应用,随着汽车智能网联化的发展,对音频的开发要求也越来越高,需要加入更先进、功能丰富的信息娱乐功能以满足消费者的用户体验。但传统的模拟并行音频信号传输方式,难以在功能增加与整车轻量化(线缆的重量及成本减少)之间取得均衡。这时候就需要A2B音频总线了。A2B音频总线用于连接车辆中的音频设备,如麦克风(MIC)、功放(AMP)、多媒体主机(Head Unit)和T-BOX等。通过一条低成本的非屏蔽双绞线UTP,进行跨距

怿星科技的博客 3934

Python Selenium 浏览器打印预览

在Web开发中,打印预览是一个常见的功能需求。通过打印预览,我们可以预览和调整网页的打印布局、样式和内容。Python的Selenium库是一个强大的工具,可以自动化浏览器操作,包括打印预览。本文将介绍如何使用Python Selenium库来实现浏览器的打印预览功能。

m0_70669463的博客 1049

SpringAi 通过大模型来实现调用自己的Api

摘要 本文介绍了如何利用Spring AI的Tools机制扩展大模型能力,实现业务系统集成。通过@Tool和@ToolParam注解定义工具方法,将订单查询和关闭功能暴露给大模型调用。关键实现包括:1)使用详细描述标注工具方法和参数;2)在ChatClient中注册工具服务;3)集成对话记忆保持上下文。该方法使AI具备操作业务系统的能力,形成"认知-决策-执行"闭环,大幅提升了模型在实际业务场景中的应用价值。

又要搬砖了 836

第10章:位同步与Gardner环路(1)

第10章(1)内容如下:一、位同步与载波同步的区别1、采样时钟相位偏差的影响2、采样时钟频率偏差的影响二、Gardner环路算法与插值方法1、插值滤波器2、Gardner误差检查算法三、Gardner环路中环路滤波器与数字振荡器设计1、环路滤波器2、数控振荡器(NCO)四、Gardner环路的可运行MATLAB代码五、参考资料六、致谢 最近搞懂了Gardner环路的一些知识,于是更新第10章——位同步。 如果你稍不留意的话,这可能是你在网上能看到的介绍Gardner环路及其MATLAB仿真最详细的一篇文章了

weixin_44283855的博客 1万+

python做的网站有哪些,用python编写的网站

随着科技的进步,社会逐渐进入智能化时代,编程语言也逐渐成为一个重要的工具。掌握编程语言不仅能够拓展自身获取信息的渠道和能力python打印皮卡丘。同时也可以在一定程度上扩展自身的能力边界,在智能化时代这一点将体现的越来越明显。所以掌握一门编程语言还是很有必要的。而Python语言由于简单易学,在最近这几年获得了大量的关注,导致很多人都会选择学习Python。但在学习Python动辄上万的学费面前, 很多朋友都选择先尝试自学。那自学Python有哪些好网站推荐呢?

M3666789的博客 888

海思SD3403/SS928开发(二)环境搭建:从零到一构建高效开发环境的实战指南

本文详细介绍了海思SD3403/SS928开发板环境搭建的全流程,包括Ubuntu系统选择、基础配置、开发环境依赖安装、SDK工具链配置等关键步骤。通过实战经验分享,帮助开发者避免常见问题,快速构建高效开发环境,提升开发效率。

weixin_28717683的博客 284

爬虫实践】使用Python从网站抓取数据

本周我不得不为客户抓取一个网站。我意识到我做得如此自然和迅速,分享它会很有用,这样你也可以掌握这门艺术。【免责声明:本文展示了我的抓取做法,如果您有更多相关做法请在评论中分享】1.确定您的目标:一个简单的 html 网站2.在 Python 中设计抓取方案3. 跑起代码,让魔术运转您需要多少时间来抓取网站?从业者需要~10分钟为一个简单的html网站准备Python脚本。就我而言,我需要从 SWIFT 代码(或法国 BIC 代码)中收集银行名称。

2301_82041400的博客 1601

Aitoearn内容营销的最佳开源 AI 代理,创建 · 发布 · 互动 · 副业一站式平台,支持渠道:抖音、小红书(红点)、微信通道、快手、哔哩哔哩、微信公众号、抖音等等

Aitoearn内容营销的最佳开源 AI 代理,创建 · 发布 · 互动 · 副业一站式平台,支持渠道:抖音、小红书(红点)、微信通道、快手、哔哩哔哩、微信公众号、抖音等等

struggle2025的博客 1749

14、改进的目标检测与图像去模糊算法研究

本文研究了改进的目标检测与图像去模糊算法。改进的YOLOv5s算法在目标检测中通过添加PSA模块和VoVGSCSP结构,在轻量化模型的同时提高了检测的准确性和速度,适用于电力操作安全穿戴设备检测等场景。XT-GAN结合Transformer和生成对抗网络,在图像去模糊任务中有效解决了传统方法的不足,具有更低的计算复杂度和良好的鲁棒性。两种算法为计算机视觉领域的相关任务提供了更高效、准确的解决方案。

c7d8e的博客 214

python的竖向打印输出代码_Python调用Windows命令打印文件

1、Python调用Windows命令打印文件Windows命令行打印文件使用print 命令,具体用法可使用help print查看。下面是使用Python调用print指令执行打印文件功能的代码:import osdef printer(filename):printername = r"/D:A340hpLaser"cmd = "print " + printername + " " + f...

weixin_39714383的博客 766

016、自动标注方案实战:用大模型(SAM/Grounding DINO)生成 YOLO 格式伪标签

本文介绍了一种利用大模型自动生成YOLO格式伪标签的实战方案。针对传统人工标注效率低、易出错的问题,作者提出结合Grounding DINO(零样本检测)和SAM(精细分割)的优势:前者快速生成候选框,后者优化边界精度。文章详细阐述了技术选型理由(平衡速度与精度)、环境搭建避坑指南(关键依赖版本)、核心三步流程(检测-分割-格式转换)以及后处理技巧(置信度分级过滤)。实验表明,该方案相比纯人工标注可节省80%时间,且经过SAM优化的边界框精度提升10-15%。特别强调了工程细节:文本描述格式、阈值设定、小目

zzfmlxs的博客 544

python遇到打印异常怎么办?

Python中遇到打印异常的处理方法

python03012的博客 901

SAP SD模块定价过程后台配置简介

只有手工输入定价时(例如,在定价中的定价浏览屏幕中),或者只有从外部处理转移这些定价时(例如,成本核算),才将这些定价包括在确定(价格确定、输出确定,批次确定)之中。定价过程的定义和分配是SD模块中最核心的配置,包含了条件表、条件类型、存取顺序、发票类型、客户定价过程等,确定了销售订单已什么价格销售、税率、附加折扣等多个条件行程有一个定价过程。12、小计:记录该条件类型在VBAP表中是否存储,以及其后续用途,如记入信贷,占用信贷额度,记入成本等,如果需要金额暂用信贷额度的话,在小计这里选择A即可。

我小时候很黑的博客 3782

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: qq一笔画红包 的c语言解决方法(改)
下一篇: Scala天天酷跑小游戏
eu_zero
博客等级 码龄7年 43粉丝 9原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值