分享一个PDF打印控件

控件CLSID

A04AC669-CB70-4E8B-9CC0-9B73FC153784

功能描述

自己写的一个控件,某人寿公司的需求,可惜最后没用到。

需求如下:

1、给你一个一个PDF文档,让你打印该文档,且不同页从打印机的不同纸盒出纸(需求真是千奇百怪)。

接口如下:

/************************************************/
//发送打印任务到打印队列
//参数:   strPath->  文件路径
//      pageFrom-> 打印开始页
//      pageTo->   打印结束页
//      nBoxNo->  打印机纸盒编号
/************************************************/
void SendPrintData(BSTR strPath, LONG pageFrom, LONG pageTo, SHORT nBoxNo);

/************************************************/
//设置打印机
//参数:   paperType->  纸张类型(例如:A4)
//      paperDirection-> 纸张方向(横向:1,纵向:2)
//      nCopies->   打印份数
//      bDuplex->  是否双面打印
/************************************************/
SHORT SetPrint(BSTR paperType,SHORT paperDirection, SHORT nCopies, SHORT bDuplex);

/************************************************/
//打印打印队列中的所有任务
/************************************************/
void PrintAll();

源码地址

http://download.csdn.net/detail/wu_tongyu/9516112

测试程序

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> PDF打印测试 </title>
 </head>

<script type="text/javascript">
    function handleFIles(files)
    {
        var file = files[0];
        var fd = document.getElementById("file");
        //alert(fd.value);
    }

    function SendData()
    {
        var sPath = document.getElementById("path").value;

        var from = parseInt(document.getElementById("from").value);
        var to = parseInt(document.getElementById("to").value);
        var boxno = parseInt(document.getElementById("boxno").value);

        var ocx = document.getElementById("PdfPrinterOCX");
        ocx.SendPrintData(sPath,from,to,boxno);
    }

    function Print()
    {
        var ocx = document.getElementById("PdfPrinterOCX");
        ocx.PrintAll();
    }

    function PrintDefault()
    {
        var strPath = document.getElementById("path").value;
        //var szPath = strPath.replace(/\\+/,"\\\\");
        //alert(szPath);
        var ocx = document.getElementById("PdfPrinterOCX");
        ocx.PrintByDefault(strPath);
    }

    function SelectFile()
    {
        try
        {
            var Message = "\u8bf7\u9009\u62e9\u6587\u4ef6\u5939"; //选择框提示信息
            var Shell = new ActiveXObject("Shell.Application");
            var Folder = Shell.BrowseForFolder(0, Message, 64, 17); //起始目录为:我的电脑
            //var Folder = Shell.BrowseForFolder(0, Message, 0); //起始目录为:桌面
            if (Folder != null) {
                Folder = Folder.items(); // 返回 FolderItems 对象
                Folder = Folder.item(); // 返回 Folderitem 对象
                Folder = Folder.Path; // 返回路径
                if (Folder.charAt(Folder.length - 1) != "\\") {
                    Folder = Folder + "\\";
                }
                document.getElementById(path).value = Folder;
                return Folder;
            }
        }
        catch (e) {
            alert(e.message);
        }
    }
</script>
 <body>
    <OBJECT ID="PdfPrinterOCX" CLASSID="clsid:A04AC669-CB70-4E8B-9CC0-9B73FC153784"></OBJECT>
    <!-- 路径编码方式好像有问题

    <div style="margin-bottom:30px">
        <p>请选择PDF文件:</p>
        <input type="file" id="file" onchange="handleFIles(this.files)"/>
    </div>
    -->

    <table>
        <tr>
            <td>输入PDF文件路径:</td>
            <td><input type="input" id="path" value="c:\\test.pdf"/></td>
        </tr>
        <tr>
            <td>输入打印起始页:</td>
            <td><input type="input" id="from"/></td>
        </tr>
        <tr>
            <td>输入打印终止页:</td>
            <td><input type="input" id="to"/></td>
        </tr>
        <tr>
            <td>输入出纸盒编号:</td>
            <td><input type="input" id="boxno"/></td>
        </tr>
    <table>

    <div style="margin:10px">
        <input type="button" onclick="SendData()" value="发送打印数据"/>
        <input type="button" onclick="Print()" value="打    印"/>
        <input type="button" onclick="PrintDefault()" value="自动选择纸盒打印"/>
    </div>
 </body>
</html>
时间: 2024-08-30 04:16:36

分享一个PDF打印控件的相关文章

在.net Core 使用PDF模板文件生成PDF文件,代替WEB打印控件!

这几天找WEB打印控件,要么收费的,要么免费的只能在IE里用! 我只想简单的打个标签纸!百度2天,看到一老兄说可以用PDF,然后又开始百度..找到了一篇文章 http://www.jianshu.com/p/d518d0988621    本文代码全部摘抄至这篇文章,发文只为记录! 不同的是我导入的库是iTextSharp.LGPLv2.Core.Fix 开始 一.先用word制作好模板文件,标签打印的话注意页边距,然后另存为PDF格式文件 二.然后下载adobe acrobat pro,创建时

