【问题标题】:How to set Printer Settings while printing PDF如何在打印 PDF 时设置打印机设置
【发布时间】:2010-11-08 23:32:13
【问题描述】:

我正在尝试使用 Process 对象打印 PDF 文件。在某种程度上,我可以成功打印它。但现在我想设置打印机属性.. 像副本数、纸张大小等。但我没有看到任何属性来设置这些值。 我正在使用以下代码打印 PDF

string fileName = "";
string arguments = "";
string verbToUse = "";
int i = 0;
ProcessStartInfo startInfo = new ProcessStartInfo();
OpenFileDialog openFileDialog1 = new OpenFileDialog();

openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "pdf files (*.pdf)|*.pdf|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    if ((fileName = openFileDialog1.FileName) != null)
    {
        startInfo = new ProcessStartInfo(fileName);

        if (File.Exists(fileName))
        {
            i = 0;
            foreach (String verb in startInfo.Verbs)
            {
                // Display the possible verbs.
                MessageBox.Show(i.ToString() + ". " + verb);
                i++;
            }
        }
    }

    //Console.WriteLine("Select the index of the verb.");
    string index = "2";
    if (Convert.ToInt32(index) < i)
        verbToUse = startInfo.Verbs[Convert.ToInt32(index)];
    else
        return;

    startInfo.Verb = verbToUse;
    if (verbToUse.ToLower().IndexOf("printto") >= 0)
    {
        //Printer Name
        arguments = @"\\hydfsvt02\HPLaserJ";
        startInfo.Arguments = arguments;
    }

    Process newProcess = new Process();
    newProcess.StartInfo = startInfo;

    try
    {
        newProcess.Start();

        MessageBox.Show(newProcess.ProcessName + " for file " + fileName + " started successfully with verb " + startInfo.Verb);
    }
    catch (System.ComponentModel.Win32Exception ex)
    {
        MessageBox.Show(" Win32Exception caught!");
        MessageBox.Show(" Win32 error = " + ex.Message);
    }
    catch (System.InvalidOperationException)
    {
        MessageBox.Show("File " + fileName + " started with verb " + verbToUse);
    }
}

【问题讨论】:

    标签: c# pdf properties printing


    【解决方案1】:

    我编写了一个批量打印 PDF 文件的应用程序。

    无法指定要使用的打印机设置。如果您将 COM 接口与 Adob​​e Standard/Pro 版本一起使用,这甚至是不可能的。

    您的选择是:

    1. 购买第三方 PDF 渲染器的许可证,您可以使用该渲染器将 PDF 转换为位图并使用 PrintDocument 来控制 PrinterSettings
    2. 使用 GhostScript 之类的工具将 PDF 文件转换为 BMP 文件,然后使用 PrintDocument 类打印 BMP 文件。然后,您可以控制 PrinterSettings。

    【讨论】:

      【解决方案2】:
      private void startPrintingButton_Click(object sender, EventArgs e)
      {
          OpenFileDialog ofd = new OpenFileDialog();
          if (DialogResult.OK == ofd.ShowDialog(this))
          {
              PrintDocument pdoc = new PrintDocument();
      
              pdoc.DefaultPageSettings.PrinterSettings.PrinterName = "ZDesigner GK420d";
              pdoc.DefaultPageSettings.Landscape = true;
              pdoc.DefaultPageSettings.PaperSize.Height = 140;
              pdoc.DefaultPageSettings.PaperSize.Width = 104;
      
              Print(pdoc.PrinterSettings.PrinterName, ofd.FileName);
          }
      }
      
      private void Print(string printerName, string fileName)
      {
          try
          {
              ProcessStartInfo gsProcessInfo;
              Process gsProcess;
      
              gsProcessInfo = new ProcessStartInfo();
              gsProcessInfo.Verb = "PrintTo";
              gsProcessInfo.WindowStyle = ProcessWindowStyle.Hidden;
              gsProcessInfo.FileName = fileName;
              gsProcessInfo.Arguments = "\"" + printerName + "\"";
              gsProcess = Process.Start(gsProcessInfo);
              if (gsProcess.HasExited == false)
              {
                  gsProcess.Kill();
              }
              gsProcess.EnableRaisingEvents = true;
      
              gsProcess.Close();
          }
          catch (Exception)
          {
          }
      }
      

      此代码将打印 PDF 文件以及调整打印设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-04
        • 2011-10-17
        • 2021-07-26
        • 2015-07-07
        • 2014-04-14
        相关资源
        最近更新 更多