Wpf Telerik PDFViewer - c#

In my application I am trying to print a pdf file silently. The code is working fine but it only works with Acrobat and not with reader. I am trying to embed telerik's pdf viewer to print the file in the background without showing it. As a first step I am trying to open a local pdf file in the viewer. I am using the code from the example.
pdfViewer.DocumentSource = new PdfDocumentSource(new System.Uri(#"c:\\temp\\Test.pdf", System.UriKind.Relative));
This code is not giving any errors but it is also not showing the file in the pdf viewer. How can I open a local file with pdf viewer and print it silently?
Thanks

Found the solution. Should be like this
pdfViewer.DocumentSource = new PdfDocumentSource(new Uri("c:\\temp\\Test.pdf"));

Related

How to open a report viewed in report viewer in excel without saving it first in VS2010 C#

I am building an application in c# using Visual studio 2010 with access database. I am using reportviewer of visual studio to view the reports which is working fine for me.
It has option to export your report in excel, PDF or word which needs to be saved first and then could be opened. But I want to open that report in excel without having to save it first.
I don't know if it is possible or not if it is kindly show me how? I will paste some pictures how it works
Here in the first step you will have to click on the export into one of the three
Then you would need to save the report
After saving, you can than open the report in excel, PDF or word but I would like to skip the second step of saving it and directly open it in excel.
You can handle ReportExport event of ReportViewer and set e.Cancel=true; then using Render method of its LocalReport or ServerReport property, export it to desired location.
ReportViewer - Export report programmatically to a specific location without showing save dialog
save the file in TempFolder ... after it saved , you can open it directly:
System.Diagnostics.Process.Start(#"YOUR_PATH");

Open a PDF file before it is finished downloading

I am writing a WPF software using .NET 4.5 to show the PDF Data in a Viewer. I am showing the PDF on the viewer directly from the server. That means before actually the PDf shows up in the viewer, the pdf is downloaded on the device and then when it finishes downloading, it shows on the viewer.
Do anybody has a idea on how to show the downloaded data on the viewer when it's being downloaded. I mean if the PDF file has 100 pages and it has finish downloading some data or pages then it starts showing some pages at first and it continue downloading the PDF on the background.
PS: I am using GDPicture as a viewer.
Save the file as Web Optimized
Optimizing PDFs
Enable Fast Web View

MVC, PDF response auto print

I am working with C# and MVC4, I am trying to open the print dialog when the pdf document is opened by clicking on print button by user.
I Google it, but I could not find any better solution for this.
One thing i can do is, I can create one view and embed the pdf document to the view then on open i can have jquery method to print the document. Is it a correct way?
Please suggest.
Calling print in the HTML document does not have to call the print in the PDF document displayed by the PDF plugin. Some browsers do seem to call the print command of the PDF plugin but this is not the standard behaviour. Also, there is no guarantee that a PDF plugin has been installed on all client computers.
You could create a auto-print pdf where the document is set to invoke its print command when it is opened in a PDF viewer application. This would work even if the document is saved and then opened outside the browser.

Can you print a pdf file using ITextSharp (c#) ? If yes how?

I have an ASPX page which builds a report. I have a print button which builds a pdf file using ITextSharp. Now I want to print that file.
I have two questions:
How do I print it with out even saving the file ?
and If I can't do this, can I at least print the saved file ?
Thanks in advance.
You cannot use iTextSharp to print PDF document. iTextSharp can be only used for reading or building PDF's.
What you can do is to show it to the user and then he can choose to print it or not.
Here is a sample how to push PDF document to user via C# ASP.NET: How To Write Binary Files to the Browser Using ASP.NET and Visual C# .NET
#Jared. Well what we did was to start the acrobat reader with printing parameters after we saved it on the file system. Something like:
ProcessStartInfo newProcess = new ProcessStartInfo(pdfPath, dfArguments);
newProcess.CreateNoWindow = true;
newProcess.RedirectStandardOutput = true;
newProcess.UseShellExecute = false;
Process pdfProcess = new Process();
pdfProcess.StartInfo = newProcess;
pdfProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
pdfProcess.Start();
pdfProcess.WaitForExit();
(please note this is not the actual code we used I got this from here) this should get you started.
For initializing adobe acrobat with printing parameters see this.
Hope it helps.
In ASP.NET you don't print anything, user does. Most you can do is bring up print dialog, but I personally find it very annoying when a web page suddenly opens a modal dialog.

Displaying a pdf file from Winform

I'm just creating a simple calculator in C# (windows form)
I've created a "User Help" which is a pdf file, what I want is to display that pdf file if the user clicks on the "Help" button in the WinForm. If assumed that Adobe reader is pre-installed on the user's machine....
How to open the pdf file on button click in winForm?
I don't plan to provide this pdf file on hard disk of user. Which means that I have to embed this pdf into the calculator (winForm) and have to display it on the button click.
Kindly guide me with the best practise for displaying an embedded file in winForm.
You can reference the Adobe Reader ActiveX control and bundle it with your application.
Simply add AcroPDF.PDF.1 to your Toolbox from the COM Components tab (right click toolbox and click Choose Items...) then drag an instance onto your Winform to have the designer create the code for you. Alternately, after adding the necessary reference you can use the following code:
AxAcroPDFLib.AxAcroPDF pdf = new AxAcroPDFLib.AxAcroPDF();
pdf.Dock = System.Windows.Forms.DockStyle.Fill;
pdf.Enabled = true;
pdf.Location = new System.Drawing.Point(0, 0);
pdf.Name = "pdfReader";
pdf.OcxState = ((System.Windows.Forms.AxHost.State)(new System.ComponentModel.ComponentResourceManager(typeof(ViewerWindow)).GetObject("pdfReader.OcxState")));
pdf.TabIndex = 1;
// Add pdf viewer to current form
this.Controls.Add(pdf);
pdf.LoadFile(#"C:\MyPDF.pdf");
pdf.setView("Fit");
pdf.Visible = true;
You could use the WebBrowser control and let IE load a PDF reader for you if there is one installed on the machine.
However the last time I tried this, I had to write the PDF file to disk first, so I could point the WebBrowser control at it.
I would put it on within my program folder, add a link within my Start Menu folder to allow a direct access (without starting my tool) and just at on some click event System.Diagnostics.Process.Start(#".\Manual.pdf");
Update
Ok, now we come to a completely new question: How to embed a file in my application and start it?
For this question you'll find already several answers here, but here is the short version:
Right click your project and select Add - Existing Item
Select your file (don't double click it)
Click the little arrow next to the Add button and select Add As Link
Double click on Properties - Resources.resx
Click the little arrow next to Add Resource and select Add Existing File
Select the same file again in the open dialog
Now you can access the file within your code as byte[] from Properties.Resources.NameOfResource
With these steps you reference your file where ever it exists within your structure. If you like that a copy of your pdf file will be put into a subfolder Resources within your project, just skip the points one and two in the above list.
To get your pdf now opened, you'll have to write the byte[] down to disk (maybe with Path.GetTempFileName()) and start it with Adobe Reader. (Don't forget to delete the file after usage)
There is a C# pdf viewer project on google code. http://code.google.com/p/pdfviewer-win32/
there is the viewer and there is the library that it uses available that uses mupdf and xpdf to render the pdf documents in your winforms program. I am currently developing a User control library for people to use and drop into their programs for pdf viewing capabilities. it works pretty good.
If you want to display a pdf inside your application, the WebBrowser control is probably preferable over the Adobe Reader control, as it will open the file very smoothly in PDF Reader or whatever IE is using as a default to open pdfs. You simply add the WebBrowser control to an existing or new form and navigate to the pdf file.
Never assume that a user has Adobe or any other third party controls or libraries installed on their machines, always package them with your executable or you may have problems.
The Adobe Reader control obviously doesn't integrate as well with .NET as an intrinsic Windows component. As a rule, I always favor the use of built in .Net controls over third party vendors. As far as embedding the file in the actual executable; not going to happen until Microsoft decides any old PDF can be worked into the CLS and compiled into MSIL. What you have when you develop any app in .NET is code that can be compiled into intermediate MSIL to be translated at runtime by the CLR into native code and executed in the OS.
WebBrowser1.Navigate("SomePDF.pdf");
If your user has Adobe Reader (or any other PDF reader) installed on their machine, you could use:
System.Diagnostics.Process.Start(
"My-PDF-file.pdf");
Hope this helps.
Note: Obviously, this will fail if the user does not have any PDF Reader applications installed.
I would suggest converting your pdf file to a Microsoft help file, so that you don't need to have Adobe Reader installed (it's buggy, and has way too much security issues). You cannot expect users to have this.
In reply to the starter's comment:
Yes you would need to create your help file as an HTML document instead of a pdf. There is no easy way to convert pdf to HTML.
Getting the embedded file out should not be a problem at all. This is not dependent on it being .pdf format, and you can just look for a separate solution there.
For display, unless you know Acrobat or similar is installed (well, even Edge can open those files nowadays), or if you want to display the file embedded in a WinForms application, there is
Codeproject Solution
https://www.codeproject.com/Articles/37458/PDF-Viewer-Control-Without-Acrobat-Reader-Installe
written in VB relying on lots of (partially commercial, if your solution is commercial) libraries.
PdfiumViewer
https://github.com/pvginkel/PdfiumViewer
is great and also available via NuGet.
The PdfiumViewer library primarily consists out of three components:
•The PdfViewer control. This control provides a host for the PdfRenderer control and has a default toolbar with limited functionality;
•The PdfRenderer control. This control implements the raw PDF renderer. This control displays a PDF document, provides zooming and scrolling functionality and exposes methods to perform more advanced actions;
•The PdfDocument class provides access to the PDF document and wraps the Pdfium library.
It is an all-in-one solution for display and comes with a friendlier Apache 2.0 license.
edit, added sample code, for your convenience :) I included the following
data = File.ReadAllBytes(#"C:\temp\abc.pdf");
PdfiumViewer.PdfDocument doc;
using (Stream stream = new MemoryStream(data))
{
doc = PdfiumViewer.PdfDocument.Load(stream);
var viewer = new PdfiumViewer.PdfViewer();
viewer.Document = doc;
var form = new System.Windows.Forms.Form();
form.Size = new Size(600, 800);
viewer.Dock = System.Windows.Forms.DockStyle.Fill;
form.Controls.Add(viewer);
form.ShowDialog();
}
This generates a form on the fly, of course you could also use the designer.
It might be possible to embed Adobe's Reader in your form as an ActiveX component. But that means you'll have to make sure Reader is installed on the client machine for that to work.
In case it doesn't have to be strictly embedded you can just launch the PDF file and let whatever viewer the user has open it.
How to open PDF file with relative path
In this case the created Application has to run on several PC´s. To reference on a file which is not in the network, but in the Programm Folder itself, use the following code Snippet:
First of all include the following Library:
using System.IO;
Then use a Button, picturebox, or whatever to create a ClickEvent and use the following code snippet:
private void pictureBox2_Click(object sender, EventArgs e)
{
//get current folderpath of the .exe
string ProgramPath = AppDomain.CurrentDomain.BaseDirectory;
//jump back relative to the .exe-Path to the Resources Path
string FileName = string.Format("{0}Resources\\Master_Thesis_Expose.pdf", Path.GetFullPath(Path.Combine(ProgramPath, #"..\..\")));
//Open PDF
System.Diagnostics.Process.Start(#"" + FileName + "");
}
|Thumb up|
AxAcroPDF1.LoadFile("C:ShippingForm.pdf")
AxAcroPDF1.src = "C:ShippingForm.pdf"
AxAcroPDF1.setShowToolbar(False)
AxAcroPDF1.setView("fitH")
AxAcroPDF1.setLayoutMode("SinglePage")
AxAcroPDF1.setShowScrollbars(False)
AxAcroPDF1.Show()

Categories

Resources