【问题标题】:C# - Use Windows 10 'Microsoft Print to PDF' for multiple imagesC# - 使用 Windows 10 'Microsoft Print to PDF' 打印多个图像
【发布时间】:2016-04-23 17:54:22
【问题描述】:

我想将多个图像打印到一个 pdf 文件中,但不是使用常规打印对话框,而是使用“打印图片”对话框(见下图)。作为打印机,我想使用windows 10自带的'Microsoft print to PDF'-Printer。

我当前的代码如下所示:

string fileName = @"C:\Users\mt\Pictures\test\test.jpg";
var p = new Process();
p.StartInfo.FileName = fileName;
p.StartInfo.Verb = "Print";
p.Start();

到目前为止一切顺利,正确的对话正在显示。我先用其他方法尝试过,没有给我这个。我现在可以将一张图像打印到 pdf 页面,但如何添加其他图像?另外,在这个解决方案中,我看不到如何设置打印设置,比如图像的大小,它应该尽可能大,而不需要剪切图像并更改为水平格式。

之前,我有这个代码:

try
{
    PrintDocument pd = new PrintDocument();
    pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
    pd.PrinterSettings.PrinterName = STR_PRINTER_NAME;
    pd.Print();
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
    System.Drawing.Image img = System.Drawing.Image.FromFile(@"C:\Users\mt\Pictures\test\1.jpg");
    Point loc = new Point(100, 100);
    e.Graphics.DrawImage(img, loc);
    img.Dispose();
}

我将其更改为“打印图片”对话框。最后,对话框本身并不重要,但“打印图片”对话框得到了我需要的所有设置。用户唯一需要设置的是 pdf 文件的名称。

【问题讨论】:

    标签: c# pdf printing windows-10


    【解决方案1】:

    使用以下代码解决了“多页”问题:

    private void button1_Click(object sender, EventArgs e)
    {
        imgs.Add(img1);
        imgs.Add(img2);
        imgs.Add(img3);
        imgs.Add(img4);
    
        try
        {
            PrintDocument pd = new PrintDocument();
    
            pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
    
            pd.PrinterSettings.PrinterName = "Microsoft Print to PDF";
            pd.Print();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    
    private void pd_PrintPage(object sender, PrintPageEventArgs e)
    {
        Graphics graphic = e.Graphics;
    
        Point p = new Point(10, 10);
        Image img = Image.FromFile(imgs.ElementAt(page));
        graphic.DrawImage(img, p);
        page++;
        e.HasMorePages = page < imgs.Count;
        img.Dispose();
    }
    

    仍然不知道如何设置最大尺寸

    【讨论】:

    • 嗨!我正在尝试使用您的代码,但此代码未打开打印图片对话框。有什么方法可以打开吗?
    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 2019-10-10
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    相关资源
    最近更新 更多