优看PDF阅读控件防扩散版接口说明

 

    基本信息:                            

            产品名称 : PDF阅读控件防扩散版

            版本号:    4.4.3.19

            更新日期 : 2017-11-08

    联系方式:

            电话:400-092-1680

            手机: 15810008526

            QQ: 329969959

            EMail:sales@ycanpdf.cn  

简介

优看科技的PDF防扩散系统定位于资源保护,采用B/S架构,通过简单部署和系统集成,即可实现出版资源和各种文档资源防扩散控制。丰富的在线、离线的控制策略实现电子书、文档的阅读、打印在时间、次数、水印等细粒度上的多重控制。

在线防扩散系统主要功能:

       1.防止PDF文件被非法下载(只能通过专用控件下载,任何绕开专用下 载控件而自行下载的文件无法打开);

       2.对于下载的文件,确保只能在当前电脑打开,复制到其他电脑无法打开(使用本系统的客户端阅读工具也无法打开);

       3.对于有下载权限的用户,可以在下载文件的时候指定阅读时间、阅读次数、打印次数等权限;

       4.本系统客户端和服务器端均无需其他软件(比如adobe等)支持,可独立运行,部署很方便;

       5.还可以根据用户要求,定做更多其他防护功能。

介质传播的防扩散系统主要功能:

       1.基于文件二进制的特征码技术,可以有效防止文件被复制多份的情况,从而更有效的保护文件版权。

       2.制作软件界面友好,用户能够简单方便设置文件的控制信息,包括阅读次数、打印次数、阅读时间段等,支持批量设置;

       3.阅读器支持标准普通PDF文件和权限范围内的受控PDF文件,能够流畅阅读PDF文件不受客户机系统环境约束;

       4.权限严格受控,超过文件生命周期任何阅读器无法阅读;

       5.根据客户需要提供PDF文件还原备份扩展工具;

       6.支持多种传输流转介质(U盘、光盘、手机、存储卡、定制卡等)。

使用环境

支持所有windows操作系统,可以在任何支持标准OCXnpapi技术的开发语言里面使用.

示例代码

html调用示例代码:


varYCanPDF = null;   // onload中调用init()成功后,使用此变量调用相关接口

functioninit(){

if (window.ActiveXObject||"ActiveXObject" in window){//IE

    try {

        varEobj = new ActiveXObject("PDFVIEW.PDFViewCtrl.1");

    }catch(e){

     document.getElementById("ycan").innerHTML = "您尚未安装控件,请安装...";

    }

    YCanPDF  =document.getElementById("YCanPDFIE");

    varCurVer  = YCanPDF.GetVersion();

    if(CheckCurVersion(CurVer)){

      alert("控件有更新,请下载更新");

      document.getElementById("ycan").innerHTML = "点这里进行更新安装...";

    }

  }else{//IE

    var plugin = navigator.plugins["npPDFViewdll"];

    if(plugin==undefined){

     alert("插件未注册!");

     document.getElementById("ycan").innerHTML = "您尚未安装PDF控件,请安装...";

    }else{

     YCanPDF  =document.getElementById("YCanPDFNOTIE");

     varCurVer  = YCanPDF.GetVersion();

     if(CheckCurVersion(CurVer)){

        alert("控件有更新,请下载更新");

        document.getElementById("ycan").innerHTML = "点这里进行更新安装...";

      }

    }

  }

}


方法


1.   longSetCtrlPDFURL(const char* strPDFURL, const char* strPWD, const char* strCtrlInfo, long lParams)

功能:

       打开服务器端防扩散文件

参数

       strPDFURL: 加密后的PDF文件的网络地址

       strPWD: 文件密码。如果没有密码的话设置为空

       strCtrlInfo: 保留,设置为""

       lParams: 保留,设置为""

返回值

       0表示成功, -1 表示文件出错,-2 表示这个文件加密,-3 表示文件页面页数为0, -4表示下载文件失败

说明

       a. 此接口为防扩散版本功能


2.   longDldCtrlPDFFile(const char* strPDFFile, const char* strCtrlInfo, const char* strPWD, long PDFFileLen, const char* Params)

功能:

       本地防扩散文件下载

参数

       strPDFFile: PDF防扩散文件在线路径

       strCtrlInfo: PDF文件控制信息,详见(附件1)

       strPWD: 文件密码。如文件无密码,设置为""

       PDFFileLen: 传入当前下载PDF文件大小,0为自动获取

       Params: 保留,设置为""

