Opening a .pdf file in windows form through a button click
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.
Jed5931
Updated on July 29, 2022Comments
-
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 about 8 yearsMy 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 about 8 yearsYou can keep the file near the application (in the same folder) and open it just as "instructions.pdf" without specifying folder.
-
t.durden over 4 yearsthis will not guarantee opening of Acrobat Reader. It will open in the machines default app for PDF files, not the same thing.
-
John Dyer over 3 yearsThe 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.