| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1907 人关注过本帖
标题:求助: VFP 中合并 PDF 文件的控件
取消只看楼主 加入收藏
tyjhcw
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2013-3-21
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:5 
求助: VFP 中合并 PDF 文件的控件
请教各位:
    本人在一个系统中,想实现表格保存为PDF文件的功能。现借助控件实现了对单个表格的PDF化,最终目的是要把一套表格合并为一个PDF文件,现在也基本实现了,但不满意。先说明一下我的做法:单个表格导出为PDF,然后run合并软件的行命令方式对所有表格进行合并,当然导出、合并是在一个for...endfor中完成的。问题就出在行命令方式上,会有cmd的黑窗口闪现。run的 “/N7”参数可以阻止黑窗口的出现,但此处不能用,因为我是在一个循环体中实现导出、合并的功能(要导出的表格最多达几百张,也就意味着会生成几百个PDF文件,所以我的文件名是复用的,导出一个就合并掉一个),“/N7”参数会不等待外部合并程序完成就运行其后的语句,造成程序错误,基于同样的原因,其它的DLL也不能用。我想知道有没有适用于VFP的合并PDF的控件,或是其它有效的方法,而不用去调用外部程序。
搜索更多相关主题的帖子: 软件 
2014-07-06 11:15
tyjhcw
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2013-3-21
收藏
得分:0 
我做的表格象Excel表格那样,是有合并单元格的,每行的高度是独立可调的,VFP的表格是做不到的。
手工合并当然是能实现所需功能的,但是你要告诉每个用户,运行这个程序后,然后运行什么什么软件,把几百个文件合并到一起,用户还会对你的程序感兴趣吗?
2014-07-06 19:19
tyjhcw
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2013-3-21
收藏
得分:0 
一开始,我就是用BAT 文件的,并且正确运行。但那需要保存所有表格生成的PDF文件,有六百多个,我当时是建了一个临时文件夹,合并完成后再删除。感觉不好,就改成生成一个PDF文件,就合并掉一个,加上临时保存所生成的文件,始终只涉及三个文件。
2014-07-07 22:30
tyjhcw
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2013-3-21
收藏
得分:0 
6楼用判断文件的方法来保证代码按序执行,我做过尝试的。刚才我也照搬了6楼写的代码,结果仍是不可靠,在我机上大概有十分之三到四的概率,运行到 DELETE FILE c:\mis\~cmdok.tmp 时报错,是cmdok.tmp 无法操作。这个问题我之前碰到时,翻了一些资料,问了一些人,可能是cmdok.tmp一建立,DO语句就通过了,接着执行删除,但此时建立cmdok.tmp文件的过程还未最终完成——文件未关闭或是文件的控制权未释放。问题的关键还是在于建立文件和判断文件是否存在的动作是并行的。

我想到了进一步的方法:先判断cmdok.tmp 是否存在,再用Fopen判断能否打开,如果Fopen() > 0 则执行后续语句。明天试试。

[ 本帖最后由 tyjhcw 于 2014-7-7 23:55 编辑 ]
2014-07-07 23:48
tyjhcw
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2013-3-21
收藏
得分:0 
回复 9 楼 sash
在VFP中生成PDF文件很容易实现,我的数据全是保存在数据库中的,通过程序可以使这些数据以表格的形式呈现,前提是要运行程序。

把表格做成PDF文件,是作为电子档案脱离程序便于使用(表格都是不规则表,有合并单元格)。
比如:每天作一个日程安排,界面就是一张表格,数据以整张表格为单位保存。一年就有360多张表格,如果要通过打印实现PDF文件,则要一次性调入360多天的数据,每天的数据要组织成所要求的表格形式,这样做实际上是行不通的。我每张表格的数据要比日程安排复杂的多,所以只能一张表格一张表格地打印,最终还是需要合并。
2014-07-08 20:18
tyjhcw
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2013-3-21
收藏
得分:0 
回复 10 楼 liuxingang28
谢谢你,用了那个绿色小软件后,cmd黑窗口的问题已彻底解决。

Delete File c:\mis\~cmdok.tmp 出错的问题我是这样解决的:
......
copy file c:\mis\~cmdok.tmp to c:\mis\lswj.tmp
Delete File c:\mis\~cmdok.tmp
Delete File c:\mis\lswj.tmp
......
就是增加一条复制命令,就再没出错。并且把批处理程序放在一个For...Endfor中也运行正常。其中的道理不明白。(是不是Delete只涉及文件头,copy则要读取所有字节,呵呵,瞎猜。)
2014-07-08 20:33
快速回复:求助: VFP 中合并 PDF 文件的控件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017252 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved