如何将docx和pdf文件发送到打印机?

时间:2016-12-26 02:54:07

标签: c#

我有以下代码将C#中的文本文件打印到打印机上,基于this文章它打印纯文本完美但是当我尝试打印 let campaignData = campaignRes.body.data; .docx文件时打印但将内容转换为某种编码字符。如何修复此问题以打印pdf和doc文件?

.pdf

//

private void btnPrint_Click(object sender, EventArgs e)
{
    // Select the desired printer. ps.Duplex = Duplex.Simplex; // This works
    pdocFile.PrinterSettings.PrinterName = cboPrinter.Text;
    pdocFile.PrinterSettings.Duplex =  Duplex.Horizontal;
    // Print the checked files.
    foreach (string filename in clbFiles.CheckedItems)
    {
        Console.WriteLine("Printing: " + filename);

        // Get the file's name without the path.
        FileInfo file_into = new FileInfo(filename);
        string short_name = file_into.Name;

        // Set the PrintDocument's name for use by the printer queue.
        pdocFile.DocumentName = short_name;

        // Read the file's contents.
        try
        {
            FileContents = File.ReadAllText(filename).Trim();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error reading file " + filename +
                    ".\n" + ex.Message);
            return;
        }

        // Print.
        pdocFile.Print();
    }

    MessageBox.Show("Spooled " + clbFiles.CheckedItems.Count +
            " files for printing.");
    }

请参阅下面的图片链接

enter image description here

1 个答案:

答案 0 :(得分:0)

上面的示例采用二进制文件格式,并尝试使用纯文本方法打印它,这将无法正常工作。你有几个方法可以解决这个问题。

  1. 某些打印机允许您通过FTP等协议直接向他们提交各种文件类型。可以看到here的例子。此方法适用于具有商务打印机的企业环境,但仅限于每台打印机支持的文件类型以及每台打印机的独特要求。
  2. 对于某些格式,您可以在C#代码中使用iText等第三方库来处理实际打印。此选项使您可以对格式进行大量控制,并且必须为您希望支持的每种文件类型维护额外的代码。
  3. 您还可以使用the example code posted here来利用已安装的应用程序。在此示例中,它利用了Adobe Acrobat,Word等提供的Print动词。您需要确保应用程序具有默认值并显示正确的动词(通常与右侧的上下文菜单相关) - 单击文件名)。这种方法可能是按原样处理文件的最直接选项。