asp.net 你能用ITextSharp(c#)打印一个pdf文件吗?如果可以怎么做?

mo49yndu  于 2023-03-13  发布在  .NET
关注(0)|答案(4)|浏览(469)

我有一个ASPX页面可以生成一个报告。我有一个打印按钮可以用ITextSharp生成一个PDF文件。现在我想打印那个文件。
我有两个问题:
我如何打印它甚至不保存文件?
如果我不能这么做,我至少可以打印保存的文件吗?
先谢了。

7rfyedvj

7rfyedvj1#

您不能使用iTextSharp打印PDF文档。iTextSharp只能用于阅读或构建PDF。
你能做的就是把它展示给用户,然后他可以选择打印或不打印。
下面是一个如何通过C#ASP.NET将PDF文档推送给用户的示例:How To Write Binary Files to the Browser Using ASP.NET and Visual C# .NET

fdbelqdn

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
希望有帮助。

k4ymrczo

k4ymrczo3#

在ASP.NET中,你不打印任何东西,用户打印。你能做的最多的就是调出print dialog,但是我个人发现当一个网页突然打开一个模态对话框时,这是非常烦人的。

vof42yt1

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

相关问题