簡體   English   中英

VB 6.0 Crystal Reports導出為PDF

[英]VB 6.0 Crystal Reports Export to PDF

我在將Crystal Reports文件報告為PDF格式時遇到問題。 我已經看過這里關於這個問題的所有其他問題,但它們似乎都沒有解決我的問題。

這是我的代碼:

Public Sub ExportReportToPDF(ReportObject As CRAXDRT.Report, ByVal filename As String, ByVal ReportTitle As String)

Dim objExportOptions As CRAXDRT.ExportOptions

ReportObject.ReportTitle = ReportTitle

With ReportObject
    .EnableParameterPrompting = False
    .MorePrintEngineErrorMessages = True
End With

Set objExportOptions = ReportObject.ExportOptions

With objExportOptions
    .DestinationType = crEDTDiskFile
    .DiskFileName = filename
    '.FormatType = crEFTExcel80Tabular
    '.FormatType = crEFTCommaSeparatedValues
    '.FormatType = crEFTExcel80
    '.FormatType = crEFTHTML32Standard
    '.FormatType = crEFTHTML40
    .FormatType = crEFTPortableDocFormat
    '.FormatType = crEFTRichText
    '.FormatType = crEFTText
    '.FormatType = crEFTWordForWindows

End With

ReportObject.Export False

End Sub

現在,除了PDF之外我還留下了其他選項只是為了展示它們,它們都被明確地注釋掉了,但是如果我嘗試任何其他格式,它輸出就好了。 唯一不導出的格式是PDF。 它給了我錯誤:

運行時錯誤'-2147190908(80047784)':導出報告失敗。

當我單擊Debug時,它會在ReportObject.Export False行上突出顯示。

另一方面,如果我這樣做,用戶選擇了選項,我可以選擇PDF,它仍然給我同樣的錯誤。 謝謝您的幫助。

(感謝AVD的編碼, 如何在Crystal Report中導出為PDF文件? )。

編輯:在完成Phillipe的回復之后,我正在逐步完成我的代碼並注意到在將crEFTPortableDocFormat分配給FormatType之后,它會自動將“UXFPDF.DLL”分配給FormatDllName。 也許這是我的問題,有誰知道如何解決這個問題? 我試過重命名crxf_pdf.dll和u2fpdf.dll(我原來擁有的8.0版),但是沒有用。

編輯:另一個發現是,當我在CRViewer91中啟用導出選項(正確顯示報告)並嘗試通過此方法將其導出為pdf時,它不會出錯。 但是,它會保存一個已損壞的文件,並且無法打開。

編輯:更多的研究。 CRViewer91似乎無法成功導出任何格式。 RTF和TXT返回空白文檔,嘗試打開時出現RPT錯誤。

編輯:我認為我的問題的一部分可能是我一直在使用8.0 CRAXRT.DLL,而我實際需要的是9.0。 我找到了一個9.0,現在如何使用它而不是舊的?

我猜'filename'值不起作用,因為文件夾不存在/文件名無效,或者因為您沒有相應的權限來在此文件夾下創建文件。

你能嘗試一些基本參數的代碼,比如'filename =“c:\\ test.pdf”'嗎?

我的最后一個猜測:導出為pdf格式的可能性需要一個特定的dll文件在crystal文件夾下(不需要注冊,但需要在這里)。 你有crxf_pdf.dll文件嗎?

編輯:

我的上一個問題:你能從Crystal GUI中發布PDF嗎?

以下是必須與VB應用程序一起分發的水晶報表文件列表,如果有任何幫助:導出功能似乎鏈接到crxf _ * .dll文件

CRAnalyzer.dll
craxdrt.dll
crdb_ado.dll
crdeploy.reg
crheapalloc.dll
crqe.dll
crtowords_en.dll
crtslv.dll
crviewer.dll
crxf_html.dll
crxf_pdf.dll
crxf_rtf.dll
crxf_wordw.dll
crxf_xls.dll
cxlibw-1-6.dll
dbghelp.dll
exlate32.dll
ExportModeller.dll
GDIPLUS.DLL
Implode.dll
keycode.dll
msvcrt.dll
pageObjectModel.dll
querybuilder.dll
ReportRenderer.dll
riched20.dll
sscdlg.dll
sscsdk80.dll
u252000.dll
u25dts.dll
u25samp1.dll
u2dapp.dll
u2ddisk.dll
u2dmapi.dll
u2dpost.dll
u2fcr.dll
u2frdef.dll
u2frec.dll
u2fsepv.dll
u2ftext.dll
u2fxml.dll
u2l2000.dll
u2lcom.dll
u2ldts.dll
u2lexch.dll
u2lfinra.dll
ufmanager.dll
usp10.dll
webReporting.dll

我不確定導致所有錯誤的是什么,但是,我已經通過基本上從頭開始一個新項目並僅包含必要的參考和組件來修復它。 我知道我遇到的一個問題(導致TLV錯誤)是CR9的CRAXDRT.dll在Windows \\ system32目錄中,即使它引用了.dll,它也需要從Program Files \\ Common引用它Files \\ CrystalDecision ...目錄,其中CR9的所有其他.dll都位於此目錄中。

還需要進行一些次要的代碼更改,這里是最終的代碼,用於將我的導出為PDF。

Public Sub ExportReportToPDF(ReportObject As CRAXDRT.Report, ByVal filename As String, ByVal ReportTitle As String)

    Dim FormatDLLName As String

    ReportObject.ReportTitle = ReportTitle

    With ReportObject
        .EnableParameterPrompting = False
        .MorePrintEngineErrorMessages = True
    End With

    With ReportObject.ExportOptions
        .DestinationType = crEDTDiskFile
        .DiskFileName = filename
        '.FormatType = crEFTExcel80Tabular
        '.FormatType = crEFTCommaSeparatedValues
        '.FormatType = crEFTExcel80
        '.FormatType = crEFTHTML32Standard
        '.FormatType = crEFTHTML40
        .FormatType = crEFTPortableDocFormat
        '.FormatType = crEFTRichText
        '.FormatType = crEFTText
        '.FormatType = crEFTWordForWindows
    End With

    ReportObject.Export False

End Sub

我把那里注釋掉的FormatTypes留給了那些發現這段代碼有用的人。 菲利普,如果你想以某種方式“回答”這個,我很樂意為你提供一些代表,但是你提供的幫助卻是如此。 我沒有足夠的代表來支持你的東西。

無論如何,謝謝你的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM