如何通过VB.net创建PDF文件

时间:2013-07-23 09:34:48

标签: vb.net pdf-generation vb.net-2010

这里我使用vs 2010并在系统中安装Adobe Reader 11.0。我试过像 -

这样的东西
Private Sub OpenButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenButton.Click

    Dim open1 As FileDialog
    Dim inFileName As String
    Dim outFileName As String
    Dim i As Long
    open1.Filter = "All Files (*.*)|*.*"
    """
    "'"""
    ""       
End Sub

1 个答案:

答案 0 :(得分:0)

答案取决于你真正想要打印的内容; for Excel(旧版本)我经常打印到postscript打印机驱动程序;然后使用GhostScript命令行将PS转换为PDF。

您需要拥有GhostScript文件。这是代码:

Option Explicit
    Dim PSPrinterSetupName As String
    Dim svPsFileName As String
    Dim svPDFName As String


Sub testRun()
    'set up a printer using driver "HP C LaserJet 4500-PS" or something similar
    'name it "PostScript Writer"
    'set it to "print to file"

    'set the name of the printer to use
    PSPrinterSetupName = "PostScript Writer"

    'set the postscript file name (must be 8.3 notation;
    'no long names; no spaces; you can move and rename the file later)
    svPsFileName = "C:\Temp\input1.ps"

    'set the PDF name (must be 8.3 notation;
    'no long names; no spaces; you can move and rename the file later)
    svPDFName = "C:\Temp\Output1.PDF"

    Call printToPS
    Call ConvertToPDF
End Sub

Sub printToPS()
    Dim PrinterInUse As String
    PrinterInUse = Application.ActivePrinter
    Worksheets("Sheet1").PrintOut ActivePrinter:=PSPrinterSetupName, PrintToFile:=True, PrToFileName:=svPsFileName
    Application.ActivePrinter = PrinterInUse
End Sub

Sub ConvertToPDF()
    Dim fso
    Dim lcCmd As String

    Set fso = CreateObject("Scripting.FileSystemObject")

    lcCmd = "C:\Progra~1\GS\Misc\GhostS~1\GSWIN32C.EXE " & _
    "-q -dNOPAUSE -IC:\Progra~1\GS\Misc\GhostS~1\lib;./fonts " & _
    "-sFONTPATH=./fonts -sFONTMAP=C:\Progra~1\GS\Misc\GhostS~1\lib\FONTMAP.GS " & _
    "-sDEVICE=pdfwrite -sOUTPUTFILE=" & svPDFName & " -dBATCH " & svPsFileName
    Shell (lcCmd)

End Sub