我想将多个图像打印到pdf文件,但不是使用常规的打印对话,而是打印图片'对话(见下图)。作为一台打印机,我想使用Windows 10附带的' Microsoft打印到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();
}
我为'打印图片' -Dialog更改了。最后,对话框本身并不重要,但“打印图片”-Dialog获得了我需要的所有设置。用户必须设置的唯一内容是pdf文件的名称。
答案 0 :(得分:0)
解决了多页'以下代码存在问题:
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();
}
仍然无法弄清楚如何设置最大尺寸