注册 登录
编程论坛 VFP论坛

FRX2PDF 非安装打印,非XPS,非Image,直接转换为格式化的PDF文件

iswith 发布于 2024-06-14 14:54, 691 次点击
Clear

*--设置默认路径
Local lcPath
m.lcPath = Justpath( sys(16,0) )
m.lcPath = Alltrim( Substr( m.lcPath , At( ":" , m.lcPath) -1 ) )
Set Default To ( m.lcPath )

Set Reportbehavior 90
Set Procedure To netsuite.reg.prg Additive

LOCAL lcReport ;
    , loReportListener  
   
m.lcReport = Getfile("FRX|LBX")
If Empty( m.lcReport ) Then
   Return
Endif

?'正在转换FRX2PDF,请稍候...'
 
loReportListener  = .NULL.
 
Local loErr

*5——HTML输出
Try
      DO (_reportoutput) WITH 5, m.loReportListener  
     With m.loReportListener
         .TargetFileName = Forcepath( Juststem( m.lcReport ) + '.html',  Addbs( m.lcPath ) + [\testdata\ConvertPDF] )
         .QuietMode      = .T.
     Endwith
     
     Report Form  ( m.lcReport ) Object  m.loReportListener
Catch To m.loErr
Endtry

If Type( "loErr.Message" ) == 'C' Then
    Messagebox(  [FRX输出HTML出错(] + loErr.Message + [)] , 16  , '过程:' + Program() )
     Return .F.
Endif
      
 
*--HTML2PDF
Local lcGenlFile ;
    , lcHtmlFile ;
      , lcToPdfFile;
      , lcErrmsg      ;
      , loHtml2Pdf
            
m.lcErrmsg    = ""
m.lcHtmlFile  = m.loReportListener.TargetFileName
*m.lcHtmlFile  = [file:///] + m.lcHtmlFile
*!*         m.lcHtmlFile  = Getfile( "HTML" )
*!*         m.lcHtmlFile  = strtran( m.lcHtmlFile , "\" , "/" )
m.lcToPdfFile = Addbs( m.lcPath ) + [\testdata\ConvertPDF]  + Sys(2015) + [.PDF]
m.loHtml2Pdf = Createobjects( "NetHtml2Pdf.Html2Pdf" , "NetHtml2Pdf.dll")
 
If !Vartype( m.loHtml2Pdf ) == "O" Then
    Return .F.
Endif
   
If !m.loHtml2Pdf.HtmlToPdf( m.lcHtmlFile , m.lcToPdfFile , @lcErrmsg ) Then
    Messagebox( m.lcErrmsg , 16 )
    Return .F.
Else
    Erase ( m.lcHtmlFile )
Endif
     

[此贴子已经被作者于2024-6-14 16:01编辑过]

13 回复
#2
sych2024-06-14 15:04
神龙见首不见尾,犹如北斗升天,蛟龙入海
#3
sych2024-06-14 15:12
你这是曲高和寡,知音难觅呀
#4
schtg2024-06-14 18:58
回复 楼主 iswith
谢谢!
#5
吹水佬2024-06-14 20:55
看似是 FRX -> HTML -> PDF
FRX -> HTML,VFP的报表扩展功能。
HTML -> PDF,windows原生的webview2打印输出HTML -> PDF

#6
gs25367856782024-06-15 09:28
我是安装了PDF打印机,也很方便。
#7
iswith2024-06-15 10:50
以下是引用吹水佬在2024-6-14 20:55:19的发言:

看似是 FRX -> HTML -> PDF
FRX -> HTML,VFP的报表扩展功能。
HTML -> PDF,windows原生的webview2打印输出HTML -> PDF


windows原生的webview2打印输出HTML -> PDF
是的大家都是调用同一个开源库包括webview2,它也是调用一个开源库。。。,而我把这个库直接脱出来打包成DLL就方便部署发布和引用了,WebView2做项目可以,部署发布产品还是有一定难度的。

[此贴子已经被作者于2024-6-15 10:55编辑过]

#8
iswith2024-06-15 10:52
以下是引用gs2536785678在2024-6-15 09:28:21的发言:

我是安装了PDF打印机,也很方便。

你有1W客户潜在意识中都可能需要这样的功能,你去安装打印机吧。。。
#9
吹水佬2024-06-15 14:23
以下是引用iswith在2024-6-15 10:50:53的发言:



windows原生的webview2打印输出HTML -> PDF
是的大家都是调用同一个开源库包括webview2,它也是调用一个开源库。。。,而我把这个库直接脱出来打包成DLL就方便部署发布和引用了,WebView2做项目可以,部署发布产品还是有一定难度的。

底层是一样,就看封装了。
WebView2也可以封装成像调用系统API的DLL,不用注册,部署发布也就是给多一个DLL,直接用VFP的DECLARE命令就可以使用。
关键是WebView2是windows自己做的东西,以后更新升级兼容性较有保障。用第三方的东东最怕的就是升级兼容性问题。



#10
iswith2024-06-15 15:12
以下是引用吹水佬在2024-6-15 14:23:33的发言:


底层是一样,就看封装了。
WebView2也可以封装成像调用系统API的DLL,不用注册,部署发布也就是给多一个DLL,直接用VFP的DECLARE命令就可以使用。
关键是WebView2是windows自己做的东西,以后更新升级兼容性较有保障。用第三方的东东最怕的就是升级兼容性问题。

你这么说估计你没有玩过win7,win10这些版本连个运行时刻都没有你一个外包装器"WebView2Loader.dll"有毛用,WebView2确实强大,gooleV8,JS一大堆函数可用!你直接c/s注入调用就可以,太方便了,太强大了。。。。,关键部署100多MB的库,客户端想升级都麻烦。。。。

[此贴子已经被作者于2024-6-15 15:14编辑过]

#11
吹水佬2024-06-15 15:41
回复 10楼 iswith
win10也快到头,win7、xp就更不用说了。
软件更新还可以勉强挺一下,硬件寿命有限,硬件更新旧系统不能用时说挂就挂的了。

#12
丁春秋yxp2024-06-16 12:10
搞下来试试是什么东东,就这样了,求教,谢谢。

只有本站会员才能查看附件,请 登录
#13
iswith2024-06-16 13:43
组件库太大,就没有上传了!
#14
lnfx20192024-06-25 20:00
以下是引用iswith在2024-6-16 13:43:27的发言:

组件库太大,就没有上传了!

能从百度网盘下载不,学习一下。
1