Quantcast
Channel: Windows Presentation Foundation (WPF) forum
Viewing all articles
Browse latest Browse all 18858

WPF c# code prints in two columns how do i make this code for a normal page.

$
0
0
 public static int SaveAsXps(string fileName)
        {

            object doc;



            FileInfo fileInfo = new FileInfo(fileName);



            using (FileStream file = fileInfo.OpenRead())
            {

                System.Windows.Markup.ParserContext context = new System.Windows.Markup.ParserContext();

                context.BaseUri = new Uri(fileInfo.FullName, UriKind.Absolute);

                doc = System.Windows.Markup.XamlReader.Load(file, context);

            }



            if (!(doc is IDocumentPaginatorSource))
            {

                Console.WriteLine("DocumentPaginatorSource expected");

                return -1;

            }



            using (Package container = Package.Open(fileName + ".xps", FileMode.Create))
            {

                using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
                {

                    XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);



                    DocumentPaginator paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator;



                    // 8 inch x 6 inch, with half inch margin

                  //  paginator = new DocumentPaginatorWrapper(paginator, new Size(768, 676), new Size(48, 48));
                    paginator = new DocumentPaginatorWrapper(paginator, new Size(768, 676), new Size(0, 0));
                     try
                    {

                    rsm.SaveAsXaml(paginator);
                     }
                     catch (Exception ex)
                     {
                         // just in case, do something
                     }
                }

            }



            Console.WriteLine("{0} generated.", fileName + ".xps");



            return 0;

        }


public class DocumentPaginatorWrapper : DocumentPaginator

{

    Size              m_PageSize;

    Size              m_Margin;

    DocumentPaginator m_Paginator;

    Typeface          m_Typeface;



    public DocumentPaginatorWrapper(DocumentPaginator paginator, Size pageSize, Size margin)

    {

        m_PageSize  = pageSize;

        m_Margin    = margin;

        m_Paginator = paginator;



        m_Paginator.PageSize = new Size(m_PageSize.Width  - margin.Width  * 2,

                                        m_PageSize.Height - margin.Height * 2);

    }



    Rect Move(Rect rect)

    {

        if (rect.IsEmpty)

        {

            return rect;

        }

        else

        {

            return new Rect(rect.Left + m_Margin.Width, rect.Top + m_Margin.Height,

                            rect.Width, rect.Height);

        }

    }



    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

        }



        DrawingVisual background = new DrawingVisual();



        using (DrawingContext ctx = background.RenderOpen())

        {

            ctx.DrawRectangle(new SolidColorBrush(Color.FromRgb(240, 240, 240)), null, page.ContentBox);

        }



        newpage.Children.Add(background); // Scale down page and center



            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 bool IsPageCountValid

    {

        get

        {

            return m_Paginator.IsPageCountValid;

        }

    }



    public override int PageCount

    {

        get

        {

            return m_Paginator.PageCount;

        }

    }



    public override Size PageSize

    {

        get

        {

            return m_Paginator.PageSize;

        }



        set

        {

            m_Paginator.PageSize = value;

        }

    }



    public override IDocumentPaginatorSource Source

    {

        get

        {

            return m_Paginator.Source;

        }

    }

}


Viewing all articles
Browse latest Browse all 18858

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>