To reproduce: public Form1() { InitializeComponent(); this.radPdfViewer1.DocumentLoaded += radPdfViewer1_DocumentLoaded; } private void radPdfViewer1_DocumentLoaded(object sender, EventArgs e) { var pdf = (RadPdfViewerElement)sender; var doc = new RadPrintDocument(); doc.AssociatedObject = pdf.ElementTree.Control as RadPdfViewer; doc.PrinterSettings.PrintRange = System.Drawing.Printing.PrintRange.SomePages; doc.PrinterSettings.FromPage = 2; doc.PrinterSettings.ToPage = 1; doc.PrinterSettings.PrintFileName = @"..\..\Once upon a time.pdf"; pdf.Print(showPrinterSettings: false, document: doc); } Workaround: check FromPage before printing.
There is opportunity to further optimize the caching mechanism of the image sources, which will reduce the memory consumption. The fast scrolling in a document containing big images could lead to an OutOfMemoryException. Openining very large images as well.
RadPdfViewer can not display annotated PDF file Kindly,i used VintaSoft SDk to Annotate PDF File, File is annotated successfully and i can open it with Adobe Reader and see annotations is added to it but while i try to view annotated PDF file using RadPDFViewer File will displayed without annotations ,only original content displayed. Kindly find my attached AnnotatedPDFfile To be loaded in RadPDfViewer
RadPdfViewer can not display annotated PDF file Kindly,i used VintaSoft SDk to Annotate PDF File, File is annotated successfully and i can open it with Adobe Reader and see annotations is added to it but while i try to view annotated PDF file using RadPDFViewer File will displayed without annotations ,only original content displayed. Kindly find my attached AnnotatedPDFfile To be loaded in RadPDfViewer
Workaround: public Form1() { InitializeComponent(); string pdfFilePath = Path.Combine(Application.StartupPath, "testfile1.pdf"); radPdfViewer1.LoadDocument(pdfFilePath); this.radPdfViewer1.PdfViewerElement.VScrollBar.ValueChanged+=VScrollBar_ValueChanged; } private void VScrollBar_ValueChanged(object sender, EventArgs e) { this.radPdfViewer1.PdfViewerElement.InvalidatePages(); }
Workaround: until the feature be implemented one can print each page individually respecting its orientation whether it is portrait or landscape public partial class Form1 : Form { public Form1() { InitializeComponent(); this.radPdfViewer1.LoadDocument(@"..\..\sample.pdf"); } private void radButton1_Click(object sender, EventArgs e) { RadPrintDocument doc = new RadPrintDocument(); doc.AssociatedObject = this.radPdfViewer1; for (int i = 0; i < this.radPdfViewer1.Document.Pages.Count; i++) { RadFixedPage page = this.radPdfViewer1.Document.Pages[i]; doc.CurrentPage = i; doc.PrinterSettings.PrintRange = PrintRange.CurrentPage; doc.Landscape = page.ActualWidth > page.ActualHeight; doc.Print(); } } }
To reproduce: - Print a document that fills the entire page. - On the print preview dialog the page is centered however when printed it is not. In addition, one should be able to control the page scaling.
at System.Drawing.Drawing2D.GraphicsPath.Clone() at Telerik.WinControls.PdfViewer.PdfElementsRenderer.RenderGlyph(Glyph glyph) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawGlyph(Glyph glyph, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawGlyphsLayoutBox(GlyphsLayoutBox glyphBox, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContainer(Container container, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContainer(Container container, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawPage(ContentCollection content, Graphics graphics, Matrix pageTransform) at Telerik.WinControls.UI.RadFixedPageElement.pageRenderer_DoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument) at System.Drawing.Drawing2D.GraphicsPath.Clone() at Telerik.WinControls.PdfViewer.PdfElementsRenderer.RenderGlyph(Glyph glyph) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawGlyph(Glyph glyph, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawGlyphsLayoutBox(GlyphsLayoutBox glyphBox, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContainer(Container container, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContainer(Container container, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawPage(ContentCollection content, Graphics graphics, Matrix pageTransform) at Telerik.WinControls.UI.RadFixedPageElement.pageRenderer_DoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
1- the load of a document take a while to load (if successed). 2- An unhandled exception thrown while loading a document (Out of memory or Invalid parameter) the file that i'm trying to load is attached and created using Telerik Document Processing Library. ************** Exception Text ************** System.ArgumentException: Parameter is not valid. at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format) at System.Drawing.Bitmap..ctor(Image original, Int32 width, Int32 height) at System.Drawing.Bitmap..ctor(Image original) at Telerik.WinControls.PdfViewer.PdfElementsRenderer.RenderImage(ImageSource source, ResourceKey key, BackgroundWorker cancellationToken) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawImage(Image image, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContainer(Container container, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContainer(Container container, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawContentElement(IContentElement contentElement, Graphics graphics) at Telerik.WinControls.PdfViewer.FixedPageRenderer.DrawPage(ContentCollection content, Graphics graphics, Matrix pageTransform) at Telerik.WinControls.UI.FixedPagePreRenderer.rendererWorker_DoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument) Thank you
PDF Export needs to support certificate signatures so the end user of the document knows the document hasn't been changed.
Workaround: print the document page by page: private void radButton1_Click(object sender, EventArgs e) { RadPrintDocument d = new RadPrintDocument(); d.PrinterSettings.PrintRange = PrintRange.CurrentPage; d.AssociatedObject = this.radPdfViewer1; for (int i = 0; i < this.radPdfViewer1.Document.Pages.Count; i++) { d.CurrentPage = i; d.Print(); } }
Note: If you use the next button to navigate to the next search result, the user should be notified when the end of the document is reached as well. Workaround: public Form1() { InitializeComponent(); this.radPdfViewer1.LoadDocument(@"..\..\..\samplePdf.pdf"); //create a new button CommandBarButton findNext = new CommandBarButton(); findNext.Text = PdfViewerLocalizationProvider.CurrentProvider.GetLocalizedString(PdfViewerStringId.NavigatorFindNextButton); findNext.Click += findNext_Click; findNext.Image = this.radPdfViewerNavigator1.FindNextButton.Image; //hide the currently available button this.radPdfViewerNavigator1.DefaultStrip.Items.Add(findNext); this.radPdfViewerNavigator1.FindNextButton.Visibility = ElementVisibility.Collapsed; } private void findNext_Click(object sender, EventArgs e) { if (this.radPdfViewerNavigator1.SearchTextBox.Text != string.Empty) { if (this.radPdfViewerNavigator1.AssociatedViewer == null || this.radPdfViewerNavigator1.AssociatedViewer.Document == null) { return; } PropertyInfo internalDocumentPI = typeof(RadFixedDocument).GetProperty("InternalDocument", BindingFlags.NonPublic | BindingFlags.Instance); object internalDocument = internalDocumentPI.GetValue(this.radPdfViewerNavigator1.AssociatedViewer.Document, null); object textSearch = internalDocument.GetType().GetProperty("TextSearch", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(internalDocument, null); MethodInfo mi = textSearch.GetType().GetMethod("Find", BindingFlags.Public | BindingFlags.Instance); TextSearchOptions searchOptions = new TextSearchOptions(false); SearchResult searchResult = mi.Invoke(textSearch, new object[2] { this.radPdfViewerNavigator1.SearchTextBox.Text, searchOptions }) as SearchResult; if (searchResult.Result != null) { this.radPdfViewerNavigator1.AssociatedViewer.Select(searchResult); } else { RadMessageBox.Show("No matches"); } } }