2011-06-06 125 views
0

我正在更新舊的VB6代碼以將其DataReports保存爲PDF,而不是打開一個打印對話框。如何以編程方式將DataReport打印到PDF文件?

我不能簡單地在代碼中使用PDF(使用VB6 PDF庫等),因爲我們所有的軟件都已經使用了DataReports,並且爲每個軟件編寫打印代碼都是件單調乏味的事情。目前,該流程要求員工將DataReport打印到PDF打印驅動程序,手動命名並將其保存到需要的位置。我需要自動完成這一切,以便可以以編程方式指定保存的PDF的名稱和位置,而不是手動輸入。

最好的解決方案是如果DataReport只是有一個.SaveToPdf(filename)例程。最糟糕的情況是,我看到我自己使用SendKeys自動化了這個過程。但是,此解決方案需要在具有多種可能的打印機(因此PDF打印驅動程序可能不是默認設置)以及Windows XP,Vista或7的環境中工作。

我已經毫無結果地嘗試使用Google搜索問題,它只返回如何手動完成的教程,就像我們現在所做的那樣。

回答

2

你可能會考慮使用PDF打印機驅動程序,它允許您配置沉默「印刷」到預設目錄使用自動生成的名稱。

對於這樣的產品的例子,請參閱:

http://www.iteksoft.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=21

+0

這是我找到的最佳解決方案。 eDocPrinter PDF Pro(您鏈接的軟件)甚至允許您通過註冊表設置其所有設置,因此您可以指定名稱和目錄等。Adobe PDF Printer允許使用靜默模式,但我沒有看到以任何方式編程設置其設置。 – dlras2 2011-06-08 04:42:21

1

我會創建一個對話框,讓用戶輸入打印機(驅動程序)名稱,保存目錄和文件命名指南,然後將其保存到本地ini文件或註冊表中。您將需要兩個打印按鈕/菜單。一個使用默認(保存)設置直接打印到打印機,另一個打開他們現在看到的打印窗口,以便他們可以執行自定義打印。

記住上一個菜單項的省略號表示其他對話框,打印 VS 打印...

+0

這是我會做的,但沒有提供任何有關如何自動化過程的信息。我仍在調用'DataReport1.PrintReport',我怎樣才能指定PDF的名字?在PDF打印驅動程序生成輸出之前,您實際上不會保存任何內容,然後會詢問您將其保存在哪裏。除非您對可能有效的編程PDF打印驅動程序有任何建議。 – dlras2 2011-06-06 17:17:11

+1

我想我誤讀了你正在尋找的東西。如果您想了解如何將報告發送到PDF打印機驅動程序的代碼示例,則應添加您用於打印的內容。這裏是@Maciej的一篇文章,演示使用GhostScript打印,http://stackoverflow.com/questions/2599925/how-to-print-pdf-on-default-network-printer-using-ghostscript-gswin32c-exe-shel – jac 2011-06-06 17:37:25

+0

如果我可以將DataReport打印到PostScript文件,GhostScript可以很好地工作。我所知道的只是通過打印對話框進行打印,並以HTML或文本格式導出,這兩種格式都不會與打印格式相同。我沒有詳細說明我用於打印的內容,因爲我願意使用任何可以工作的東西。 – dlras2 2011-06-06 17:49:54

0

只要使用水晶報表查看器控件,並按照步驟:

Set objRpt = objApp.OpenReport("type report path and name") 

objRpt.DiscardSavedData 
dim filepath as string 
filepath = report path & report filename 

With objRpt 

    .ExportOptions.FormatType = crEFTPortableDocFormat 
    .ExportOptions.DestinationType = crEDTDiskFile 
    .ExportOptions.DiskFileName = 'filepath string goes here 
    .ExportOptions.PDFExportAllPages = True 
    .Export False 
End With 

按照以下步驟,出口完成。

相關問題