コード例 #1
0
        //int minimalOffset = 0;

        /// <summary>
        /// Helper method to create page header o footer from flow document template
        /// </summary>
        /// <param name="fd"></param>
        /// <param name="pageDef"></param>
        /// <returns></returns>
        public static XpsDocument CreateXpsDocument(FlowDocument fd, PageDefinition pageDef)
        {
            MemoryStream ms  = new MemoryStream();
            Package      pkg = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);

            string pack = "pack://" + fd.Name + System.Guid.NewGuid().ToString() + ".xps";

            PackageStore.AddPackage(new Uri(pack), pkg);
            XpsDocument doc = new XpsDocument(pkg, CompressionOption.SuperFast, pack);

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

            DocumentPaginator paginator = ((IDocumentPaginatorSource)fd).DocumentPaginator;
            // Size size = new Size(800, 1024);
            // ReportPaginator rp = new ReportPaginator(paginator, PrintHelper.GetPageSize(), pageDef);
            // ReportPaginator rp = new ReportPaginator(paginator, size, pageDef);
            ReportPaginator rp = new ReportPaginator(paginator, XpsPrintHelper.GetPageSize(), pageDef);

            rsm.SaveAsXaml(rp);

            return(doc);
        }