dcsimg
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 8 of 8

Thread: Print PDF Files

  1. #1
    Join Date
    May 2009
    Location
    London
    Posts
    51

    Print PDF Files

    Hi All,

    Been having nightmares with this one so any help would be greatly appreciated.

    Using VB6 I am trying to print multiple existing PDF files to the default printer ideally as a silent background process.

    Attempt 1. Using the Adobe ActiveX control
    Code:
    for x = 1 to ...
        AcroPDF1.LoadFile FileList(x)
        AcroPDF1.PrintAll
    next
    The above fails completely because there is no way of knowing when the load or the print has completed so I cannot reuse the control again in the loop and also I can't close the form containing the control before printing has completed.

    Attempt 2. Using ShellExecute
    Code:
                Call ShellExecute(hWnd, "Print", PDFFile, "", "", 0)
    The above is better but this leaves open a blank Adobe viewer window and also works as a background process so I cannot delete the PDF files until I know the print has completed (how?)


    Ideally what I need is a simple function which will print a specified PDF file and wait until printing has completed (entire document has been spooled).

    This should be so simple?

  2. #2
    Join Date
    Jan 2006
    Location
    Fox Lake, IL
    Posts
    15,007

    Re: Print PDF Files

    0 is telling it to SW_HIDE. I'd try just using a SHELL command. Unless Adobe is told to stay open.


    Code:
    Option Explicit
    
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    
    Private Const SW_HIDE As Long = 0
    Private Const SW_SHOWNORMAL As Long = 1
    Private Const SW_SHOWMINIMIZE As Long = 2
    Private Const SW_SHOWMAXIMIZED As Long = 3
    Private Const SW_SHOWNOACTIVATE As Long = 4
    Private Const SW_SHOW As Long = 5
    Private Const SW_MINIMIZE As Long = 6
    Private Const SW_SHOWMINNOACTIVED As Long = 7
    Private Const SW_SHOWNA As Long = 8
    Private Const SW_RESTORE As Long = 9
    Private Const SW_SHOWDEFAULT As Long = 10
    
    'SW_HIDE 0
    'Hides the window and activates another window.
    'SW_MAXIMIZE 3
    'Maximizes the specified window.
    'SW_MINIMIZE 6
    'Minimizes the specified window and activates
    'the next top-level window in the Z order.
    'SW_RESTORE 9
    'Activates and displays the window. If the window
    'is minimized or maximized, Windows restores it
    ' to its original size and position. An application
    'should specify this flag when restoring a minimized window.
    'SW_SHOW 5
    'Activates the window and displays it in its current size and position.
    'SW_SHOWDEFAULT 10
    'Sets the show state based on the SW_ flag
    ' specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window.
    'SW_SHOWMAXIMIZED 3
    'Activates the window and displays it as a maximized window.
    'SW_SHOWMINIMIZE 2
    'Activates the window and displays it as a minimized window.
    'SW_SHOWMINNOACTIVED 7
    'Displays the window as a minimized window. The active window remains active.
    'SW_SHOWNA 8
    'Displays the window in its current state. The active window remains active.
    'SW_SHOWNOACTIVATE 4
    'Displays a window in its most recent size
    'and position. The active window remains active.
    'SW_SHOWNORMAL 1
    'Activates and displays a window. If the window is minimized or
    'maximized, Windows restores it to its original size and position.
    'An application should specify this flag when displaying the window
    'for the first time
    
    
    Private Sub Command1_Click()
      ShellExecute 0&, "OPEN", "www.msn.com", vbNullString, "C:\", SW_SHOWMINIMIZE
    '    ShellExecute 0&, "OPEN", "D:\temp\pps-cd\play.bat", vbNullString, "C:\", SW_SHOWNORMAL
    '    ShellExecute 0&, "OPEN", "outlook.exe", vbNullString, "C:\", SW_SHOWNORMAL
    '    ShellExecute 0&, "PRINT", "D:\temp\jazz.txt", vbNullString, "D:\temp", SW_SHOWMINIMIZE
        Beep
     '  c:\program files\outlook express\msimn.exe
     '  c:\ = Destination Folder
    End Sub
    David

    CodeGuru Article: Bound Controls are Evil-VB6
    2013 Samples: MS CODE Samples

    CodeGuru Reviewer
    2006 Dell CSP
    2006, 2007 & 2008 MVP Visual Basic
    If your question has been answered satisfactorily, and it has been helpful, then, please, Rate this Post!

  3. #3
    Join Date
    Nov 2010
    Posts
    4

    Re: Print PDF Files

    Hi.

    First of all, sorry for my hopeless english.

    Killa, I have to print several PDF files from mi VB6 application, and I don't know what should I do to wait for a document printing to be completed to continue printing the next file.

    I have looked it up and still having no idea... do you know how can my application wait for a document to be spooled?

    Thanks in advance.

    M.

  4. #4
    Join Date
    Nov 2010
    Posts
    4

    Re: Print PDF Files

    Sorry.

    This is the sentence I use to print documents:
    ShellExecute hwnd, "print", strFileToPrintPath & "filename.pdf", vbNullString, vbNullString, 1

    Thanks again.

  5. #5
    Join Date
    Jan 2006
    Location
    Fox Lake, IL
    Posts
    15,007

    Re: Print PDF Files

    You might be able to write a batch file (.cmd) under Vista+
    Code:
    start /wait shellandwaitprocess.exe
    That will trigger WINDOWS to close the window when the process ends
    David

    CodeGuru Article: Bound Controls are Evil-VB6
    2013 Samples: MS CODE Samples

    CodeGuru Reviewer
    2006 Dell CSP
    2006, 2007 & 2008 MVP Visual Basic
    If your question has been answered satisfactorily, and it has been helpful, then, please, Rate this Post!

  6. #6
    Join Date
    Nov 2010
    Posts
    4

    Re: Print PDF Files

    Hi, dglienna.

    I'm working under Windows 2003.

    But, could you please explain it? Because I'm desperate and any help is higly appreciated.

    Thanks.

  7. #7
    Join Date
    May 2009
    Location
    London
    Posts
    51

    Re: Print PDF Files

    Hi,

    I eventually gave up on this, but as a pointer I don't think the shell and wait will work because Adobe wasn't terminating after the executing the print command. I think this is only possible using the Pro version.

  8. #8
    Join Date
    Nov 2010
    Posts
    4

    Re: Print PDF Files

    I agree with you, Killa.

    But I have to try, I'm really stubborn ;-)

    Any suggestion? Maybe another way to achieve it.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Windows Mobile Development Center


Click Here to Expand Forum to Full Width




On-Demand Webinars (sponsored)