返回值

       0表示成功, -1表示文件授权失败,-2表示下载文件失败,-3表示取消下载文件

说明

       a. 此接口为防扩散版本功能


3.   longOpenCtrlPDF(const char* strPDFFile, const char* strPWD, const char* Params)

功能:

       打开本地下载的防扩散文件

参数

       strPDFFile: 加密后PDF文件

       strPWD: 文件密码。如果没有密码的话设置为空

       Params: 保留,设置为""

返回值

       0表示成功, -1 表示文件出错,-2 表示这个文件加密,-3 表示文件页面页数为0

说明

       a. 此接口为防扩散版本功能


4.   longSetURL(const char* szFilePath, const char* szPassword)

功能:

       打开服务器端 PDF 文件,直接从内存中打开,即文件不落地。支持绝对路径

参数

       szFilePath: 文件的 URL 路径

       szPassword: 文件密码,如果文件没有密码,设置为""

返回值

       0 表示成功,-1 表示文件出错,-2 表示这个文件加密,-3 表示文件页面页数为0


5.   longSetFileName(const char* filename, const char* password, long lParams)

功能:

       打开本地硬盘上的PDF文件

参数

       filename      : 文件全路径

       password      : 文件密码,如果文件没有密码,设置为""

       lParams: 保留,设置为0

返回值

       0 表示成功,-1 表示文件出错,-2 表示这个文件加密,-3 表示文件页面页数为0


6.   longOpenFileDlg(long lParams)

功能:

       调用系统对话框,打开本地硬盘上的PDF文件

参数

       lParams: 保留,设置为0

返回值

       0 表示成功,-1 表示文件出错,-2 表示这个文件加密,-3 表示文件页面页数为0


7.   longOpenMem(short* pBuf, long len, const char* password)

功能:

       打开内存中的 PDF 文件(该模式不支持web 方式调用)

参数

       pBuf: PDF文件流

       len: 内存流长度

       szPassword  : 文件密码,如果文件没有密码,设置为""

返回值

       0 表示成功,-1 表示文件出错,-2 表示这个文件加密,-3 表示文件页面页数为0

示例代码:

       FILE *fp = fopen(strFile,"rb");

       char *pBuf = null;

       if (fp) {

       fseek(fp,0,SEEK_END);

       longlen =ftell(fp);

       fseek(fp,0,SEEK_SET);

       pBuf = (char *)malloc(sizeof(char)*(len+1));

          if(pBuf){//这里的pBuf在文件显示完毕的时候要释放 free(pBuf);

       fread(pBuf,1,len,fp);

              pPDFView->OpenMem((short *)pBuf,len,NULL);

          }

       fclose(fp);

       }

       ...

       ...

       if(pBuf){

              free(pBuf);

              pBuf = null;

       }

 


8.   longOpenMemEx(const char* lpBuf, long len, const char* lpPWD, long lParams)

功能:

       打开base64编码的内存PDF文件

参数

       lpBuf: 二进制内存流(base64编码),必须要是完整的 PDF 文件

       len: 内存流长度

       lpPWD: 文件密码,如果文件没有密码,设置为""

       lParams: 保留,设置为0

返回值

       0 表示成功,-1 表示文件出错,-2 表示这个文件加密,-3 表示文件页面页数为0


9.   longSetRCPath(const char* szRCPath)

功能:

       设置本地 RC 资源包

参数

       szRCPath      : 本地 RC 资源包全路径

返回值

       0 表示成功,-1 表示设置RC路径过长(限制260字符长度)


10. longSetRCURL(const char* szRCPath, long lParams)

功能:

       设置网路 RC 资源包

参数

       szRCPath      : 服务器端 RC 资源包全路径

返回值

       0 表示成功,-1 表示设置RC路径过长(限制260字符长度)


11. longCloseFile()

功能:

       关闭当前打开文件

参数

      

返回值

       0 表示成功,-1 表示失败


12. long First(); long Last(); long Next(); long Prev();

功能:

       跳转到当前打开的PDF文件的第一页、末一页、下一页、前一页

参数

      

返回值

       0 表示成功,-1 表示失败


13. longSetViewType(long viewType)

功能:

       关闭当前打开文件

参数

       viewType      : 1 为单页显示,2 为连续页显示,3为翻页动画显示,4为对开显示

返回值

       0 表示成功, -1表示文件未打开, -2表示输入viewType错误


