优道PDF阅读控件(UUDoc PDF Control)是一款支持反截屏功能的PDF文档数字版权保护控件,同时支持对PDF和XPS文档的在线加密保护,通过简单的属性设置即可完成对文档的复制、打印和截图授权。控件支持内存方式加载文档和加密传输方式远程加载文档,控件小巧可独立运行,不需要另外再安装其它庞大的PDF阅读器。
控件采用ActiveX技术进行开发,自带有换页、查找、缩放、拖拽、旋转、适应页面、适应页宽等常用文档浏览器的功能,可以轻松的嵌入到各类网站、Web应用系统和桌面应用程序当中,能有效的和您目前的应用进行无缝集成,给您最强有力的文档阅读和数字版权保护功能支持。
服务器端:支持Windows和Linux操作系统,支持任何的服务器编程语言,例如asp,asp.net,php,java,python,ruby等
控件客户端支持的操作系统:WindowsXP/2003/2008/Vista/Win7
支持32位及64位操作系统
支持启用ActiveX功能的IE浏览器进行浏览
您可以参考我们提供的演示文件在网页中嵌入优道PDF阅读控件:
控件的PlogId为:UdPdf.Viewer.1
控件的ClassId为:8C3D3705-1100-4D52-9D04-7E9A435CE220
<object id="pdfCtl" width="90%" height="500"
classid="CLSID:8C3D3705-1100-4D52-9D04-7E9A435CE220"
codebase="UdPdfDown.exe#version=1,7,0,0">
<param name="License" value="" />
<param name="FileId" value="0" />
<param name="Encryped" value="1" />
<param name="HashKey" value="3CE59E850E2C590AFD6E4D3516BA3F1B" />
<a href="UdPdfSetup.exe">请先安装优道PDF阅读控件</a>
</object>
其中UdPdfDown.exe为控件的自动下载程序(从www.uudoc.com下载),UdPdfSetup.exe为控件的安装程序。
判断控件是否安装:
<script type="text/javascript">
window.onload = function(){
var obj;
try{
obj=new ActiveXObject("UdPdf.Viewer.1");
}catch(e){}
if(obj == null){
alert("PDF控件没有安装,确定后转到安装界面")
location.href="install.htm"
}
else
alert("PDF控件已经安装了");
}
</script>
属性的设置示例:
<script type="text/javascript">
//根据复选框判断是否显示工具条
function f_toolbarVisible() {
document.getElementById("pdfCtl").ToolbarVisible
= document.getElementById("chkToolbarVisible").checked
}
</script>
方法的调用示例
<script type="text/javascript">
//放大操作
function f_zoomIn() {
document.getElementById("pdfCtl").ZoomIn();
}
</script>
事件的捕捉示例:
<script type="text/javascript" event="OnReady()" for="pdfCtl">
document.getElementById("info").innerHTML = "OnReady事件,文档加载完成"
</script>
使用优道科技提供的文档加密工具UdPdfTools.exe对文档进行加密,加密后的文件会在原扩展名前加上en前缀。加密工具支持命令行方式。
加密时可以指定加密密码,加密后需要将密码的哈希值填写到控件的HashKey参数当中
将加密后的文件上传到服务器上,在控件页面根据所传递的参数将需要的加密文件读取并进行输出
若不想别人通过页面获取到参数的配置情况,可以使用此工具对属性配置内容进行加密,原配置字符串使用"&"分隔的键值对格式,多个参数之间使用"|"进行分隔,支持相应的属性或方法名称
也可在服务器上调用加密命令行工具直接完成普通文档文件到加密文件的转换,命令行使用说明:
参数说明:
-input <file> 要进行加密保护的PDF文件名
-output <folder> 指定加密后的文件输出目录
-password <password> 设置加密使用的密码,会返回加密过的哈希码,可放在PDF控件的HashKey属性当中
-encrypt <config> 创建使用"&"进行分隔的加密字符串,可用在PDF控件的EncryptConfig属性和EncryptExecute方法中使用
-help 显示UdPdfTools.exe的使用帮助信息
使用示例:
UdPdfTools -input c:\test.pdf -output "c:\hello world" -password 123abc
以下是对属性配置进行加密,加密后的字符串可以放在EncryptConfig属性当中
UdPdfTools -encrypt "EnableCopy=true&EnablePrint=false&ToolbarVisible=false"
以下是对方法进行加密,支持"|"分隔的多个参数,加密后的字符串可以用EncryptExecute(string)函数来执行
UdPdfTools -encrypt "LoadFromWeb&sample.asp|123456"
ActiveX控件的FileId会被提交回服务器,可以根据该值输出不同的文件,以下是C#的服务器ASP.NET示例代码,也可方便的用其它语言编写:
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Form["uudoc_getfile"] == "1")//如果是提交请求文件
{
//根据文件ID获取不同的加密文件或原始文件,需要根据实际情况编写自己的业务逻辑
if (Request.Form["uudoc_encrypted"] == "1")//是否使用加密读取方式
{
//读取加密过的PDF文件
Response.WriteFile(Server.MapPath("upload/" + Request.Form["uudoc_fileid"] + ".enpdf"));
}
else
{
//读取原始PDF文件
Response.WriteFile(Server.MapPath("upload/" + Request.Form["uudoc_fileid"] + ".pdf"));
}
Response.End();
}
}
提交的参数说明:
| 参数名称 | 参数说明 |
|---|---|
| uudoc_getfile | 1表示开始从后台读取文件 |
| uudoc_fileid | 文件Id值,用来判断要读取的文件名称,对应前端控件设置的FileId属性值 |
| uudoc_encrypted | 1表示采用的是加密文件读取方式 |
| 属性名称 | 类型 | 属性说明 |
|---|---|---|
| Width | 整数 | 控件区域宽度 |
| Height | 整数 | 控件区域高度 |
| License | 字符 | 获取或设置控件的注册码信息 |
| HashKey | 字符 | 获取或设置密码的MD5 Hash值,可以用UdPdfTools.exe命令行工具加-password <password>获取 |
| FileId | 字符 | 获取或设置文件的ID值,该值会提交回服务器端 |
| Encrypted | 布尔 | 获取或设置是否采用加密方式加载文档,默认为TRUE,加载加密过的文档;若设置为FALSE,则加载原始未加密的文档文件 |
| EnableCapture | 布尔 | 获取或设置是否允许进行屏幕截图,默认为TRUE |
| EnableCopy | 布尔 | 获取或设置是否允许复制文档内容,默认为TRUE |
| EnablePrint | 布尔 | 获取或设置是否允许打印文档,默认为TRUE |
| EnablePrint | 布尔 | 获取或设置是否允许打印文档,默认为TRUE |
| ToolbarVisible | 布尔 | 获取或设置是否显示文档工具栏,默认为TRUE |
| HasBookmark | 布尔 | 获取文档是否含有书签 |
| BookmarkVisible | 布尔 | 获取或设置是否显示书签栏,默认为TRUE |
| DocBgColor | 颜色 | 获取或设置文档的背景颜色 |
| ShowContextMenu | 布尔 | 获取或设置是否显示右键上下文菜单,默认为TRUE |
| TotalPage | 整数 | 只读属性,获取文档的总页码 |
| CurrentPage | 整数 | 只读属性,获取文档的当前页码 |
| DefaultZoom | 浮点 | 获取或设置文档打开时的默认缩放比例,默认为-1,表示适合内容,-2表示适合宽度,100表示实际大小显示 |
| DefaultDisplayMode | 整数 | 获取或设置文档打开时的默认显示模式,默认为0,1为单页显示,4为连续显示 |
| EncryptConfig | 字符 | 获取或设置文档打开时的加密配置字符串,加密需要使用UdPdfTools.exe命令行工具,参看UdPdfTools.exe相关说明 |
| IsReady | 布尔 | 只读属性,获取文档是否已加载完成,状态已就绪 |
| 方法名称 | 参数说明 | 方法说明 |
|---|---|---|
| void Zoom(float zoom) | zoom:缩放比例,实际大小为100.00 | 对文档进行指定比例缩放 |
| void ZoomIn() | 无 | 放大文档视图 |
| void ZoomOut() | 无 | 缩小文档视图 |
| void ZoomFitWidth() | 无 | 以适应宽度方式显示文档 |
| void ZoomFitPage() | 无 | 以适应页面大小方式显示文档 |
| void ZoomActual() | 无 | 以实际大小显示文档 |
| float GetZoom() | 无 | 获取文档的缩放比例 |
| void RotateLeft() | 无 | 左旋转90°,即逆时针旋转 |
| void RotateRight() | 无 | 右旋转90°,即顺时针旋转 |
| void FindNext(string findText) | findText:要搜索的内容 | 查找下一个字符 |
| void FindPrev(string findText) | findText:要搜索的内容 | 查找上一个字符 |
| void GoToPage() | 无 | 进行换页操作 |
| void GoToPageNo(int no) | no:要转到的页码 | 转到指定的页码 |
| void GoToNextPage() | 无 | 转到下一页 |
| void GoToPrevPage() | 无 | 转到上一页 |
| void GoToFirstPage() | 无 | 转到第一页 |
| void GoToLastPage() | 无 | 转到最后一页 |
| void ToggleFullScreen() | 无 | 全屏幕显示模式转换,进入或退出全屏状态 |
| void Print() | 无 | 打印当前文档 |
| void LoadFromWeb(string url,string password) | url:加载地址,可为空,为空表示当前页 以http开头则为绝对路径,否则为相对路径 password:PDF文件自带加密密码,可选 | 向WEB页面提交POST请求加载文档文件 提交参数为uudoc_getfile=1和uudoc_fileid |
| void LoadFromData(Byte[] pData,string password) | pData:字节数组指针 password:PDF文件自带加密密码,可选 | 从字节数组中加载文档 |
| void LoadFromFile(string fileName,string password) | fileName:文件名 password:PDF文件自带加密密码,可选 | 根据文件名加载指定文档 |
| int GetErrorCode() | 无 | 获取异常的错误码。详见错误码说明 |
| int GetFileSize() | 无 | 获取文档文件的字节大小 |
| void EncryptExecute() | 无 | 执行加密字符定义的命令,具体参见UdPdfTools.exe相关说明 |
| void Close() | 无 | 关闭打开的文档 |
| void SetWaterFont(string fontName, long fontSize,long fontColor, bool bold,bool italic, bool underline,bool strikeOut) |
fontName:字体名称 fontSize:字体大小,单位pt fontColor:字体颜色值 bold:是否粗体显示(可选) italic:是否斜体显示(可选) underline:是否添加下划线(可选) strikeOut:是否添加删除线(可选) | 设置水印文本的字体格式 |
| long AddWaterText(string text,long x,long y, long transparent,long rotate, long repeatX,long repeatY) |
text:水印文字 x:水印位置的横坐标 y:水印位置的纵坐标 transparent:透明度(0-100),100为完全透明(可选) rotate:逆时针旋转角度(可选) repeatX:横轴重复显示的间距,0不重复(可选) repeatY:纵轴重复显示的间距,0不重复(可选) | 添加文字水印,返回值为所添加水印的索引号 |
| long RemoveWaterMark(long index) | index:要删除的水印的索引号 | 删除指定的水印,成功返回0 |
| 事件名称 | 参数说明 | 事件说明 |
|---|---|---|
| OnReady() | 无 | 文档加载完成触发该事件 |
| OnDownload(int totalSize,int downSize) | totalSize:总共要下载的文件大小;downSize:已经下载的字节大小 | 文档下载过程中触发该事件 |
| OnPageChanged(int currentPage,int totalPage) | currentPage:当前页码;totalPage:总页码 | 换页时触发该事件 |
| OnZoom(float zoomScale) | zoom:缩放比例 | 缩放操作时候触发该事件 |
| OnError(int errorCode) | errorCode:错误码。详见以下错误码说明 | 出现异常时触发该事件 |
| 错误码值 | 异常说明 |
|---|---|
| 0 | 一切正常 |
| 1 | 在虚拟机或远程桌面中打开文档 |
| 2 | 使用非HTTP访问模式 |
| 3 | 加载文档安全组件失败 |
| 4 | 文件格式错误 |
| 5 | 加载文件失败 |