C# 尝试使用GhostScript打印PDF

C# 尝试使用GhostScript打印PDF,c#,pdf,ghostscript,ghostscript.net,C#,Pdf,Ghostscript,Ghostscript.net,我正在尝试使用ghostscript打印PDF文档。我正在使用GHOSTPRINT.NET包装器。我已经能够实现发送输出到打印机,但它仍然停留在假脱机状态。不确定这是否与我正在使用的开关或文件本身有关。。任何帮助都将不胜感激。代码如下: public static void PrintFormPdfData(byte[] formPdfData, string printer) { string tempFile; tempFile = Path.Ge

我正在尝试使用ghostscript打印PDF文档。我正在使用GHOSTPRINT.NET包装器。我已经能够实现发送输出到打印机,但它仍然停留在假脱机状态。不确定这是否与我正在使用的开关或文件本身有关。。任何帮助都将不胜感激。代码如下:

 public static void PrintFormPdfData(byte[] formPdfData, string printer)
    {
        string tempFile;

        tempFile = Path.GetTempFileName();

        using (FileStream fs = new FileStream(tempFile, FileMode.Create))
        {
            fs.Write(formPdfData, 0, formPdfData.Length);
            fs.Flush();
        }
        using (GhostscriptProcessor processor = new GhostscriptProcessor())
        {
            List<string> switches = new List<string>();
            switches.Add("-empty");
            switches.Add("-dPrinted");
            switches.Add("-dBATCH");
            switches.Add("-dNOPAUSE");
            switches.Add("-dNOSAFER");
            switches.Add("-dNumCopies=1");
            switches.Add("-sDEVICE=mswinpr2");
            switches.Add("-sOutputFile=%printer%" + printer);
            switches.Add("-f");
            switches.Add(tempFile);

            processor.StartProcessing(switches.ToArray(), null);
        }
    }
公共静态void PrintFormPdfData(字节[]formPdfData,字符串打印机)
{
字符串文件;
tempFile=Path.GetTempFileName();
使用(FileStream fs=newfilestream(tempFile,FileMode.Create))
{
写入(formPdfData,0,formPdfData.Length);
fs.Flush();
}
使用(GhostscriptProcessor=new GhostscriptProcessor())
{
列表开关=新列表();
添加(“-empty”);
添加(“-dPrinted”);
添加(“-dBATCH”);
添加(“-dNOPAUSE”);
添加(“-dNOSAFER”);
添加(“-dNumCopies=1”);
添加(“-sDEVICE=mswinpr2”);
添加(“-sOutputFile=%printer%”+打印机);
添加(“-f”);
添加(临时文件);
processor.StartProcessing(switches.ToArray(),null);
}
}

如果我是你,我会首先使用命令shell并从命令行运行Ghostscript

如果这不起作用,那么我们可以更进一步,但目前您实际上同时在两个不同组件上寻求帮助,即Ghostscript和Ghostscript.NET C#包装器。理想情况下,您需要首先确定问题出在哪里,如果它是通过命令shell工作的,那么它与Ghostscript.NET有关。如果没有,那么它与Ghostscript有关

请注意,后面的'-f'可能是问题的一部分。除非您:

a) 使用-c开关引入PostScript和
b) 打算继续提供更多选项。

嘿,肯斯,再次感谢您对GS的支持。我相信我的问题更多地围绕着我试图打印的数据,而不是GS或GhostScript.NET.Hmm,当然这是可能的。我仍然会从命令行尝试它。如果您认为这是值得怀疑的输入,只需运行“gswin32”,它就会显示出来。至少应该告诉您输入文件是否正常。我正在使用gswin32“C:\TEMP\report.jpg”命令行,但是我得到了一个操作数错误。我将要打印的文件存储在该文件中。尝试打印位于该路径的文件的正确语法是什么?您不能简单地将JPEG文件发送到Ghostscript。Ghostscript将接受PostScript和PDF作为输入,而不是JPEG。您正在打印JPEG文件吗?你的标题说你正在尝试打印PDF…我将其切换回打印PDF字节,你知道什么?成功了:)谢谢你,肯和贾布扬。