How do I save a pdf file using Powershell?

Welcome Forums General PowerShell Q&A How do I save a pdf file using Powershell?

Viewing 0 reply threads
  • Author
    Posts
    • #5388
      Member
      Topics: 1562
      Replies: 0
      Points: 0
      Rank: Member

      by karmista at 2013-01-01 05:54:00

      Using the below IE Application object, I am logging into a http website by providing username and password & attempting to download pdf files.
      new-object -com InternetExplorer.Application

      I have over a million files that needs to be downloaded.

      Currently, I get a "Find/ Save/ Cancel" prompt.

      How do I save the pdf file without getting this prompt?
      If the prompt cannot be avoided, there should be some way I can programatically press the save button & provide a name and save the file.
      (Sendkeys method did not work well)

      Attempted Browsers: IE 8 & IE 9

      $wshell = New-Object -ComObject WScript.Shell
      $id = (gps iexplore* | where {$_.MainWindowTitle -match "MyProg"}).id
      Write-host $id
      $wshell.AppActivate($id)
      start-sleep -milliseconds 100;
      $wshell.SendKeys("%{S}");

      by DonJ at 2013-01-01 09:22:06

      Not using PowerShell. Besides the fact that you're going through several layers to get to that COM object, it just isn't what PowerShell's designed for. If you *had* to do this with IE, I'd consider exploring AutoIt, or something else designed for that. PowerShell would want you to go down a more programmatic approach and not use IE at all. You'd create a WebRequest, feed it the URL, get the response back as a binary stream, and then write that binary stream to a file. It's a bit more complicated from a programming perspective, but it's more reliable. IE's goofy.

      http://www.codeguru.com/columns/dotnett ... lasses.htm has the basic methodology, although the code is in C# and you'd need to translate. You can also do some searching for "powershell curl" and "powershell wget" – folks have solved this before in various ways. v3 has Invoke-WebRequest, which may shortcut the process a bit if you're using v3.

      by karmista at 2013-01-02 04:52:34

      Thanks Donj!

      Will explore Invoke-WebRequest

      The C# code looks puzzling as I'm a windows server admin. PowerShell comes in naturally. 🙂

      Using powershell, I had almost got to the point where I get a save prompt. Thought if I can just get that working, it'd be perfect.
      Yes, I can use PowerShell V3 to take the advantage of its workflows as well.

      by karmista at 2013-01-02 05:04:51

      If I had a clear cut download url without any login required, I could have used the below System.Net.WebClient object.

      PS > $source = "http://www.leeholmes.com/favicon.ico"
      PS > $destination = "c:\temp\favicon.ico"
      PS >
      PS > $wc = New-Object System.Net.WebClient
      PS > $wc.DownloadFile($source, $destination)

      Source: http://answers.oreilly.com/topic/2006-h ... owershell/

      However, my scenario is:

      1) Login to a website via providing credentials in the application i.e. within the username/password text box.
      2) Post a url
      EG: http://10.12.1.12/myapp/myfile.aspx?docid=49000
      3) A standard pdf file gets generated i.e. myfile.pdf when I send this request from an authenticated IE browser session.
      4) Save this pdf

      5) Rename it to 49000.pdf [Here, 49000 is the doc id.]
      6) Repeat steps 2 to 5 a million times to download all the docs.

Viewing 0 reply threads
  • The topic ‘How do I save a pdf file using Powershell?’ is closed to new replies.