当我打印html文件时,我有问题,我已经尝试过doc,xls和txt文件,它们工作得很好,但是当我给出html文件时它会显示打印对话框,我必须按顺序选择ghostscript打印机工作。
我的代码是:
[DllImport("Winspool.drv")]
private static extern bool SetDefaultPrinter(string printerName);
[ValidateInput(false)]
public ActionResult CreatePdf(string file , string html)
{
SetDefaultPrinter("Ghostscript");
Process process1 = new Process();
if (html != null && html != "")
{ process1.StartInfo.FileName = "example.html"; }
else
{ process1.StartInfo.FileName = file; }
process1.EnableRaisingEvents = true;
process1.StartInfo.Verb = "print";
process1.StartInfo.Arguments = "\"Ghostscript PDF\"";
process1.StartInfo.WorkingDirectory = Server.MapPath("~" + "/Export");
process1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process1.StartInfo.CreateNoWindow = true;
process1.Start();
try
{
process1.WaitForExit();
}
catch (InvalidOperationException) { }
process1.Dispose();
}
这应该改变我的output.ps文件,然后我用它来制作pdf文件,这完全有效,我只需要为html文件工作。
我遵循了这两个例子:
编辑: 我需要这个转换才能从html获取pdf文件,并发现wkhtmltopdf最适合我。
答案 0 :(得分:0)
Ghostscript不会将HTML文档转换(布局和渲染)为PDF或PostScript,它只是一个用于处理PostScript和PDF文件的库,例如从头创建它们并将PostScript文件转换为栅格格式。
如果您想将HTML转换为PDF,最好的办法是使用像PrinceXML这样的商业图书馆,或者托管WebKit。
当您的代码有效时,它可以通过获取Internet Explorer(或任何您的shell默认Web浏览器)来进行渲染和打印。此技术无法在服务器端环境中可靠地工作。