我有一个ASPX页面可以生成一个报告。我有一个打印按钮可以用ITextSharp生成一个PDF文件。现在我想打印那个文件。我有两个问题:我如何打印它甚至不保存文件?如果我不能这么做,我至少可以打印保存的文件吗?先谢了。
7rfyedvj1#
您不能使用iTextSharp打印PDF文档。iTextSharp只能用于阅读或构建PDF。你能做的就是把它展示给用户,然后他可以选择打印或不打印。下面是一个如何通过C#ASP.NET将PDF文档推送给用户的示例:How To Write Binary Files to the Browser Using ASP.NET and Visual C# .NET
fdbelqdn2#
@Jared。我们所做的是在将其保存到文件系统后,用打印参数启动acrobat阅读器。类似于:
ProcessStartInfo newProcess = new ProcessStartInfo(pdfPath, dfArguments);
newProcess.CreateNoWindow = true; newProcess.RedirectStandardOutput = true; newProcess.UseShellExecute = false; Process pdfProcess = new Process(); pdfProcess.StartInfo = newProcess; pdfProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; pdfProcess.Start(); pdfProcess.WaitForExit();
(请注意,这不是我们使用的实际代码,我是从here获得的)这应该可以让您开始。要使用打印参数初始化adobe acrobat,请参见this。希望有帮助。
k4ymrczo3#
在ASP.NET中,你不打印任何东西,用户打印。你能做的最多的就是调出print dialog,但是我个人发现当一个网页突然打开一个模态对话框时,这是非常烦人的。
vof42yt14#
#region "GeneratePdf" [HttpPost("GeneratePdf")] public IActionResult GeneratePdf ([FromBody] GeneratePdf ip) { Document document = new Document(PageSize.A4, 36, 36, 25, 25); PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("Sample1.pdf", FileMode.Create)); document.Open(); string imagePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\images\\Logo.jpg"); Image image = Image.GetInstance(imagePath); image.ScaleAbsolute(100f, 60f); float documentWidth = document.PageSize.Width; float imageWidth = image.ScaledWidth; float documentHeight = document.PageSize.Height; float xCoordinate = (documentWidth - imageWidth) - 30f; float yCoordinate = (documentHeight - imageWidth) + 30f; image.SetAbsolutePosition(xCoordinate, yCoordinate); document.Add(image); Paragraph paragraph = new Paragraph(ip.Body); paragraph.SpacingBefore = 55; Font font = new Font(Font.FontFamily.TIMES_ROMAN, 10); paragraph.Font = font; document.Add(new Paragraph(paragraph)); Paragraph paragraph2 = new Paragraph("“Enter Whatever Text you Want”."); paragraph2.Alignment = Element.ALIGN_CENTER; paragraph2.SpacingAfter = 10; paragraph2.SpacingBefore = 40; document.Add(new Paragraph(paragraph2)); string imagePath2 = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\images\\Footer.png"); Image image2 = Image.GetInstance(imagePath2); image2.ScaleAbsolute(documentWidth, 100f); float imageWidth2 = image2.ScaledWidth; float x = (documentWidth - imageWidth2); image2.SetAbsolutePosition(x, 0f); document.Add(image2); document.Close(); Response.ContentType = "application/pdf"; Response.Headers.Add("Content-Disposition", "attachment; filename=Sample.pdf"); Response.Headers.Add("Cache-Control", "no-cache, no-store, must-revalidate"); Response.Headers.Add("Pragma", "no-cache"); Response.Headers.Add("Expires", "0"); FileStream fileStream = new FileStream("Sample.pdf", FileMode.Open, FileAccess.Read); return new FileStreamResult(fileStream, "application/pdf"); } #endregion
4条答案
按热度按时间7rfyedvj1#
您不能使用iTextSharp打印PDF文档。iTextSharp只能用于阅读或构建PDF。
你能做的就是把它展示给用户,然后他可以选择打印或不打印。
下面是一个如何通过C#ASP.NET将PDF文档推送给用户的示例:How To Write Binary Files to the Browser Using ASP.NET and Visual C# .NET
fdbelqdn2#
@Jared。我们所做的是在将其保存到文件系统后,用打印参数启动acrobat阅读器。类似于:
(请注意,这不是我们使用的实际代码,我是从here获得的)这应该可以让您开始。
要使用打印参数初始化adobe acrobat,请参见this。
希望有帮助。
k4ymrczo3#
在ASP.NET中,你不打印任何东西,用户打印。你能做的最多的就是调出print dialog,但是我个人发现当一个网页突然打开一个模态对话框时,这是非常烦人的。
vof42yt14#