14. longInvalidateView(long bClear)

功能:

       刷新控件

参数

       bClear: 保留,设置为0

返回值

       0 表示成功


15. longShowOutline(long bShow)

功能:

       控制目录是否显示

参数

       bShow: 0 为显示,0 为不显示

返回值

       0 表示成功


16. longGetPageSize( long lPage, long lx, long ly)

功能:

       获取当前打开文件指定页面宽和高

参数

       lPage: 指定的页面, 1 开始

       lx: 接收宽度的参数

       ly: 接收高度的参数

 

返回值

       成功则会返回一个长整形,值为100000*宽度+高度

       假如返回102400768,则宽是1024,高是768.这个主要是处理网页调用的情况,失败则返回-1

说明

       这里的 lx ly是个指针,如果是在C++里面调用,则形式如下:

       longx,y;

       longlRet = -1;

       lRet = GetPageSize(1,&x,&y);

       x y 就是宽和高,同时通过lRet也可以计算宽和高。如果是在 web 里面

       调用,则只能通过返回值取得宽和高,并且 lx ly必须给 0:

       varlRet = GetPageSize(1,0,0);

       var x=lRet/100000;

       var y=lRet-x;

注意

       此接口为老版本接口,可用GetPageOriWidthGetPageOriHeight替换


17. longGetPageOriWidth( long lPage)

功能:

       获取当前打开文件指定页面原始宽度

参数

       lPage: 指定的页面, 1 开始

返回值

       成功返回页面原始宽度,-1为失败


18. longGetPageOriHeight(long lPage)

功能:

       获取当前打开文件指定页面原始高度

参数

       lPage: 指定的页面, 1 开始

返回值

       成功返回页面原始宽度,-1为失败


19. longPrintPDF(const char* filename, const char* password , long Level, long lParams)

功能:

       打印当前 PDF 文件

参数

       filename      : 保留,必须置为空

       password      : 保留,必须置为空

       Level: 打印质量(1,2,3,4,5质量依次递增)

       lParams: 0 表示原始尺寸打印;1 表示缩放到 A4 打印

返回值

       0 表示成功,-1 表示失败


20. longPrintNoDlg(const char* strFilePath, const char* szPrinter, long lFrom, long lTo, long lCopy, long Level, long lParams)

功能:

       后台打印(不弹出打印对话框)当前 PDF 文件

参数

       strFilePath: 默认打印文件路径(设置为"",则必须先打开文件,否则默认打开此路径文件)

       szPrinter     : 打印机名称

       lFrom: 起始页

       lTo: 终止页

       lCopy: 打印份数

       Level: 打印质量(1,2,3,4,5质量依次递增)

       lParams: 0 表示原始尺寸打印;1 表示缩放到 A4 打印

返回值

       0 表示成功,-1 表示失败

示例代码

       PrintNoDlg("文件路径","Printer",1,1,1,5,1);


21. longNextView()

功能:

       返回到查看历史中的下一页

参数

      

返回值

       0 为失败,大于 0 表示成功


22. longPrevView()

功能:

       返回到查看历史中的上一页

参数

      

返回值

       0 为失败,大于 0 表示成功


23. longSearchStr(const char* strKey, long bCaseSensitive, long bAllPages)

功能:

       当前打开文件中查找指定字串

参数

       strKey : 要查找的字串。

       bCaseSensitive: 是否区分大小写,0 不区分,1 区分

       bAllPages: 保留,设置为0

返回值

       1 表示成功,其它表示失败(失败有相关错误提示弹出)


24. longSearchNext()

功能:

       查找关键字下一个

参数

      

返回值

       1 表示成功,其它表示失败(失败有相关错误提示弹出)


25. longSearchPrev()

功能:

       查找关键字上一个

参数

      

返回值

       1 表示成功,其它表示失败(失败有相关错误提示弹出)


26. longFitWidth()

功能:

       当前打开文件适合宽度显示

参数

      

返回值

       1 表示成功,-1表示失败


27. longFitHeight()

功能:

       当前打开文件适合高度显示

参数

      

返回值

       1 表示成功,-1表示失败


28. longRotateLeft()

功能:

       页面左转 90 度显示

参数

      

返回值

       1 表示成功,-1表示失败


29. longRotateRight()

功能:

       页面右转 90 度显示

参数

      

返回值

       1 表示成功,-1表示失败


