我和我目前的项目绑定了.这是一个工资单应用程序,我正在使用C#开发ASP.net webforms.我的老板说,这个网站的理想功能是点击付款查询日期,打开PDF并显示薪水支票信息.我已经做了几天的研究,试图找到最好的解决方案.到目前为止,我没有运气.我发现了一些不同的东西,比如iTextSharp,但一年的许可证现在太贵了.我也看过基于PHP的tcpdf.我还研究过CrystalReports和Active Reports.购买许可证也太贵了.我也研究过XML到PDF解决方案,但我找不到任何确定的东西.由于我对软件开发的商业世界很陌生,并且没有高级开发人员可以依赖,所以我几乎已经死了.我知道我们将从基于DOS的应用程序中将薪水下载到CSV文件中,该应用程序执行我们的时钟输入和输出.然后,我将CSV文件导入sql Server 2012 Express.非常感谢您的想法,因为我不知道从哪里开始!先谢谢你!
解决方法
我最近发现的HTML到PDF转换器是
WKHTMLtoPDF
它是开源的,并使用WebKit将HTML转换为PDF,因此它符合标准.
您可以如何使用它的一个例子是
using (var pdfStream = new FileStream(dlg.FileName,FileMode.OpenOrCreate)) { // pass in the HTML you want to appear in the PDF,and the file stream it writes to Printer.GeneratePdf(htmlStream,pdfStream); }
其中GeneratePdf定义为
public static void GeneratePdf(Stream html,Stream pdf) { Process process; StreamWriter stdin; var psi = new ProcessStartInfo(); psi.FileName = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\Lib","wkhtmltopdf.exe"); psi.WorkingDirectory = Path.GetDirectoryName(psi.FileName); // run the conversion utility psi.UseShellExecute = false; psi.CreateNoWindow = true; psi.RedirectStandardInput = true; psi.RedirectStandardOutput = true; psi.RedirectStandardError = true; psi.Arguments = "-q -n --disable-smart-shrinking - -"; process = Process.Start(psi); try { stdin = process.StandardInput; stdin.AutoFlush = true; //stdin.Write(html.ReadToEnd()); stdin.Write(new StreamReader(html).ReadToEnd()); stdin.Dispose(); process.StandardOutput.BaseStream.CopyTo(pdf); process.StandardOutput.Close(); pdf.Position = 0; process.WaitForExit(10000); } catch (Exception ex) { throw ex; } finally { process.Dispose(); } }