精华内容
下载资源
问答
  • Python:print打印进度条
    千次阅读
    2020-01-28 10:47:35

    原文地址

    参考文献

    Python:print()

    • 一个最简单的实现[ 198 / 198]
    import time
    
    def bar(now, total):
        print('\r[ %d / %d]' % (now, total), end='')
        # print('\r[ {} / {}]'.format(now, total), end='')	# 另一种格式化输出的写法
        
    all = 198
    for i in range(all):  # i属于[0, total)
        bar(i+1, all)
        time.sleep(0.005)	# 为了更好的观察效果,稍微延时一下
        
    # Output:
    # [ 198 / 198]
    

    其中

    \r表示print的时候,从行首开始打印

    end=''指定print()方法以空字符结尾,默认是换行符

    • 加一个前置说明progress:[ 198 / 198]

    进度条之前通常会加一个前置说明,诸如‘完成进度’之类的,在上面的代码中,如果在bar()方法之外,会发现怎么加都不合适,都会破坏在单行内打印进度条的效果。这就是因为print()中\r的存在,但是它又是必要的。最后我把这个前置说明封装在了bar()方法的参数列表中,将这个说明拼接进print()语句,就能很好的显示了。

    def bar(now, total, prefix='progress:'):
        print('\r'+prefix+'[ %d / %d]' % (now , total), end='')
        # print('\r'+prefix+'[ {} / {}]'.format(now, total), end='')	# 另一种格式化输出的写法
    
    • 百分比进度progress:[ 100.00% ]
    def bar2(now, total, prefix='progress:'):
        print('\r'+prefix+'[ %.2f%% ]' % (now / total * 100), end='')
    
    • 进度条progress: 70.71% [>>>>>>>>>>>>>>>>>>>>>--------]

    要打印进度条,我有给bar方法加了一个length的参数,为的是能控制进度条的总长度

    def bar3(now, total, length=30, prefix='progress:'):
        print('\r'+prefix+' %.2f%%\t' % (now / total * 100), end='')
        print('['+'>'*int(i/total*length)+'-'*int(length-i/total*length)+']', end='')
    

    其中str*int的操作,举个例子来说明

    print('>'*6)	# 结果就是'>>>>>>'
    
    Output
    >>>>>>
    
    • 完整代码
    import time
    
    def bar(now, total):
        print('\r[ %d / %d]' % (now, total), end='')
        # print('\r[ {} / {}]'.format(now, total), end='')
    
    # progress:[127 / 300]
    def bar1(now, total, prefix='progress:'):
        print('\r'+prefix+'[ %d / %d]' % (now , total), end='')
        # print('\r'+prefix+'[ {} / {}]'.format(now, total), end='')
    
    # progress:[32.38%]
    def bar2(now, total, prefix='progress:'):
        print('\r'+prefix+'[ %.2f%% ]' % (now / total * 100), end='')
    
    # progress: 70.71%	[>>>>>>>>>>>>>>>>>>>>>--------]
    def bar3(now, total, length=30, prefix='progress:'):
        print('\r'+prefix+' %.2f%%\t' % (now / total * 100), end='')
        print('['+'>'*int(i/total*length)+'-'*int(length-i/total*length)+']', end='')
    
    if __name__ == '__main__':
        all = 198
    
        for i in range(all):  # i属于[0, all),所以要在bar中传参i+1而不是i
            # bar(i+1, all)
            # bar1(i+1, all)
            # bar2(i+1, all)
            bar3(i+1, all, 60, '进度:')
            time.sleep(0.005)   # 为了更好的观察效果,稍微延时一下
    
    更多相关内容
  • jquery print 打印 插件 打印预览 超级实用!
  • window.print打印pdf

    千次阅读 2020-05-15 23:35:00
      前端打印pdf就是使用原生的window.print()方法实现,这里有几个问题你会遇到。 打印纸张大小,不同纸张大小,你需要相应调整表格宽度和最大分页高度 分页时机,不适当的话会导致表格跨页分断 背景色打印,这个...

    1、前言

      前端打印pdf就是使用原生的window.print()方法实现,这里有几个问题你会遇到。

    • 打印纸张大小,不同纸张大小,你需要相应调整表格宽度和最大分页高度
    • 分页时机,不适当的话会导致表格跨页分断
    • 背景色打印,这个是不能设置的,但是通过css属性可以实现
    • 打印时的css设置

    前端环境:vue+element ui

    2、代码实例

    <template>
        <div>
            <div id="toolBox">
                <div class="toolBox">
                    <el-button type="primary" plain size="small" style="margin-top: 20px;width: 130px;" @click="saveAsPdf">
                        打印PDF
                    </el-button>
                </div>
            </div>
            <div :id="tableConfig.pdfId" :class="tableConfig.pdfClass" v-for="(tableConfig,configIndex) in tableConfigList"
                 :key="configIndex">
                <div class="thisPage">
                    <h1 style="text-align: center">window.print方法demo</h1>
                </div>
                <div class="thisPage" v-for="(data,index) in dataList" :key="index" :style="tableConfig.tableStyle">
                    <el-table :data="data" :header-cell-style="tableHeader" border>
                        <el-table-column column-key="col1_" prop="col1_" label="第一列"></el-table-column>
                        <el-table-column column-key="col2_" prop="col2_" label="第二列"></el-table-column>
                        <el-table-column column-key="col3_" prop="col3_" label="第三列"></el-table-column>
                        <el-table-column column-key="col4_" prop="col4_" label="第四列"></el-table-column>
                        <el-table-column column-key="col5_" prop="col5_" label="第五列"></el-table-column>
                    </el-table>
                    <el-divider></el-divider>
                </div>
            </div>
        </div>
    </template>
    
    <script>
        export default {
            name: 'windowPrint',
            data() {
                return {
                    data: {
                        col1_: '',
                        col2_: '',
                        col3_: '',
                        col4_: '',
                        col5_: ''
                    },
                    dataList: [],
                    tableHeader: {
                        'color': 'aliceblue',
                        'background-color': 'slateblue'
                    },
                    tableConfigList: [{
                        pdfId: 'comment_report',
                        pdfClass: '',
                        tableStyle: `'100%'`
                    }, {
                        pdfId: 'print_report',
                        pdfClass: 'comment_hide',
                        tableStyle: `width:1100px;`
                    }]
                }
            }, methods: {
                getData() {
                    let keys = Object.keys(this.data);
                    let size = 35;
                    for (let i = 0; i < size; i++) {
                        this.dataList[i] = new Array();
                        for (let j = 0; j < i; j++) {
                            let tempData = {};
                            keys.forEach(key => {
                                tempData[key] = key + i + j;
                            })
                            this.dataList[i][j] = tempData;
                        }
                    }
                    this.dataList[size] = [];
                },
                saveAsPdf() {
                    let commentReport = document.getElementById("comment_report");
                    let printReport = document.getElementById("print_report");
                    let toolBox = document.getElementById("toolBox")
                    toolBox.className = "print_hide";
                    commentReport.className = "print_hide";
                    printReport.className = "print_content";
    
                    let thisPage = printReport.querySelectorAll('.thisPage');
                    let curHeight = 0;
                    let a3PageHeight = 1558;
                    for (let item of thisPage) {
                        let contentHeight = parseInt(window.getComputedStyle(item).height)
                        if ((curHeight + contentHeight) > a3PageHeight) {
                            console.log("a page")
                            item.style.pageBreakBefore = "always";
                            // 清空
                            curHeight = 0;
                        }
                        if(contentHeight<a3PageHeight){
                            curHeight += contentHeight
                        }else {
                            curHeight = contentHeight % a3PageHeight
                        }
                        console.log("item", contentHeight, curHeight);
                    }
                    setTimeout(() => {
                            window.print();
                            toolBox.className = "toolBox";
                            printReport.className = "comment_hide";
                        }, 1000
                    )
                }
            },
            created() {
                this.getData();
            }
        }
    </script>
    
    <style scoped>
        .toolBox {
            position: fixed;
            top: 0;
            right: 0;
            width: 100%;
            height: 50px;
            line-height: 50px;
            text-align: right;
            background: rgba(0, 0, 0, 0.3);
            box-shadow: 2px 2px 3px #e4e4e4;
            z-index: 9999;
        }
    
        .toolBox .el-button {
            margin: 0;
            transform: translate(-50%, -40%);
        }
    
        @page {
            size: A3;
            margin: 0;
        }
    
        .comment_hide {
            display: none;
        }
    
        @media print {
    
            .print_hide {
                display: none;
            }
    
            .print_content {
                margin-top: 20px !important;
                -webkit-print-color-adjust: exact;
                -moz-print-color-adjust: exact;
                -ms-print-color-adjust: exact;
                print-color-adjust: exact;
            }
        }
    </style>
    

    3、代码解析

    • 背景色打印

    需要打印的内容包含在这个css属性里面的class即可

    -webkit-print-color-adjust: exact;
    -moz-print-color-adjust: exact;
    -ms-print-color-adjust: exact;
    print-color-adjust: exact;
    
    • 打印时的css设置
      @media print{}这个css里面的属性会在打印时才会运行渲染

    • 打印纸张大小

       @page {
            size: A3;
            margin: 0;
        }
    

    在@page里面可以设置纸张大小,这里设置的是A3大小,至于宽高,网页打印的宽高好像是跟屏幕有关,这里设置宽1100px刚好更我屏幕打印时的宽度相当,每页高度这里选用1558px,高度好像相对稳定。

    • 分页时机
      这里分页是根据你的控件高度计算而知的,当累计高度高于分页高度则将当前控件前插入分页符,设置方法如下:
    item.style.pageBreakBefore = "always";
    

    通过设置style为page-break-before:always实现
    ps:网上全是page-break-after:always实现的,难道page-break-before不香么

    • html结构
      1、这里是通过tableConfigList这个配置变量,控制两个大的div的id、class和table的宽度
      2、每个需要分页的控件都用class="thisPage"标记,便于查找
      3、绘制两次需要网页内容,一次是用于用户看的,一次是用于打印的隐藏内容,打印的时候,设置隐藏用户看的,显示打印的内容,实现直接打印,而不影响用于观感

    • 解析saveAsPdf方法

     	saveAsPdf() {
                    let commentReport = document.getElementById("comment_report");
                    let printReport = document.getElementById("print_report");
                    let toolBox = document.getElementById("toolBox")
                    toolBox.className = "print_hide";
                    commentReport.className = "print_hide";
                    printReport.className = "print_content";
    
                    let thisPage = printReport.querySelectorAll('.thisPage');
                    let curHeight = 0;
                    let a3PageHeight = 1558;
                    for (let item of thisPage) {
                        let contentHeight = parseInt(window.getComputedStyle(item).height)
                        if ((curHeight + contentHeight) > a3PageHeight) {
                            console.log("a page")
                            item.style.pageBreakBefore = "always";
                            // 清空
                            curHeight = 0;
                        }
                        if(contentHeight<a3PageHeight){
                            curHeight += contentHeight
                        }else {
                            curHeight = contentHeight % a3PageHeight
                        }
                        console.log("item", contentHeight, curHeight);
                    }
                    setTimeout(() => {
                            window.print();
                            toolBox.className = "toolBox";
                            printReport.className = "comment_hide";
                        }, 1000
                    )
                }
    

    1、获取用于显示的report内容和用于打印的report内容
    2、将toolBox、commentReport、printReport对应class的html元素,设置class为print时的才会渲染的class
    3、控制page-break-before:always属性的设置,当加上当前元素,超过页高度,则当前元素设置style为page-break-before:always,提示print方法这里要分页
    4、处理单页超过打印纸张大小问题,这里超过了,没有去处理,只处理了超过后下一个元素加上不超过纸张高度下,追加上下一个元素
    5、最后要设置延时,不然会渲染不足。

    在这里插入图片描述
    demo地址:https://github.com/Hitvz/pdfoutput
    参考博客:vue+element打印页面功能

    展开全文
  • Python3.8中使用print打印变量

    千次阅读 2021-07-04 18:13:32
    初学python,小记了下使用print打印单个和多个变量的常用方式。 打印单个变量 打印单个变量直接用print进行输出即可。 name = "张三" age = 24 money = 24.5 """ 打印单个变量print(value) """ def test01(): ...

    写代码自测时,经常会打印变量的值进行自测。初学python,小记了下使用print打印单个和多个变量的常用方式。

    打印单个变量

    打印单个变量直接用print进行输出即可。

    name = "张三"
    age = 24
    money = 24.5
    
    """
    打印单个变量print(value)
    """
    def test01():
        print("姓名:", name)
        print("年龄:", age)
        print("零用钱:", money)
    
    

    打印多个变量

    方式一:字符串前面加f,使用{}来包裹变量,推荐
    方式二:使用format格式化输出
    方式三:使用%格式符格式化输出

    name = "张三"
    age = 24
    money = 24.5
    
    """
    python3.6后支持在字符串前面加f,变量用{}包裹起来
    推荐,可读性好。
    """
    def test02():
        print(f"姓名:{name},年龄:{age},零用钱:{money}")
    
    """
    用逗号分隔开来多个变量
    """
    def test03():
        print("姓名:",name,"年龄:",age,"零用钱:",money)
    
    
    """
    使用format方法
    """
    def test04():
        print("姓名:{},年龄:{},零用钱:{}".format(name,age,money))
        print("姓名:{0},年龄:{1},零用钱:{2}".format(name, age, money)) #{0}代表format后面对应的第一个变量
        print("姓名:{v1},年龄:{v2},零用钱:{v3}".format(v1=name, v2=age, v3=money))  # 使用显示名称
    
    """"
    使用%格式符,常见的格式符
        %s 字符串
        %d 整数
        %f 浮点数
    """
    def test05():
        print("姓名:%s,年龄:%d,零用钱:%.2f" %(name,age,money)) # %.2f表示保留两位小数
    
    test04()
    

    输出结果如下
    在这里插入图片描述

    展开全文
  • mvc条码打印(使用window.print打印条码)实例 代码: @{ Layout = "~/Views/Shared/_Layout.cshtml"; var types = ViewData["types"].ToString().Trim(); } <script src="@Url.Content("~/Areas/Area/...

    mvc条码打印(使用window.print打印条码)实例

    代码:

    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
        var types = ViewData["types"].ToString().Trim();
    }
    
    <script src="@Url.Content("~/Areas/Area/AreaScripts/PrinterInWarehouse.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Areas/Area/AreaScripts/qrcode.min.js")"></script>
    <script src="@Url.Content("~/Areas/Area/AreaScripts/qrcode.js")"></script>
    
    <script>
        $(function () {
            makeCode();
        });
        //这是二维码
        function makeCode() {
    
            var listCode1 = '@ViewData["list"]';
            var jsonString = listCode1.replace(new RegExp('&quot;', "gm"), '"')
            var data = eval('(' + jsonString + ')');
    
            for (var i = 0; i < data.listData.length; i++) {
                var ids = null
                var qrcode =null;
                if(@types=="3"){
                    ids = "qrcode'" + data.listData[i].JWBCode + "'";
                    qrcode = new QRCode(document.getElementById(ids), {
                        width: 50,
                        height: 50
                    });
                    var strCode= data.listData[i].JWBRId + "/" + data.listData[i].JWBCode + "/" + data.listData[i].JWCode;
                    qrcode.makeCode(strCode);
                }
            }
    
        }
    
        function btndy() {
            var headstr = "<html><head><title></title></head><body>";
            var footstr = "</body></html>";
            var newstr = $("#daYing").html();                   // 获取要打印的div内容
            var oldstr = document.body.innerHTML;                // 将过去的body内容存到oldstr
            document.body.innerHTML = headstr + newstr + footstr;     // 组合打印内容
            window.print.portrait = false;    //true为纵向打印,flase为横向打印
            window.print.header = "1231";       //页眉
            window.print.footer = "31";       //页脚
            window.print();                                  // 弹出打印窗体
            document.body.innerHTML = oldstr;               // 还原HTML内容
            location.reload(); //重新刷新当前窗口, 很重要. 不刷新会导致除局部之外的全失效了
            window.document.body.innerHTML = oldstr;//重新给页面内容赋值;
    
    
        }
    
    </script>
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>PrinterInWarehouse</title>
    </head>
    
    <body style="overflow: auto;">
        <input hidden id="ids" />
        <div id="divTop">
            <div id="tb" style="padding:2px 5px; background: #F4F4F4;">
                <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-print'" onclick="btndy()">打 印</a>
                @*<a href="javascript:history.go(-1)" class="easyui-linkbutton" data-options="iconCls:'icon-back'">返 回</a>*@
            </div>
        </div>
        <div id="dy">
            @if (types == "3")
            {
                var data = ViewData["part"] as List<XYWMS.EF.ENTITY.VJWhsBinRela_JWarehouse>;
                if (data.Count == 0)
                {
    
                    <div id="isYing" style="color:red;font-size:35px;">还没有录入数据</div>
                }
                else
                {
                    <div id="daYing">
    
                        @foreach (var item in data)
                        {
                            <table style="border:1px inset black;margin-top:10px;margin-bottom:10px;width:auto" height="280">
                                <tr>
                                    <td>
                                        <div style="width:275px;border-bottom: inset 1px black;height:30px;">
                                            <div>库位编码:@item.JWBCode</div>
                                        </div>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        <div style="width:275px;border-bottom: inset 1px black;height:30px;">
                                            <div>仓库编码:@item.JWCode</div>
                                        </div>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        <div style="width:275px;border-bottom: inset 1px black;height:30px;">
                                            <div>仓库名称:@item.JWName</div>
                                        </div>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        <div style="width:275px;height:55px;line-height:11px;">
                                            <div id="qrcode'@item.JWBCode'" style="width:55px; height:55px; position:absolute; left:210px;"></div>
                                        </div>
                                    </td>
                                </tr>
                            </table>
                            <div style="height:5px;"></div>
                        }
                    </div>
                }
            }
        </div>
    </body>
    
    </html>
    
    

    改一下数据源就直接可以使用(或者赋静态值)

    效果如下:
    在这里插入图片描述

    展开全文
  • 【Go基础】常用的print打印

    千次阅读 2021-08-08 14:04:15
    常用的print打印 常用的print打印 定义枚举 相关资料 定义枚举 Printf需要自己指定格式化 Println会按照默认的值表示方法打印并且输出一个换行 示例一: import "fmt" func main() { var a, b, c = ...
  • react-to-print 打印

    千次阅读 2021-03-03 16:52:02
    npm install --save react-to-print 2 引用 import ReactToPrint from 'react-to-print'; 3 调用 //触发按钮 <ReactToPrint trigger={() => <a href="#">点此打印</a>} content={() => this...
  • Vue中的v-print打印不完全问题

    千次阅读 2021-03-10 11:41:39
    打印页面用的是v-print <el-button type="danger" class="no-print" round v-print="'#printDiv'"> 打印 </el-button> 给要打印的区域加上id 仅仅这样写会出现打印不完全 需要给打印区域加上样式 <...
  • print打印的内容保存到日志

    万次阅读 2021-07-20 10:55:29
    def make_print_to_file(path='./'): # path, it is a path for save your log about fuction print import os import sys import datetime if not os.path.exists(path): os.makedirs(path) class Logger...
  • 使用css的@page可设置, 纵向: @page { size: portrait; } 横向: @page { size: landscape; }
  • 接你要打印的文本>\033[显示方式;字体色;背景色m 字体色 背景色 颜色描述 显示方式 30 40 黑 0:终端默认设置 31 41 红 1:高亮显示 32 42 绿 4:使用下划线 33 ...
  • Vue中使用v-print打印出现空白页

    千次阅读 2020-05-26 20:33:58
    本人最近做项目时遇到打印出现空白页的问题,查阅资料后找到解决办法,方便同行们快速解决问题。 1.解决办法:在css中加入 "body{ height:auto; }" 即可解决问题。
  • js window.print打印页面缩放

    千次阅读 2020-08-12 11:12:40
    javascirpt``` document.getElementsByTagName(‘body’)[0].style.zoom=0.8;
  • 使用window.print打印的注意点

    千次阅读 2019-06-13 13:56:38
    有时我们只需要打印页面的一些区域,我的做法是将不打印的区域元素隐藏,打印区域的元素显示,如下 function printTest() { if(!$('.img1 img').attr('src')||!$('.img2 img').attr('src')){ layer.msg('请等待...
  • python中print打印显示颜色

    万次阅读 2019-09-15 22:56:28
    print ( 'This is a \033[1;35m test \033[0m!' ) print ( 'This is a \033[1;32;43m test \033[0m!' ) print ( '\033[1;33;44mThis is a test !\033[0m' ) 效果图: 本文转载至 :...
  • python print 打印不使用省略号

    千次阅读 2020-07-28 01:08:31
    import tensorflow as tf import os import numpy as np np.set_printoptions(threshold=np.inf) # threshold 指定超过多少使用省略号,np.inf代表无限大
  • python3 将print打印的内容保存到日志

    千次阅读 2019-09-16 14:31:46
    python3将print打印的内容保存到日志中,后面可以不断的查阅输出的内容 而不需要每一次都要重新运行一下程序 def make_print_to_file(path='./'): ''' path, it is a path for save your log about fuction ...
  • 1)谷歌可用:(IE8,弹出打印窗体后,但原窗体内容,会变成空白) function applyPrint(){ if(!confirm('确定要打印吗?')){ return; } var headstr ="<html><head><title>招聘...
  • Python基础之print打印有颜色的字体

    千次阅读 2018-11-16 13:09:16
    接你要打印的文本&gt; \033[显示方式;字体色;背景色m 字体色 背景色 颜色描述 显示方式 30 40 黑 0:终端默认设置 31 41 红 1:高亮显示 32 42 绿 4:使用下划线 ...
  • window自带print打印设置

    万次阅读 2018-05-15 11:00:55
    window自带一个打印方法 print(); 默认打印页面中body里的所有内容1,给打印按钮绑定一个onclick=“print()‘’ 方法;在script里写上这个方法function print(){window.print(); //打印方法}2.用println()方法...
  • 搞了不知道多久,终于找到问题所在,print函数在打印bytes类型数据的时候会对其进行转移,参考https://blog.csdn.net/weixin_42453126/article/details/104768049 python3打印bytes类型数据: x = b'\x37\x43\x48' ...
  • 刚开始使用Scrapy时,使用print打印内容时,cmd终端始终打印不出来内容,最后解决办法, 在settings.py中把ROBOTSTXT_OBEY设置为false ROBOTSTXT_OBEY = False
  • python中print打印输出格式的有关问题

    千次阅读 2020-01-04 16:45:04
    %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符 ...>>>print("%+10x" % 10) # %x...print ("I'm %(c)s. I have %(l)d yuan." % {'c':'hungry','l':22}) I'm hungry. I have 22 yuan.
  • python print打印中文

    千次阅读 2018-05-11 23:50:54
    #! /usr/bin/env python ...print sys.getdefaultencoding() a="测试" b=u"测试" print a.decode('utf-8').encode('cp936') print a.decode('utf-8').encode('gb2312') print b.en...
  • python win32print打印

    千次阅读 2018-06-06 11:04:00
    pip install pywin32import win32print import win32api for fn in ['1.txt', '2.txt', '3.txt', '4.docx']: win32api.ShellExecute(0,\ 'print',\ fn,\ ...
  • Python要从键盘连续输入一...’)相对应) 演示: str = input('以空格为间隔连续输入一个数组:') list1= [int(n) for n in str.split()] print(list1) 输出: 以空格为间隔连续输入一个数组:1 2 5 8 1 [1, 2, 5, 8, 1]
  • ____tz_zs set_printoptions ...np.set_printoptions 设置打印选项,这些选项决定显示浮点数、数组和其他NumPy对象的方式。 numpy.set_printoptions(precision=None,   threshold=None,   edgeitems...
  • 在学习python以及在使用python进行项目开发的过程中,经常会使用print语句打印一些调试信息,这些调试信息中往往会包含中文,如果你使用python版本是python2.7,或许你也会遇到和我一样的问题:那就是print打印中文...
  • 之前上Workshop的时候,被VBA小小的虐了一下,之前感觉很简单的东西,过了很久使用不熟练就会忘记,然后就被...写这个总结是因为在基础的打印的时候,突然想起是不是可以用C里面的格式化打印,查了一下果然从C里借用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 939,116
精华内容 375,646
关键字:

print打印

友情链接: chepaijingzhundingwei.rar