30. longSetZoomMode (long lZoomMode,floatfStep)

功能:

       是指当前缩放模式

参数

       lZoomMode     : 1 为放大模式,2 为缩小模式,0 为取消缩放模式

       fStep: 缩放模式下每次递增或者递减缩放率

返回值

       0 表示成功,-1表示失败


31. longSetSelectMode(long mode)

功能:

       设置当前阅读模式

参数

       Mode: 0 为阅读模式,1选择文字模式,2截图模式,3文字区域坐标选择模式

返回值

       0 表示成功,-1表示失败


32. longSetFullscreen(long bFullscreen, long lParams)

功能:

       设置全屏或非全屏显示

参数

       bFullscreen:  1为全屏显示,0为非全屏显示

       lParams:  保留

返回值

       0 表示成功


33. const char* GetVersion()

功能:

       获取当前安装控件版本

参数

      

返回值

       返回当前安装控件版本号。失败返回为""


34. voidSetZoom(float propVal)

功能:

       设置当前打开文件页面缩放率

参数

       propVal: 设置缩放率

返回值

      


35. longSetFont(const char* szName, long lSize, long lFstClr, long lEndClr, long bItalic, long bUnderline, long bStrikeOut, long lParams)

功能:

       设置水印字体信息

参数

       szName: 字体名称。

       lSize: 字体大小。

       lFstClr: 字体的渐变色开始色彩。

       lEndClr: 字体的渐变色结束色彩。

       bItalic: 字体是否为倾斜。

       bUnderline: 字体是否带下划线。

       bStrikeOut: 字体是否带删除线。

       lParams: 保留

返回值

       0表示成功

说明

       a. 此接口为增强版本功能


36. longAddImage(const char* szImage, long x, long y, long w, long h long transparency, long rotate, long lParams)

功能:

       添加图片水印

参数

       szImage: 网络地址图片

       x: 横坐标,PDF显示区域左上角为原点

       y: 纵坐标

       w: 宽度

       h: 高度

       transparency: 透明度(0--100),0代表完全透明,100代表完全不透明

       rotate: 旋转角度

       lParams: 0为显示水印,1为打印水印

返回值

       返回该水印索引index,在调用DeleteWaterMark()时使用

       大于或等于 0 表示成功,-1 表示失败

说明

       a. 此接口为增强版本功能


37. longAddText(const char* szText, long x, long y, long transparency, long rotate, long lParam)

功能:

       添加文字水印

参数

       szText: 文字水印内容

       x: 横坐标,PDF显示区域左上角为原点

       y: 纵坐标

       transparency: 透明度(0--100),0代表完全透明,100代表完全不透明

       rotate: 旋转角度

       lParam: 0为显示水印,1为打印水印

返回值

       返回该水印索引index,在调用DeleteWaterMark()时使用

       大于或等于 0 表示成功,-1 表示失败

说明

       a. 此接口为增强版本功能


38. longDeleteWaterMark(long index, long lParam)

功能:

       删除文字或者图片水印

参数

       Index: 图片水印索引:调用AddImage()AddText()成功的返回值

       lParam: 保留

返回值

       0表示成功, 其它表示失败

说明


39. longOPenFileInit(float InitType, const char* strParams)

功能:

       打开文件前相关数据初始化设置

参数

       InitType: 设置初始化类型,-1:适合高度,0:适合宽度,0.125~64:自定义缩放率

       strParams: 保留,设置为""

返回值

       0表示成功


40. const char* SearchWordInPages(const char* strFilePath, const char* strSearchData, long nFromPage, long nToPage, long lParams)

功能:

       全文检索关键字

参数

       strFilePath: 默认打开文件路径(如果查找当前已打开文件,则设置为"")

       strSearchData: 关键字(支持与或运算。如:A&&B&&C或者A||B||C或者A)

       nFromPage: 查选关键字起始页

       nToPage: 查询关键字终止页面

       lParams: 保留,设置为0

返回值

       "-1"为文件打开失败或者文件为打开,"-2"为输入关键字出错,"-3"为输入页码范围出错,"-4"表示关键字未找到,反之则返回查询到xml数据

说明

       a. 此接口为增强版本功能


41. const char* GetFileDatabyRegion(const char* strFilePath, long nPage, long left, long top, long right, long bottom, const char* strbmpsavepath, long lParams)

功能:

       根据坐标获取对应PDF文件的数据

