PB中调用pdf.ocx控件能否将文件转成PDF文件?急!!!

在PowerBuilder应用中,探讨如何利用pdf.ocx控件将不同类型的文档转换为PDF格式,涉及Postscript处理及可能遇到的问题。
 
  •  

    1.下载安装gs705w32.exe          

                     

        也可下载安装ghostscript7.07,但pb9不支持gs8.0及其以上版本!      

    2.针对PowerBuilder9.0      

                在系统环境变量path   中添加入      

                gs705w32.exe       的安装默认路经为c:/gs(可以修改)      

              如   ;C:/gs/gs7.05/bin/      

               

    3.安装虚拟打印机      

                直接在 "控制面板 "> "打印机和传真 "> "添加打印机 ",      

                端口任意,默认的LPT1就可以,反正我们也不是用它做打印功能      

                关键是驱动的选择,此驱动是PowerBuilder9.0自带的,就在PowerBuilder9.0的安装文件夹下,      

        选择从 "磁盘安装 "> "Sybase/Shared/PowerBuilder/drivers ",      

        此时选择Adobe厂商的inf文件 "ADIST5.INF ",读取到五个驱动:      

        "Acrobat       Distiller ",      

        "Acrobat       Distiller       CS ",      

        "Acrobat       Distiller       CT ",      

        "Acrobat       Distiller       J ",      

        "Acrobat       Distiller       K "      

        选择第一个 "Acrobat       Distiller "(其它四个也可以,有什么区别到现在偶还不知道),下一步即可> "安装完毕 "      

        也可以在Sybase/Shared/PowerBuilder/drivers下编辑.BAT文件,写入:      

        rundll32.exe       printui.dll,PrintUIEntry       /if       /f       .//ADIST5.INF       /r       "LPT1: "       /b       "Acrobat       Distiller "       /m      

     

    "Acrobat       Distiller "      

      运行它也可实现添加虚拟打印机!      

     

    4、编写如下代码

    int   li_ret    

    string   ls_docname,   ls_named

    integer   li_value

     

    li_value   =   GetFileSaveName( "选择保存文件 ",   &

      +   ls_docname,   ls_named,   "PDF文件 ",   &

            +   "PDF文件   (*.PDF),*.PDF ")

     

    IF   li_value   <>   1   THEN   Return

     

     

    dw_1.Object.DataWindow.Export.PDF.Method       =       Distill!          

      //选择虚拟打印机      

    dw_1.Object.DataWindow.Printer       =       "Acrobat   Distiller "      

    dw_1.Object.DataWindow.Export.PDF.Distill.CustomPostScript= "Yes "              

         

     

    li_ret   =   dw_1.SAVEAS(ls_docname,   pdf!,   TRUE)

     

    IF   li_ret   =   1   Then

    MessageBox( '提示信息 ', '保存为PDF文件成功! '   +   &

    '~r~n文件为: '   +   ls_docname)

    Else

    MessageBox( '提示信息 ', '保存为PDF文件失败! ')

    End   IF

     

    发表于:2007-08-31 14:26:225楼 得分:30

    数据窗口PDF格式输出

    (独孤求败二零零四年一月十四日整理于深圳市南山区)

    PDF(Portable   Document   Format)文件格式是Adoble公司开发的电子文件格式。这种文件格式和操作系统平台无关,也就是说,PDF文件不管是在Widnows、Unix还是在苹果公司的Mac   OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说明、公司报告、网络资料、电子邮件都开始使用PDF格式文件。

    PB9.0中新增加了将数据窗口保存为PDF文档的支持,并提供了两种方法将数据窗口或数据存储保存为PDF格式的报表。默认的是提取的方法(Distill   Method),他能够保存数据窗口对象的所有类型。同时,数据窗口也可以使用XSL格式对象(XSL-FO)保存PDF格式。

    一、Distill提取方法

    Distill   Method是默认的数据窗口生成PDF文档的方法,使用这种方式,无须更改数据窗口对象的属性,可直接在数据窗口对象画板选择File/Save   Rows   As菜单项,在弹出的“另存为”对话框,选择保存类型为PDF保存即可。如果是在脚本中使用Save   as()函数,将保存类型设置为PDF,也可以将数据窗口保存为PDF格式文件。

    例如:

    int   li_ret    

    string   ls_docname,   ls_named

    integer   li_value

    li_value=GetFileSaveName( "选择保存文件 ",+ls_docname,ls_named, "PDF文件 ",+ "PDF文件   (*.PDF),*.PDF ")

    IF   li_value   <>   1   THEN   Return

    li_ret   =   dw_1.SaveAs(ls_docname,   PDF!,   true)

    IF   li_ret   =   1   Then

    MessageBox( '提示信息 ', '保存为PDF文件成功! '   +   '~r~n文件为: '   +   ls_docname)

    Else

    MessageBox( '提示信息 ', '保存为PDF文件失败! ')

    End   IF

    数据窗口对象生成的PDF文档如下图所示:

    Distill方式目前还不支持OLE和RichText类型的数据窗口对象。

    PB使用了一个转为提取方式PDF输出而设计的PostScript打印驱动,如果要在生成PDF文档时定制PostScript设置,可以选择不同的PostScript打印驱动。方法如下:

    1、 数据窗口画板中

    1)、打开数据窗口对象

    2)、在数据窗口对象属性视图中选择Data   Export标签页,在Format   to   Configure下拉列表中选择PDF,在Method下拉列表中选择Distill!,并选择Distill   Custom   PostScript复选框。如下图所示:

    3)、选择Print   Specifications标签页,在Printer   Name文本框中输入指定的打印机名。

    4)、保存数据窗口对象,选择File/Save   Rows   As菜单项,在弹出的“另存为”对话框中,选择保存类型为PDF,在文件名文本框中输入文件名。

     

    2、 脚本中,使用如下方法:

    int   li_ret

    dw_1.Object.DataWindow.Export.PDF.Method   =   Distill!

    dw_1.Object.DataWindow.Printer   =   //prntsrvr/pr-6

    dw_1.Object.DataWindow.Export.PDF.Distill.CustomPostScript   =   “Yes”

    li_ret   =   dw_1.SaveAs(“custom.PDF”,PDF!,true)

     

     

    二、使用XSL-FO方式保存PDF文档

    基于将DataWindow数据保存为XML格式的能力,PB也能够将数据窗口的数据和表示通过生成XSL格式对象(XSL-FO)保存为PDF文档。

    XSL-FO是用于格式化对象的可扩展样式表语言(Extensible   Stylesheet   Language   for   Formatting   Objects),要使用XSL-FO生成PDF文档,必须对数据窗口对象属性进行修改。

    1、数据窗口画板中

    1)、打开数据窗口对象。

    2)、在数据窗口对象属性视图中选择Data   Export标签页,在Format   to   Configure下拉列表中选择PDF,在Method下拉列表中选择XSLFOP!。如果想将PDF文件同时送至打印机,选择Distill   Print   Using   XSLFOP复选框。如下图所示:

    3)、保存数据窗口对象,选择File/Save   Rows   As菜单项,在弹出的“另存为”对话框中,选择保存类型为PDF,在文件名文本框中输入文件名。

     

    2、脚本中,使用如下方法:

    int   li_ret    

    string   ls_docname,   ls_named

    integer   li_value

     

    li_value   =   GetFileSaveName( "选择保存文件 ",   &

      +   ls_docname,   ls_named,   "PDF文件 ",   &

            +   "PDF文件   (*.PDF),*.PDF ")

    IF   li_value   <>   1   THEN   Return

    //定制XSL-FO方式

    dw_1.Modify( "Export.PDF.Method   =   XSLFOP!   ")  

    dw_1.Modify( "Export.PDF.xslfop.Print= 'Yes ' ")  

    li_ret   =   dw_1.SaveAs(ls_docname,   PDF!,   true)

    IF   li_ret   =   1   Then

    MessageBox( '提示信息 ', '保存为PDF文件成功! '   +   &

    '~r~n文件为: '   +   ls_docname)

    Else

    MessageBox( '提示信息 ', '保存为PDF文件失败! ')

    End   IF

     

    XSL-FO方式目前还不支持OLE、RichText、Graph和Composite数据窗口对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值