分享免费的web打印控件puzu

在WEB系统中,打印的确是个烦人的问题----特别是你的应用环境又有很多种类的打印机.如果自己开发打印控件,可能因为项目时间紧而来不及.前段时间有机会接触了一下WEB打印.在博客园.CSDN以及各个论坛上找了老半天,终于顺利的完成了公司项目.现在就结合我的应用体验,将市面上的所有的免费打印控件为大家做一个介绍. 1. DLPrinter 这个打印控件完全免费,界面还不错,使用也较为简单,支持打印预览.直接打印.可设置页眉.页脚.页边距.打印份数.纸张大小等信息,悲剧的是这大哥在07年做了第二次更

强大的PDF转换控件ActivePDF WebGrabber

ActivePDF WebGrabber控件是一款功能强大的PDF转换控件,可以把HTML或者URL转换为PDF,利用强健的页面布局控件,全面支持Flash转换,产生安全的.可打印的PDF文件. 具体功能: 动态HTML到PDF转换 无论是来自任意源的HTML文档,无论是CGI脚本文件,Asp.Jsp或者无格式HTML文件,activePDF WebGrabber都可以进行PDF转换,没有任何区别.通过activePDF WebGrabber,您可以加载URL地址.本地磁盘甚至是内存中的HTML

WEB免费打印控件推荐

本人转载:http://www.cnblogs.com/panshenglu/archive/2009/09/21/1571258.html 在WEB系统中,打印的确是个烦人的问题. 要么自己开发打印控件,如果项目时间紧,肯定来不及. 要么购买成熟的打印控件,如果是大项目可以考虑,但如果项目只有几K到1.2W之间,这就麻烦了. 前段时间有机会接触了一下WEB打印.在博客园.CSDN上找了老半天,终于,功夫不付有心人,终于找到了. 现在就推荐给大家分享. 1.  DLPrinter DLPrint

网页WEB打印控件制作-开放源码

在WEB系统中,打印的确是比较烦人的问题,如果我们能制作一个属于自己的自定义的打印插件,那么我们在后续自定义打印的时候能随心所欲的控制打印,这样的效果对于程序员来说是非常开心的一件事件,本文将自己开发编写的C# 制作的HTML打印插件分享出来,让有同样需求的朋友提供一个参考:此插件是基于Microsoft .NET Framework 2.0 开发的,缺点是每台客户端在安装插件时,必须要安装Microsoft .NET Framework 2.0 :本插件能实现 页眉.页脚.表头.标题.表尾的分

如何用 Swift 语言构建一个自定控件

(via:破船之家,原文:How To Make a Custom Control in Swift) 用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它们与应用程序进行交互.苹果提供了一套控件, 例如 UITextField,UIButton,UISwitch.通过工具箱中的这些已有控件,我们可以创建各式各样的用户界面. 然而,有时候你希望界面做得稍微的与众不同,那么此时苹果提供的这些控件就无法满足你的需求. 自定义控件,除了是自己构建二外,与苹果提供

网页WEB打印控件制作 开放源码可以调试

在WEB系统中,打印的确是比较烦人的问题,如果我们能制作一个属于自己的自定义的打印插件,那么我们在后续自定义打印的时候能随心所欲的控制打印,这样的效果对于程序员来说是非常开心的一件事件,本文将自己开发编写的C# 制作的HTML打印插件分享出来,让有同样需求的朋友提供一个参考:此插件是基于Microsoft .NET Framework 2.0 开发的,缺点是每台客户端在安装插件时,必须要安装Microsoft .NET Framework 2.0 :本插件能实现 页眉.页脚.表头.标题.表尾的分

网页WEB打印控件制作

在WEB系统中,打印的确是比较烦人的问题,如果我们能制作一个属于自己的自定义的打印插件,那么我们在后续自定义打印的时候能随心所欲的控制打印,这样的效果对于程序员来说是非常开心的一件事件,本文将自己开发编写的C# 制作的HTML打印插件分享出来,让有同样需求的朋友提供一个参考:此插件是基于Microsoft .NET Framework 2.0 开发的,缺点是每台客户端在安装插件时,必须要安装Microsoft .NET Framework 2.0 :本插件能实现 页眉.页脚.表头.标题.表尾的分

分享一个自定义打印套打方案(二),扩展Panel,以支持鼠标随意拖动

接上一章节,本篇主要介绍一种支持鼠标随意拖动Panel内部控件位置的方法.为了简单起见,这里我们不妨就暂称我们将要扩展的Panel容器名称为 MoveControlPanel,该容器至少需要实现以下功能 1. 识别当前鼠标位置,是否处于某个内部组件的边框位置,以让鼠标显示出对应的图标(拉伸,移动-) 2.移动鼠标以改变内部某个组件的大小及坐标, 3.保存容器内每个组件的当前坐标及大小. 为了便于描述当前光标状态,我们不妨定义一个枚举.姑且称其为 EMousePointPosition, 其至少应