private DrawingVisual LayoutHeadingAndNumber(int pageNumber, string Heading, int fontSize, System.Windows.Media.Brush brush) { DrawingVisual title = new DrawingVisual(); using (DrawingContext titleContext = title.RenderOpen()) { TextPreformats text3 = GetPageNumbers(pageNumber); //TODO this must be parameterised, HARD CODED DEMO ONLY TextPreformats headingDemo = new TextPreformats(Heading, fontSize, brush); TextPreformats footerTitle = new TextPreformats(System.DateTime.Today, 14, System.Windows.Media.Brushes.Green); Rect contentBox = _paginator.GetPage(pageNumber).ContentBox; PlaceHeadingFooting(headingDemo, contentBox, Positions.Topleft, titleContext); if (text3.textHeight < _footerSize + 2) { PlaceHeadingFooting(text3, contentBox, Positions.BottomRight, titleContext); } PlaceHeadingFooting(text3, contentBox, Positions.Topright, titleContext); if (text3.textHeight < _footerSize + 2) { PlaceHeadingFooting(footerTitle, contentBox, Positions.Bottomleft, titleContext); } } return(title); }
/// <summary> /// 下一个页面 /// </summary> public void NextPage() { CurrentPageIndex++; var documentPage = _paginator.GetPage(CurrentPageIndex); OnPageChanged(documentPage); }
public override DocumentPage GetPage(int pageNumber) { //что бы paginator.PageCount вернул корректное значение нужно сформировать все страницы if (!paginator.IsPageCountValid) { var totalPages = 0; while (paginator.GetPage(totalPages++) != DocumentPage.Missing) { } } if (selection == PageRangeSelection.UserPages) { pageNumber = pageNumber + Math.Min(range.PageFrom, paginator.PageCount) - 1; } var originalVisual = paginator.GetPage(pageNumber).Visual; var visual = new ContainerVisual(); var pageVisual = new ContainerVisual { Transform = new TranslateTransform( Margins.Left, Margins.Top) }; pageVisual.Children.Add(originalVisual); visual.Children.Add(pageVisual); var header = Header(pageNumber); if (header != null) { var headerContainer = new ContainerVisual { Transform = new TranslateTransform(Margins.Left, 0) }; headerContainer.Children.Add(header); visual.Children.Add(headerContainer); } var footer = Footer(pageNumber); if (footer != null) { var footerContainer = new ContainerVisual { Transform = new TranslateTransform(Margins.Left, PageSize.Height - Margins.Bottom) }; footerContainer.Children.Add(footer); visual.Children.Add(footerContainer); } var documentPage = new DocumentPage(visual, pageSize, new Rect(new Point(), pageSize), new Rect(new Point(Margins.Left, Margins.Top), ContentSize())); return(documentPage); }
public override DocumentPage GetPage(int pageNumber) { // Get the requested page. DocumentPage page = flowDocumentPaginator.GetPage(pageNumber); // Wrap the page in a Visual. You can then add a transformation and extras. ContainerVisual newVisual = new ContainerVisual(); newVisual.Children.Add(page.Visual); // Create a header. DrawingVisual header = new DrawingVisual(); using (DrawingContext context = header.RenderOpen()) { Typeface typeface = new Typeface("Times New Roman"); FormattedText text = new FormattedText("Page " + (pageNumber + 1).ToString(), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, 14, Brushes.Black); // Leave a quarter-inch of space between the page edge and this text. context.DrawText(text, new Point(96 * 0.25, 96 * 0.25)); } // Add the title to the visual. newVisual.Children.Add(header); // Wrap the visual in a new page. DocumentPage newPage = new DocumentPage(newVisual); return(newPage); }
public override DocumentPage GetPage(int pageNumber) { DocumentPaginator dpg = keepFixedDoc.DocumentPaginator; DocumentPage dp = dpg.GetPage(pageNumber); return(dp); }
public override DocumentPage GetPage(int pageNumber) { var page = _paginator.GetPage(pageNumber); Visual originalPage = page.Visual; var visual = new ContainerVisual(); doc.DataSource.PageNumber = pageNumber + 1; var headerVisual = GetHeaderFooterVisualFromDataTemplate(doc.Header, _definition.HeaderRect); var footerVisual = GetHeaderFooterVisualFromDataTemplate(doc.Footer, _definition.FooterRect); headerVisual.Offset = new Vector(_definition.HeaderRect.X, _definition.HeaderRect.Y); footerVisual.Offset = new Vector(_definition.FooterRect.X, _definition.FooterRect.Y); visual.Children.Add(headerVisual); visual.Children.Add(footerVisual); var pageVisual = new ContainerVisual() { Transform = new TranslateTransform(_definition.ContentOrigin.X, _definition.ContentOrigin.Y), }; pageVisual.Children.Add(originalPage); visual.Children.Add(pageVisual); return(new DocumentPage(visual, _definition.PageSize, new Rect(new Point(), _definition.ContentSize), new Rect(_definition.ContentOrigin, _definition.PageSize))); }
/// <summary>МЕТОД Разбиваем документ на страницы</summary> /// <param name="pPageNumber">Номер страницы</param> public override DocumentPage GetPage(int pPageNumber) { // Размер странцы (максимальный, всё равно усекается отступами) PageSize = new Size(794, 1130); // Извлекаем запрашиваемую страницу DocumentPage _Page = PRI_DocPag.GetPage(pPageNumber + PRI_StartIndex); // Этот кусок исправляет ошибку печати с диапазоном, на некоторых принтерах // Create a new ContainerVisual as a new parent for page children var _Container = new ContainerVisual(); if (_Page.Visual is FixedPage) { foreach (var _Сhild in ((FixedPage)_Page.Visual).Children) { // Make a shallow clone of the child using reflection var _СhildClone = (UIElement)_Сhild.GetType().GetMethod("MemberwiseClone", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(_Сhild, null); // Setting the parent of the cloned child to the created ContainerVisual by using Reflection. // WARNING: If we use Add and Remove methods on the FixedPage.Children, for some reason it will // throw an exception concerning event handlers after the printing job has finished. var _ParentField = _СhildClone.GetType().GetField("_parent", BindingFlags.Instance | BindingFlags.NonPublic); if (_ParentField != null) { _ParentField.SetValue(_СhildClone, null); _Container.Children.Add(_СhildClone); } } return(new DocumentPage(_Container, _Page.Size, _Page.BleedBox, _Page.ContentBox)); } return(_Page); }
private Border GetPageUiElement(int i, DocumentPaginator paginator, double scale) { var source = paginator.GetPage(i); var border = new Border() { Background = Brushes.White }; border.Margin = new Thickness(10 * scale); border.BorderBrush = Brushes.DarkGray; border.BorderThickness = new Thickness(1); //var margin = PrintUtility.GetPageMargin(CurrentPrinterName); var margin = new Thickness(); var rectangle = new Rectangle(); rectangle.Width = ((source.Size.Width * 0.96 - (margin.Left + margin.Right)) * scale); rectangle.Height = ((source.Size.Height * 0.96 - (margin.Top + margin.Bottom)) * scale); rectangle.Margin = new Thickness(margin.Left * scale, margin.Top * scale, margin.Right * scale, margin.Bottom * scale); rectangle.Fill = Brushes.White; var vb = new VisualBrush(source.Visual); vb.Opacity = 1; vb.Stretch = Stretch.Uniform; rectangle.Fill = vb; border.Child = rectangle; return(border); }
public override DocumentPage GetPage(int pageNumber) { var page = m_Paginator.GetPage(pageNumber); // Create a wrapper visual for transformation and add extras var newpage = new ContainerVisual(); var title = new DrawingVisual(); using (var ctx = title.RenderOpen()) { if (m_Typeface == null) { m_Typeface = new Typeface("Arial"); } var text = new FormattedText("GS Server Notes - Page " + (pageNumber + 1), System.Globalization.CultureInfo.CurrentCulture, FlowDirection.LeftToRight, m_Typeface, 14, Brushes.Black, VisualTreeHelper.GetDpi(newpage).PixelsPerDip); ctx.DrawText(text, new Point(0, -96 / 4.0)); // 1/4 inch above page content } var background = new DrawingVisual(); using (var ctx = background.RenderOpen()) { ctx.DrawRectangle(new SolidColorBrush(Color.FromRgb(255, 255, 255)), null, page.ContentBox); } newpage.Children.Add(background); // Scale down page and center var smallerPage = new ContainerVisual(); smallerPage.Children.Add(page.Visual); smallerPage.Transform = new MatrixTransform(0.95, 0, 0, 0.95, 0.025 * page.ContentBox.Width, 0.025 * page.ContentBox.Height); newpage.Children.Add(smallerPage); newpage.Children.Add(title); newpage.Transform = new TranslateTransform(m_Margin.Width, m_Margin.Height); return(new DocumentPage(newpage, m_PageSize, Move(page.BleedBox), Move(page.ContentBox))); }
public override DocumentPage GetPage(int pageNumber) { m_PageContent.Children.Clear(); m_SmallerPage.Children.Clear(); m_NewPage.Children.Clear(); m_SmallerPageContainer.Children.Clear(); DrawingVisual title = new DrawingVisual(); var pixelsPerDip = GNPXApp000.pixelsPerDip; using (DrawingContext ctx = title.RenderOpen()){ FontFamily font = new FontFamily("Times New Roman"); Typeface typeface = new Typeface(font, FontStyles.Normal, FontWeights.Bold, FontStretches.Normal); FormattedText text = new FormattedText("Page " + (pageNumber + 1) + " of " + m_PageCount, System.Globalization.CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, 14, Brushes.Black, pixelsPerDip); ctx.DrawText(text, new Point(0, 0)); } DocumentPage page = m_Paginator.GetPage(0); m_PageContent.Children.Add(page.Visual); RectangleGeometry clip = new RectangleGeometry(new Rect(0, m_ContentSize.Height * pageNumber, m_ContentSize.Width, m_ContentSize.Height)); m_PageContent.Clip = clip; m_PageContent.Transform = new TranslateTransform(0, -m_ContentSize.Height * pageNumber); m_SmallerPage.Children.Add(m_PageContent); m_SmallerPage.Transform = new ScaleTransform(0.95, 0.95); m_SmallerPageContainer.Children.Add(m_SmallerPage); m_SmallerPageContainer.Transform = new TranslateTransform(0, 24); m_NewPage.Children.Add(title); m_NewPage.Children.Add(m_SmallerPageContainer); m_NewPage.Transform = new TranslateTransform(m_Margin.Width, m_Margin.Height); return(new DocumentPage(m_NewPage, m_PageSize, Move(page.BleedBox), Move(page.ContentBox))); }
/// <summary> /// 加载分页器 /// </summary> private void LoadPaginator() { _paginator = PaginatorFactory.GetDocumentPaginator(_config); OnPageLoading(); Task.Factory.StartNew(() => { if (PageOrientation == PageOrientation.Portrait) { _paginator.PageSize = new Size((int)PageSize.Width, (int)PageSize.Height); } else if (PageOrientation == PageOrientation.Landscape) { _paginator.PageSize = new Size((int)PageSize.Height, (int)PageSize.Width); } PageCount = _paginator.PageCount; EndIndex = PageCount - 1; CurrentPageIndex = 0; _dispatcher.BeginInvoke(new Action(() => OnPageChanged(_paginator.GetPage(CurrentPageIndex)))); }); }
/* * private bool walk_child_nodes_for_BringIntoView(string uri, DependencyObject parent) * { * bool found = false; * try * { * * for (int i = 0; i < System.Windows.Media.VisualTreeHelper.GetChildrenCount(parent); i++) * { * System.Windows.Media.Visual child = null; * try * { * child = (System.Windows.Media.Visual)System.Windows.Media.VisualTreeHelper.GetChild(parent, i); * if (child != null) * { * string res = ""; * res = child.GetValue(System.Windows.Documents.Glyphs.NameProperty).ToString(); * if (res.Equals(uri)) * { * ((FrameworkElement)child).BringIntoView(); * found = true; * } * } * } * catch //(System.Exception ex) * { * //... * } * if (found == false && child != null) * walk_child_nodes_for_BringIntoView(uri, child); * } * } * catch //(System.Exception ex) * { * //... * } * return found; * } */ private bool BringIntoView_ByURI(string url_to_search, int pageIdx) { bool found = false; try { DocumentPaginator pag = documentViewer.Document.DocumentPaginator; FixedDocumentSequence seq = (FixedDocumentSequence)documentViewer.Document; System.Windows.Media.Visual page = pag.GetPage(pageIdx).Visual; FixedPage fp = page as FixedPage; Canvas can = fp.Children[0] as Canvas; object obj = can.FindName(url_to_search); if (obj != null) { ((FrameworkElement)obj).BringIntoView(); found = true; } } catch (Exception ex) { LogFile.Error("Error in BringIntoView_ByURI()", ex); } return(found); }
protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e) { base.OnKeyDown(e); if (e.Key == Key.D1) { pageIndex = 0; index++; if (index >= xpsList.Count) { index = 0; } XpsDocument _xpsDocument = new XpsDocument(xpsList[index], System.IO.FileAccess.Read); paginator = _xpsDocument.GetFixedDocumentSequence().DocumentPaginator; Console.WriteLine("page size " + paginator.PageCount); Console.WriteLine("page size " + paginator.PageSize); var page = paginator.GetPage(pageIndex); DrawPage(page.Visual, page.Size); } if (e.Key == Key.D2) { pageIndex++; if (pageIndex >= paginator.PageCount) { pageIndex = 0; } var page = paginator.GetPage(pageIndex); DrawPage(page.Visual, page.Size); } }
public override DocumentPage GetPage(int pageNumber) { DocumentPage page = m_Paginator.GetPage(pageNumber); // Create a wrapper visual for transformation and add extras ContainerVisual newpage = new ContainerVisual(); DrawingVisual title = new DrawingVisual(); using (DrawingContext ctx = title.RenderOpen()) { if (m_Typeface == null) { m_Typeface = new Typeface("Times New Roman"); } FormattedText text = new FormattedText("Page " + (pageNumber + 1), System.Globalization.CultureInfo.CurrentCulture, FlowDirection.LeftToRight, m_Typeface, 14, Brushes.Black); ctx.DrawText(text, new Point(0, -96 / 4)); // 1/4 inch above page content } ContainerVisual smallerPage = new ContainerVisual(); smallerPage.Children.Add(page.Visual); smallerPage.Transform = new MatrixTransform(0.95, 0, 0, 0.95, 0.025 * page.ContentBox.Width, 0.025 * page.ContentBox.Height); newpage.Children.Add(smallerPage); newpage.Children.Add(title); newpage.Transform = new TranslateTransform(m_Margin.Width, m_Margin.Height); return(new DocumentPage(newpage, m_PageSize, Move(page.BleedBox), Move(page.ContentBox))); }
public override DocumentPage GetPage(int pageNumber) { DocumentPage page = _paginator.GetPage(pageNumber + FirstPritedPage); var newpage = new ContainerVisual(); if (BackgroundBrush != null) { newpage.Children.Add(GetBackColorVisual(page, BackgroundBrush)); } if (Mark != null && Mark.ImageSource != null) { DrawingVisual background = GetBackgroundVisual(page); newpage.Children.Add(background); } ContainerVisual smallerPage = GetPageContentVisual(page); newpage.Children.Add(smallerPage); ContainerVisual footer = GetFooterVisual(page, pageNumber); if (footer != null) { newpage.Children.Add(footer); } return(new DocumentPage(newpage, page.Size, page.BleedBox, page.ContentBox)); }
public void SaveToTIF(string fileName) { XpsDocument xd = new XpsDocument(fileName, System.IO.FileAccess.Read); FixedDocumentSequence fds = xd.GetFixedDocumentSequence(); DocumentPaginator paginator = fds.DocumentPaginator; System.Windows.Media.Visual visual = paginator.GetPage(0).Visual; System.Windows.FrameworkElement fe = (System.Windows.FrameworkElement)visual; int multiplyFactor = 4; string outputPath = fileName.Replace(".xps", ".tif"); RenderTargetBitmap bmp = new RenderTargetBitmap( (int)fe.ActualWidth * multiplyFactor, (int)fe.ActualHeight * multiplyFactor, 96d * multiplyFactor, 96d * multiplyFactor, System.Windows.Media.PixelFormats.Default); bmp.Render(fe); TiffBitmapEncoder tff = new TiffBitmapEncoder(); tff.Frames.Add(BitmapFrame.Create(bmp)); using (Stream stream = File.Create(outputPath)) { tff.Save(stream); } }
/* Wrap fixed page to avoid exception of fixed page in fixed page */ public override DocumentPage GetPage(int page_num) { var page = _basepaginator.GetPage(page_num + _first); var vis_cont = new ContainerVisual(); if (page.Visual is FixedPage) { foreach (var child in ((FixedPage)page.Visual).Children) { var clone = (System.Windows.UIElement)child.GetType().GetMethod("MemberwiseClone", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(child, null); var parentField = clone.GetType().GetField("_parent", BindingFlags.Instance | BindingFlags.NonPublic); if (parentField != null) { parentField.SetValue(clone, null); vis_cont.Children.Add(clone); } } return(new DocumentPage(vis_cont, page.Size, page.BleedBox, page.ContentBox)); } return(page); }
public override DocumentPage GetPage(int pageNumber) { var page = _paginator.GetPage(pageNumber + _startIndex); // Create a new ContainerVisual as a new parent for page children var cv = new ContainerVisual(); if (page.Visual is FixedPage) { foreach (var child in ((FixedPage)page.Visual).Children) { // Make a shallow clone of the child using reflection var childClone = (UIElement)child.GetType().GetMethod("MemberwiseClone", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(child, null); // Setting the parent of the cloned child to the created ContainerVisual by using Reflection. // WARNING: If we use Add and Remove methods on the FixedPage.Children, for some reason it will // throw an exception concerning event handlers after the printing job has finished. var parentField = childClone.GetType().GetField("_parent", BindingFlags.Instance | BindingFlags.NonPublic); if (parentField != null) { parentField.SetValue(childClone, null); cv.Children.Add(childClone); } } return(new DocumentPage(cv, page.Size, page.BleedBox, page.ContentBox)); } return(page); }
public override DocumentPage GetPage(int pageNumber) { DocumentPage page = m_Paginator.GetPage(pageNumber); // Create a wrapper visual for transformation and add extras ContainerVisual newpage = new ContainerVisual(); return(new DocumentPage(page.Visual, m_PageSize, Move(page.BleedBox), Move(page.ContentBox))); }
public override DocumentPage GetPage(int pageNumber) { DocumentPage originalPage = _originalPaginator.GetPage(pageNumber); ContainerVisual fixedPage = new ContainerVisual(); fixedPage.Children.Add(originalPage.Visual); fixedPage.Transform = new TranslateTransform(_pageMargin.Width, _pageMargin.Height); return(new DocumentPage(fixedPage, _pageSize, AdjustForMargins(originalPage.BleedBox), AdjustForMargins(originalPage.ContentBox))); }
public static DeckModel OpenXPS(string file) { try { Misc.ProgressBarForm progressForm = new UW.ClassroomPresenter.Misc.ProgressBarForm("Opening \"" + file + "\"..."); progressForm.Show(); //Open Xps Document XpsDocument xpsDocument = null; xpsDocument = new XpsDocument(file, FileAccess.Read); //Create two DocumentPaginators for the XPS document. One is for local display, the other one is for the delivery to students. DocumentPaginator paginator = xpsDocument.GetFixedDocumentSequence().DocumentPaginator; //Create Deck Model Guid deckGuid = Guid.NewGuid(); DeckModel deck = new DeckModel(deckGuid, DeckDisposition.Empty, file); using (Synchronizer.Lock(deck.SyncRoot)) { deck.IsXpsDeck = true; //Iterate over all pages for (int i = 0; i < paginator.PageCount; i++) { DocumentPage page = paginator.GetPage(i); SlideModel newSlideModel = CreateSlide(page, deck); //Create a new Entry + reference SlideModel TableOfContentsModel.Entry newEntry = new TableOfContentsModel.Entry(Guid.NewGuid(), deck.TableOfContents, newSlideModel); //Lock the TOC using (Synchronizer.Lock(deck.TableOfContents.SyncRoot)) { //Add Entry to TOC deck.TableOfContents.Entries.Add(newEntry); } //Update the Progress Bar progressForm.UpdateProgress(0, paginator.PageCount, i + 1); } } //Close Progress Bar progressForm.Close(); return(deck); } catch (Exception e) { System.Diagnostics.Trace.WriteLine(e.ToString()); } GC.Collect(); return(null); }
private void AddThumbnail(object sender, RoutedEventArgs e) { FixedDocumentSequence docSeq = _xpsDocument.GetFixedDocumentSequence(); DocumentPaginator paginator = docSeq.DocumentPaginator; DocumentPage page = paginator.GetPage(0); // Create a rendertarget for the glyphs element. Round up width and height RenderTargetBitmap rt = new RenderTargetBitmap((int)page.Size.Width, (int)page.Size.Height, 96, 96, PixelFormats.Default); FixedPage fixedPage = (FixedPage)page.Visual; fixedPage.Measure(new Size(page.Size.Width, page.Size.Height)); fixedPage.Arrange(new Rect(new Size(page.Size.Width, page.Size.Height))); rt.Render(fixedPage); JpegBitmapEncoder jpegEncoder = new JpegBitmapEncoder(); jpegEncoder.Frames.Add(BitmapFrame.Create((BitmapSource)rt)); Stream stream = new MemoryStream(); jpegEncoder.Save(stream); XpsThumbnail thumbnail = _xpsDocument.AddThumbnail(XpsImageType.JpegImageType); Stream dstStream = thumbnail.GetStream(); byte[] thumbnailData = new byte[stream.Length]; // let's read the whole block into our buffer int totalBytesRead = 0; int requestedCount = (int)stream.Length; stream.Position = 0; while (totalBytesRead < requestedCount) { int bytesRead = stream.Read(thumbnailData, totalBytesRead, requestedCount - totalBytesRead); if (bytesRead == 0) { break; } totalBytesRead += bytesRead; } dstStream.Write(thumbnailData, 0, (int)stream.Length); dstStream.Close(); thumbnail.Commit(); _xpsDocument.Close(); stream.Position = 0; ImageBrush imageBrush = new ImageBrush(BitmapFrame.Create(stream)); imageBrush.Stretch = Stretch.Uniform; thumbnailDisplay.Fill = imageBrush; // Once a thumbnail is set disable the "Add Thumbnail" button. addThumbnailButton.IsEnabled = false; }
private RenderTargetBitmap GetPageBitmap(DocumentPaginator documentPaginator, int pageNumber, Parameters parameters) { const double dpiConst = 96.0; double dpi = parameters.Dpi; var size = parameters.RequiredSize ?? new Size(); bool isSizeDefined(int requiredSize) => requiredSize > 0; void calcDpi(int requiredSize, double pageSize) { if (isSizeDefined(requiredSize)) { dpi = (requiredSize / pageSize) * dpiConst; } } try { using (var page = documentPaginator.GetPage(pageNumber)) { if (!size.IsEmpty) { var portrait = page.Size.Height >= page.Size.Width; if (portrait || !isSizeDefined(size.Width)) { calcDpi(size.Height, page.Size.Height); } if (!portrait || !isSizeDefined(size.Height)) { calcDpi(size.Width, page.Size.Width); } } var ratio = dpi / dpiConst; var bitmap = new RenderTargetBitmap((int)Math.Round(page.Size.Width * ratio), (int)Math.Round(page.Size.Height * ratio), dpi, dpi, PixelFormats.Pbgra32); bitmap.Render(page.Visual); // Memory leak fix. // http://social.msdn.microsoft.com/Forums/en/wpf/thread/c6511918-17f6-42be-ac4c-459eeac676fd ((FixedPage)page.Visual).UpdateLayout(); return(bitmap); } } catch (XamlParseException ex) { throw new ConversionException(ex.Message, pageNumber + 1, ex); } }
internal static DocumentPage GetPage(DocumentPaginator paginator, int index) { EmitEvent(EventTrace.Event.WClientDRXGetPageBegin); DocumentPage page = paginator.GetPage(index); EmitEvent(EventTrace.Event.WClientDRXGetPageEnd); return(page); }
/// <summary> /// Write a single DocumentPaginator and close package /// </summary> public override void Write(DocumentPaginator documentPaginator, PrintTicket printTicket) { //SerializeVisualTree(documentPaginator.Source as DependencyObject); for (int i = 0; i < documentPaginator.PageCount; i++) { DocumentPage page = documentPaginator.GetPage(i); SerializeVisualTree(page.Visual); } _writer.Close(); }
/// <summary> /// This is the most important method , modifies the original /// </summary> public override DocumentPage GetPage(int pageNumber) { var newpage = new ContainerVisual(); if (pageNumber == 0 && reportDef.FirstPageHeader != null) { var v = GetVisualFromTemplate(reportDef.FirstPageHeader); v.Offset = new Vector(0, 0); newpage.Children.Add(v); } else if (pageNumber == 0 && reportDef.FirstPageHeader == null && reportDef.PageHeader != null) { var v = GetVisualFromTemplate(reportDef.PageHeader); v.Offset = new Vector(0, 0); newpage.Children.Add(v); } if (pageNumber > 0 && reportDef.PageHeader != null) { var v = GetVisualFromTemplate(reportDef.PageHeader); v.Offset = new Vector(0, 0); newpage.Children.Add(v); } var smallerPage = new ContainerVisual(); var page = paginator.GetPage(pageNumber); smallerPage.Children.Add(page.Visual); if (pageNumber == 0 && reportDef.FirstPageHeader != null) { smallerPage.Offset = new Vector(0, reportDef.FirstHeaderHeight); } else { smallerPage.Offset = new Vector(0, reportDef.HeaderHeight); } newpage.Children.Add(smallerPage); if (pageNumber == pageCount - 1 && reportDef.LastPageFooter != null) { var v = GetVisualFromTemplate(reportDef.LastPageFooter); v.Offset = new Vector(0, reportDef.HeaderHeight + paginator.PageSize.Height - reportDef.LastFooterHeight - reportDef.PagePadding.Top); newpage.Children.Add(v); } else if (reportDef.PageFooter != null) { var v = GetVisualFromTemplate(reportDef.PageFooter); v.Offset = new Vector(0, reportDef.HeaderHeight + paginator.PageSize.Height - reportDef.FooterHeight - reportDef.PagePadding.Top); newpage.Children.Add(v); } var dp = new DocumentPage(newpage, new Size(pageSize.Width, pageSize.Height), page.BleedBox, page.ContentBox); return(dp); }
private void SinglePageImage_Click(object sender, RoutedEventArgs e) { MyPopUp.IsOpen = false; try { if (officeFileOpen_Status) { FixedDocumentSequence seq; seq = xpsDoc.GetFixedDocumentSequence(); DocumentPaginator paginator = seq.DocumentPaginator; if (int.Parse(PageNumberBox.Text) < paginator.PageCount) { FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog(); DialogResult result = folderBrowserDialog1.ShowDialog(); string localpath = String.Empty; localpath = folderBrowserDialog1.SelectedPath; //// I only want the all page for this example Visual visual = paginator.GetPage((int.Parse(PageNumberBox.Text) - 1)).Visual; FrameworkElement fe = (FrameworkElement)visual; int multiplyFactor = 4; string outputPath = localpath + "\\page" + (int.Parse(PageNumberBox.Text) - 1) + ".png"; Console.WriteLine(localpath); RenderTargetBitmap bmp = new RenderTargetBitmap( (int)fe.ActualWidth * multiplyFactor, (int)fe.ActualHeight * multiplyFactor, 96d * multiplyFactor, 96d * multiplyFactor, PixelFormats.Default); bmp.Render(fe); PngBitmapEncoder png = new PngBitmapEncoder(); png.Frames.Add(BitmapFrame.Create(bmp)); using (Stream stream = File.Create(outputPath)) { png.Save(stream); } System.Windows.MessageBox.Show("Image Saved Successfully", "Status", MessageBoxButton.OK, MessageBoxImage.Information); } else { System.Windows.MessageBox.Show("Given Page Number is Greater than Number of pages in the Document", "Page Number Overflow", MessageBoxButton.OK, MessageBoxImage.Information); } } else { System.Windows.MessageBox.Show("Please select a office File (*.docx,*.doc,*.els,*.elsx,*.ppt,*.pptx)", "Select a MS Office File", MessageBoxButton.OK, MessageBoxImage.Information); } } catch (Exception) { System.Windows.MessageBox.Show("Please Select a Folder Loaction to Store the Images", "Select a Folder Loaction", MessageBoxButton.OK, MessageBoxImage.Information); } }
public override DocumentPage GetPage(int pageNumber) { DocumentPage cachedPage; if (_PageCache.TryGetValue(pageNumber, out cachedPage) && cachedPage.Visual != null) { return(cachedPage); } DocumentPage page = _Paginator.GetPage(pageNumber); // Create a wrapper visual for transformation and add extras ContainerVisual newpage = new ContainerVisual();
public override DocumentPage GetPage(int pageNumber) { _pageNumber = pageNumber + 1; DocumentPage page = _paginator.GetPage(pageNumber); ContainerVisual printedPage = new ContainerVisual(); ContainerVisual pageContainer = new ContainerVisual(); pageContainer.Children.Add(page.Visual); pageContainer.Transform = new TranslateTransform(_margin.Left, _margin.Top); printedPage.Children.Add(pageContainer); AddHeader(printedPage); AddFooter(printedPage); return(new DocumentPage(printedPage, _pageSize, _pageBox, _contentBox)); }
public PrintPaginatorWrapper(DocumentPaginator paginator, Margins margin, double borderThickness, System.Windows.Media.Brush borderBrush, double headerSize, double footerSize) : this() { //One way to provide a few options. Set them all here. _headerSize = headerSize; _footerSize = footerSize; _thickness = borderThickness; _borderBrush = borderBrush; PPageSize = paginator.PageSize; _margin = margin; _paginator = paginator; DocumentPage t = _paginator.GetPage(1); _paginator.PageSize = new System.Windows.Size(PPageSize.Width - (margin.Left + margin.Right), PPageSize.Height - (margin.Top + margin.Bottom)); }