簡體   English   中英

如何將多個xaml元素序列化為單個xps文件並打印WPF應用程序c#

[英]How to serialize multiple xaml elements into single xps file and print WPF Application c#

它已經很長一段時間無法找到解決方案了。

我的應用程序包含十個帶有格式化文本的堆棧面板。 每個堆棧面板的高度為800,寬度為500。(假設在寫字板應用程序中有十個頁面帶有文本)。 我的主要目標是打印堆棧面板內容。 每個堆棧面板的內容應准確顯示在打印頁面上。 有十個堆疊面板,因此最終的打印文檔也應包含十頁。

到目前為止,我可以序列化xps文件中的任何堆棧面板並進行打印。

注意:堆棧面板名稱之一是“ spanel0”

我的代碼:

private void PrintDocument() {
            PrintDialog pd = new PrintDialog();
            FrameworkElement fe = (spanel0 as FrameworkElement);
            fe.Measure(new Size(Int32.MaxValue, Int32.MaxValue));
            Size visualSize = fe.DesiredSize;
            fe.Arrange(new Rect(new Point(0, 0), visualSize));
            MemoryStream stream = new MemoryStream();
            string pack = "pack://temp.xps";
            Uri uri = new Uri(pack);
            DocumentPaginator paginator;
            XpsDocument xpsDoc;

            using (Package container = Package.Open(stream, FileMode.Create))
            {
                PackageStore.AddPackage(uri, container);
                using (xpsDoc = new XpsDocument(container, CompressionOption.Fast, pack))
                {
                    XpsSerializationManager rsm =
                      new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
                    rsm.SaveAsXaml(spanel0);
                    paginator = ((IDocumentPaginatorSource)
                      xpsDoc.GetFixedDocumentSequence()).DocumentPaginator;
                    paginator.PageSize = visualSize;

                }
                PackageStore.RemovePackage(uri);
            }
        }

問題出在哪兒?

我想將所有堆棧面板序列化為xps,這樣當我打印xps文檔時,我將得到十頁的pdf文件。 使用上面的代碼,我可以將任意一個stackpanel序列化為xps並從中獲取打印信息。

希望你理解我的問題。 請指導我。 提前致謝。

注意:我其余的堆棧面板是spanel1,spanel2,spanel3,spanel4,spanel5等

最終,大量的挖掘工作后來找到了解決方案。

在WPF應用程序中,我們可以分別序列化多個xaml元素。 所有序列化的xaml元素都將為.xps格式。 然后,我們可以收集回所有.xps文件並形成一個.xps文件。 這樣,我們可以序列化多個xaml元素。 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM