Opening a .pdf file in windows form through a button click

57,416

Solution 1

To open a file with a system default viewer you need call

System.Diagnostics.Process.Start(filename);

But I haven't understood the problem with a filepath. If you need a relative path from the program .exe file to a folder with resources, then you can add "Resources\" or "..\Resources\" (if Resources folder is higher) to your filepath.

Or you can add your pdf to a project as an embedded resource and then, when you need to open it, you can save it to some temporal location using

Path.GetTempPath()

and open it.

Solution 2

If you want to open the pdf file using Adobe Reader or similar application, you can use Process.Start function.

ProcessStartInfo startInfo = new ProcessStartInfo("pathtofile");
Process.Start(startInfo);

This will behave as you clicked on the file in Windows folder. If you cannot place the file path, then you can copy file from resource to a temporary folder and use that path.

Share:
57,416
Jed5931
Author by

Jed5931

Updated on July 29, 2022

Comments

  • Jed5931
    Jed5931 almost 2 years

    On the current window that I have, I have a button. I want to be able to click the button and open up a .pdf file which is in the resources folder of this project. Is there an easy want to do this?

    The other methods I've looked at uses filepaths but the filepaths may not be the same all the time but the .pdf file will be in the resources folder at all times. Is there a way to access this and open it when the button is clicked?

    Anything along the lines of?

    string filename = "instructions.pdf";
    file.open();
    

    Problem solved with

    private void Button1_Click(object sender, EventArgs e)
    {
        string filename = "instructions.pdf";
        System.Diagnostics.Process.Start(filename);
    }
    

    With instructions.pdf in the bin/debug folder where the program.exe is.

  • Jed5931
    Jed5931 about 8 years
    My problem with the path was that it may include C:\My Documents and if I was to open it in a different computer, the path wouldn't necessarily be the same. I'll try to work it out with your suggestion
  • Artem
    Artem about 8 years
    You can keep the file near the application (in the same folder) and open it just as "instructions.pdf" without specifying folder.
  • t.durden
    t.durden over 4 years
    this will not guarantee opening of Acrobat Reader. It will open in the machines default app for PDF files, not the same thing.
  • John Dyer
    John Dyer over 3 years
    The Process.Start() mostly worked. I was seeing error: “The specified executable is not a valid application for this OS platform” That was resolved by this post: stackoverflow.com/a/47066203/2862 I was running as a .NET Core 3.1 WinForms add under Windows 10.