参数

       strFilePath: 默认打开文件路径(如果查找当前已打开文件,则设置为"")

       nPage: 获取数据对应页面页数

       left: 对应页面坐标left

       top: 对应页面坐标top

       right: 对应页面坐标right

       bottom: 对应页面坐标bottom

       strbmpsavepath: 对应坐标如果为图片,则保存在此目录下(文件根目录,不带文件名)

       lParams: 保留,设置为0

返回值

       "-1"为失败,""为当前区域没有文字或者为图片(图片自动保存在strbmpsavepath)

说明

       a. 此接口为增强版本功能


42. longHttpSetVualue(const char* KeyID, const char* KeyInfo, long lParams)

功能:

       打开或者下载服务器端文件,请求头不全配置

参数

       KeyID: 键值(例如:JSESSIONID)

       KeyInfo: 键值数据

       lParams: 保留,设置为0

返回值

       0表示成功


43. longSetupCallBack(long DoEvent,longDoNpHandle)

功能:

       设置回调

参数

       DoEvent: 回调函数原型句柄

       DoNpHandle: 回调动作所在类句柄

返回值

       0表示成功

说明

       回调函数原型:

       //消息类型,参数个数,数据,回调动作所在类句柄

       long  CALLBACKOnDoEvent(long msgid,longlParams,char* wParams,longDoNpHandle);

       1. 页面页数改变消息

       回调对应msgid0

       2. 选择区域完成消息

       回调对应msgid2


属性

1.  PageIndex 当前页码,介于1和最大页码之间

2.  MaxPage 当前 PDF 的总页数,此参数只读

3.  Zoom 当前显示的缩放比例,0.01~64 之间的一个实数

事件


1.      void OnPageChanged(long nCurPage, long nMaxPage)

功能

    页面改变事件触发

参数

    nCurPage:   当前文档页面页数

    nMaxPage:  当前文档页面总数


2.      void OnSelectArea(long nPage, long left, long top, long right, long bottom)

功能

    页面改变事件触发

参数

    nPage:                   数据所在页面页数

    left,top,right,bottom:         所在页面获取数据坐标


附件1——防扩散控制项

1.     阅读次数控制: ReadCount(int)

2.     是否启用阅读时间控制: UseReadTime(/)

3.     阅读起始时间: RStart(const char*)

4.     阅读终止时间: REnd(const char*)

5.     阅读页面范围: CanReadPages(const char*)

6.     阅读水印: ReadWatermark(/)

7.     打印次数控制: PrintCount(int)

8.     是否启用打印时间控制: UsePrintTime(/)

9.     打印起始时间: PStart(const char*)

10.  打印终止时间: PEnd(const char*)

11.  打印水印: PrintWatermark(/)

12.  离线硬件绑定: OfflineBind(bool)

13.  在线硬件绑定: OnlineBind(bool)

14.  文本复制: CanCopy(bool)

15.  截屏控制: SnapScreen(bool)

示例代码:


<ReadCount>10</ReadCount>

<UseReadTime>

<RStart>2012-02-10 18:00:00</RStart>

<REnd>2012-02-15 18:00:00</REnd>

</UseReadTime>

<CanReadPages>-1</CanReadPages>

<ReadWatermark>

<Font

    Name = 微软雅黑

    Size = 20

    Rotate = 45

    BeginClr = 255

    EndClr = 65535

    Alpha = 60

    Bold = 1

    Italic = 0>

    优看科技

</Font>

<Img

    Rect = 100,100,50,50

    Rotate = 50

    Alpha = 60

    URL = http:// http://www.ycanpdf.cn/demo/sample.jpg  />

</ReadWatermark>

<PrintCount>3</PrintCount>

<UsePrintTime>

<PStart>2012-02-10 18:00:00</PStart>

<PEnd>2012-02-15 18:00:00</PEnd>

</UsePrintTime>

<PrintWatermark>

<Font

    Name = 微软雅黑

    Size = 20

    Rotate = 45

    BeginClr = 255

    EndClr = 65535

    Alpha = 60

    Bold = 1

    Italic = 0>

    优看科技

</Font>

<Img

    Rect = 100,100,50,50

    Rotate = 50

    Alpha = 60

    URL = http://www.ycanpdf.cn/demo/sample.jpg/>

</PrintWatermark>

<OfflineBind>1</OfflineBind>

<OnlineBind>1</OnlineBind>

<CanCopy>1</CanCopy>

<SnapScreen>1</SnapScreen>