我有以下代码:
using System;
using System.Diagnostics;
using System.IO;
using PdfSharp.Pdf.Printing;
namespace PrintPdfFile
{
class Program
{
[STAThread]
static void Main(string[] args)
{
// Set Acrobat Reader EXE, e.g.:
PdfFilePrinter.AdobeReaderPath = @"C:\\Documents and Settings\\mike.smith\\Desktop\\Adobe Reader 9.0.exe";
// -or-
//PdfPrinter.AdobeReaderPath = @"C:\Program Files\Adobe\[...]\AcroRd32.exe";
//// Ony my computer (running a German version of Windows XP) it is here:
//PdfFilePrinter.AdobeReaderPath = @"C:\\Documents and Settings\\mike.smith\\Desktop\\Adobe Reader 9.0.exe";
// Set the file to print and the Windows name of the printer.
// At my home office I have an old Laserjet 6L under my desk.
PdfFilePrinter printer = new PdfFilePrinter(@"C:\Documents and Settings\mike.smith\Desktop\Stuff\ReleaseNotesAndFolderList.pdf", " \\ny-dc-03\\IT-01");
try
{
printer.Print();
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
}
对于我的生活,我无法让它工作并打印出单个PDF。任何时候我去打印,我收到错误“无法找到指定的文件”。有没有人知道我的代码是否有问题?我在这里使用PDFSharp ......
答案 0 :(得分:8)
一个观察结果,如下:
PdfFilePrinter.AdobeReaderPath
= @"C:\\Documents and Settings\\mike.smith\\Desktop\\Adobe Reader 9.0.exe";
您正在使用“@”来转义字符串并转义反斜杠。删除“@”或使用单个反斜杠。
还要确保这是EXE的正确路径。
更新:如果您确认自己拥有Acrobat Reader EXE的正确路径,则接下来要查看的是要传递给PdfFilePrinter构造函数的“Printer Name”参数。
您正在传递" \\ny-dc-03\\IT-01"
作为打印机名称。这需要完全按照Windows中打印机列表中显示的名称匹配打印机名称,而不仅仅是任意IP打印机。
如果这是正确的,请务必删除尾随空格:"\\ny-dc-03\\IT-01"
。
答案 1 :(得分:1)
这可能是明显的,但是acrobat在:
C:\ Documents and 设置\ mike.smith \桌面\的Adobe Reader 9.0.exe
这只是你的用户名意味着你的名字不是迈克史密斯。
答案 2 :(得分:1)
您正在通过
" \\ny-dc-03\\IT-01"
我认为这应该是"\\\\ny-dc-03\\IT-01"
或@"\\ny-dc-03\IT-01"
不确定@"\\ny-dc-03\\IT-01"
是否有效,但"\\ny-dc-03\\IT-01"
无效,因为UNC名称以双反斜杠开头。