请教

MARYS2007 2012-03-13 08:18:46
请教,我在报表打印后想加一个条件,就是将报表另存为pdf格式或jpg也行。需要怎样用命令实现?
我是在循环里面,每次打印完一份后自动循环下一个,文件名我可以采用自动化形式,这样就在打印完毕后(比如打印了10份报表,同时形成了10个pdf文档)
现在我只要将它形成一个pdf的语句来实现就可以,有没有这么简单的类似报表打印这样的语句?
...全文
263 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lygcw9602 2012-03-14
  • 打赏
  • 举报
回复
上图中标题栏名"foxit PDF PRINTER DRIVER" 即为PDF打印机名称
lygcw9602 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 marys2007 的回复:]
就是不知道怎么改?难道我直接用:
set printer to ’Adobe PDF ‘
手工存储
然后set printer to name '元打印机名'


这样子吗?
[/Quote]
这个名称与PDF的版本有关系。不同版本的PDF,其打印机名称也不一样。
可以从打印机属性设置里看到打印机名称:
lygcw9602 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 marys2007 的回复:]
就是不知道怎么改?难道我直接用:
set printer to ’Adobe PDF ‘
手工存储
然后set printer to name '元打印机名'


这样子吗?
[/Quote]
APRINTERS( ) 函数:在一个数组中存储关于当前可用的打印机信息。
用这个函数,看一下打印机的名称,再设置
详情可以参照帮助文件中有关内容。
MARYS2007 2012-03-14
  • 打赏
  • 举报
回复
就是不知道怎么改?难道我直接用:
set printer to ’Adobe PDF ‘
手工存储
然后set printer to name '元打印机名'


这样子吗?
lygcw9602 2012-03-13
  • 打赏
  • 举报
回复
楼上的回复是完全正确的。改为VFP就可以用了。熟悉下有关的打印机函数和命令。
APRINTERS( ) 函数:在一个数组中存储关于当前可用的打印机信息。
SET PRINTER TO PortName
SET PRINTER TO [DEFAULT | NAME WindowsPrinterName]

都市夜猫 2012-03-13
  • 打赏
  • 举报
回复
vfp 转换打印机不需要发系统消息
直接用 set printer to name "windows打印机名称" 就可以了
不过
Adobe PDF 虚拟打印机会弹出一个对话框需要用户确定 pdf 文件名
MARYS2007 2012-03-13
  • 打赏
  • 举报
回复
Private Sub cmdExportToPdf_Click()


Dim i As Long
Dim gFlag As Boolean
Dim strDefaultPrinterName As String
Dim PrinterName As String
strDefaultPrinterName = Printer.DeviceName
'判断有没有安装打印机
If strDefaultPrinterName = "" Then
MsgBox "没有安装打印机!" vbExclamation + vbOKOnly, Me.Caption
Exit Sub
End If

'-----------------------------------------------------------------------
'判断所有打印机列表中有没有Adobe PDF 打印机
gFlag = False
For i = 0 To Printers.count - 1
If Printers(i).DeviceName = "Adobe PDF" Then
gFlag = True
Exit For
End If
Next i

If gFlag = False Then
MsgBox "没有安装 Adobe PDF 打印机!!", vbExclamation + vbOKOnly, Me.Caption
Exit Sub
End If

'-----------------------------------------------------------------------

'***********************************************************************
'把默认打印机设置为Adobe PDF
PrinterName = "Adobe PDF"
Dim S As String, length As Long, hKey As Long
S = String(80, Chr(0))
length = GetProfileString("devices", PrinterName, "", S, Len(S))
S = Left(S, length)
Call WriteProfileString("windows", "device", PrinterName & "," & S)
Call SendMessage(HWND_BROADCAST, WM_WININICHANGE, &H7FFF&, ByVal "windows")


CsRpt.ReportFileName= "你的水晶报表的路径" PrintPreview.ReportFileName

CsRpt.PrintReport

'******************************************************************************
'打印结束后再把默认打印机设置为最初的那个打印机
PrinterName = strDefaultPrinterName
S = String(80, Chr(0))
length = GetProfileString("devices", PrinterName, "", S, Len(S))
S = Left(S, length)
Call WriteProfileString("windows", "device", PrinterName & "," & S)
Call SendMessage(HWND_BROADCAST, WM_WININICHANGE, &H7FFF&, ByVal "windows")

'******************************************************************************
End Sub


这个是vb的一段代码,但是我不会转为vf。另外需要这么长得代码吗?因为我本身安装有虚拟打印机,那么我是不是就只要将后面的转为虚拟打印机,保存后再转回原来打印机就行?

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