C#WPF每页打印pdf多页

时间:2017-09-21 07:57:15

标签: c# wpf pdf printing

我正在开发一个创建pdf报告的C#WPF应用程序。创建文件后,我需要打印出来。创建的文件采用A7格式并存储在同一目录中。

为了帮助森林,我想在一张纸上打印4个文件: - )

我能够按文件打印文件。我试图将打印机首选项设置为在一张纸上堆叠4个文件,但它仍然打印,每张纸一个文件。

我已经在网上搜索了一个解决方案,但找不到我的路。

任何想法如何实现这一目标?

感谢您的建议

1 个答案:

答案 0 :(得分:0)

你可以render the pdf files into images - 连接它们并发送给打印机。

或者您可以使用以下代码示例(作为我使用Apitron PDF Kit的示例):

using System;
using System.Collections.Generic;
using System.IO;

using Apitron.PDF.Kit.FixedLayout;
using Apitron.PDF.Kit.FixedLayout.Content;

public void CombinePDFDocuments()
    {
        using (Stream stream1 = new FileStream("input1.pdf", FileMode.Open, FileAccess.Read))
        using (Stream stream2 = new FileStream("input2.pdf", FileMode.Open, FileAccess.Read))
        using (Stream stream3 = new FileStream("input3.pdf", FileMode.Open, FileAccess.Read))
        using (Stream stream4 = new FileStream("input4.pdf", FileMode.Open, FileAccess.Read))
        {
            using (FixedDocument doc1 = new FixedDocument(stream1))
            using (FixedDocument doc2 = new FixedDocument(stream2))
            using (FixedDocument doc3 = new FixedDocument(stream3))
            using (FixedDocument doc4 = new FixedDocument(stream4))
            {
                using (FixedDocument result = new FixedDocument())
                {
                    Page page = new Page(Boundaries.A4);
                    result.Pages.Add(page);

                    // Left bottom
                    page.Content.AppendContent(doc1.Pages[0].Content);

                    // Left Top
                    page.Content.SetTranslate(0, Boundaries.A7.Height);
                    page.Content.AppendContent(doc2.Pages[0].Content);

                    // Right Top
                    page.Content.SetTranslate(Boundaries.A7.Width, 0);
                    page.Content.AppendContent(doc3.Pages[0].Content);

                    // Right Bottom
                    page.Content.SetTranslate(0, -Boundaries.A7.Height);
                    page.Content.AppendContent(doc4.Pages[0].Content);

                    using (Stream outStream = new FileStream("out.pdf", FileMode.Create, FileAccess.ReadWrite))
                    {
                        result.Save(outStream);
                    }                        
                }
            }
        }
    }