Load PDF in WebBrowser control - c#

I have a small C# application where I load a PDF into the Web browser control which I named webBrowser. When I load it, it starts in the Acrobat Reader witch was set as my default viewer.
The problem I have is that when I change the default viewer for my system, in the webBrowser the PDF will be still loaded with Acrobat Reader.
My code:
webBrowser_.Navigate(filePath);
Any idea how to solve this issue?

Related

Automatically save PDF displayed in WebBrowser Control?

I have a C# WinForms app that runs the WebBrowser control to automatically login, navigate through some pages, and ultimately arrive to page that displays a PDF. I would like to automatically save this PDF whenever I arrive to this page but I have been unable to do this automatically.
Is there a way to automatically click "save" in the webBrowser1.ShowSaveAsDialog() window? Or is there another way to save the PDF that I have successfully displayed in the webbrowser?
Additionally, I have tried to download the PDF using WebClient but this returns a HTML page with failed user/password info. Also, webBrowser1.Document is null so I'm unable to access the document as I would other pages in this routine.

Get Current Page in a PDF in windows application

I have a application where I have a pdf to show. I used AxAcroPDFLib. I can successfully show any pdf in that control. Now I want to get the current page of that pdf. There is no method like getCurrentPage in AxAcroPDFLib.
How to get that current page number. I searched it but did not find any solution for this.
You're not showing the code you currently are using, but your problem likely stems from the fact that you don't realize there is an additional layer present here. The document methods in the Adobe PDF library truly only deal with the PDF file itself and a PDF file doesn't have a current page number.
To display PDF documents, Acrobat uses an AVPageView. The AVPageView is your link for anything that concerns the display of your PDF files.
AVPageView has a method to get the currently visible page:
PDPageNumber AVPageViewGetPageNum(AVPageView pageView)
So from the document, get its page view and work with that to get the page number, zoom factor, display mode and so on.

Displaying PDF on WebBrowser Control not working

I Have a test.pdf and I want to display it inside in my form.
My code is very simple:
public Form1()
{
InitializeComponent();
this.wbPdf.Navigate(#"file:///<fullpath>\test.pdf#toolbar=0");
}
and it's not working. It's showing me a white page with an "X".
But if I do instead this:
this.wbPdf.Navigate(#"file:///<fullpath>\test.pdf#toolbar=0", true);
the IE opened and it showed my pdf. Of course, I tried to use false in the second parameter and it's not working.
Also, if I tried to do something like
this.wbPdf.Navigate(#"http://www.google.com");
it showed me google, so I think there isn't any problem of configuration of Web Browser Control
Any ideas? I'm not will be able to have Acrobat Reader installed, so using ActiveX components is not an option (also, this project is in x64 and I've read that this component is not working very well in x64).
I want to display the pdf only for viewing inside the form, not in another window.
AFAIK, the web browser control in WinForms relies on the default PDF reader (usually Acrobat Reader) for displaying PDF files. If you need to display PDF files without requiring any other piece of software to be installed, then you will probably need to use a PDF rendering library in your application. Some examples of PDF rendering libraries:
MuPDF A GPL/Commercial viewer with a .net wrapper, you need a commercial license for use on commercial closed-source applications.
Amyuni PDF Creator .Net Commercial library for editing or displaying PDF files. Disclaimer: I currently work as a developer of the library.
Another option would be to create a local HTML5 page that renders the PDF file using the project pdf.js, then embeed that page on your web browser control. But this will only work on Windows systems with IE 9.0 or above.

Releasing displayed pdf files in webbrowser control

I have a webbrowser control in my winforms application to display a selected pdf file, after this i want to move the pdf file to an other location.
When i trie to move the pdf file it is giving me an error that the file is in use. I tried to make the webbrowser navigate to a other page before it is moved but it still give me this error that the file is used by an other process.
How can i release this pdf file so i can just move it? Disposing the webbrowser didn't do the trick.
They say "Adobe Acrobat and Adobe Reader are designed to continue running for a few minutes after you close the browser window in which you viewed PDF files."
The workaround for this seems to be :
Copy the PDF to a temporary file and display it, and then when you navigate away, it doesn't matter if AcroRD32.exe holds onto the PDF for a few minutes because you can still do what you need with the original!
The following code releases for me the pdf file, which was displayed in WebBrowser, so I can move it:
webBrowser.Navigate("about:blank")
Also see: How can i delete the file that has been navigated in a webbrowser control?
I have had a similiar problem, which was that the form with opened pdf file in browser was hidden and then a new instance of the form was opened, which triggered the same file locked error. For me Disposing of the WebBrowser control just before hiding the form helped.

Prevent user from printing/saving PDF file in C#

I am writing an application that views PDF files, this application uses AxAcroPDFLib AxAcroPDF
My problem here is that I want to prevent user from saving and/or printing PDF files that are being viewed in my application
Or in other words I want to hide toolbar of the PDF viewer
any ideas ?!
Thanx in advance
I solved the problem by using another plugin to view PDF files PDF Viewer
You can able to hide the toolbar by
axAcroPDF1.setShowToolbar(false);

Categories