【问题标题】:How to store Generated pdf on deployed website with Itext如何使用 Itext 在已部署的网站上存储生成的 pdf
【发布时间】:2018-03-13 21:09:19
【问题描述】:

我正在尝试写入 pdf 并通过电子邮件发送。我可以在我的本地机器上实现它。问题是当我部署到天蓝色时,我不确定在哪里存储 pdf 。我看过一个关于这个的问题 并从stackoverflow尝试了这个解决方案 - Does iText (any version) work on Windows Azure websites?.

var path = Server.MapPath("test.pdf");

FileInfo dest = new FileInfo(path);

var writer = new PdfWriter(dest);
var pdf = new PdfDocument(writer);
var document = new Document(pdf);
document.Add(new Paragraph("hello world"));
document.Close();

我收到一个错误

找不到路径的一部分 'D:\home\site\wwwroot\Email\test.pdf'。

【问题讨论】:

  • 考虑使用MemoryStream 作为PdfWriter 的目标。

标签: c# asp.net-mvc azure itext


【解决方案1】:

尝试在内存中创建 Pdf 并将内容流式传输到 asp.net 输出流。

Document document = new Document(PageSize.A4);
MemoryStream ms = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, ms);
document.Open();
document.NewPage();
...
...
document.Close();

Response.Clear();
Response.ContentType = "application/pdf";
byte[] pdfBytes = ms.ToArray();
Response.AppendHeader("Content-Length", pdfBytes.Length.ToString());
Response.OutputStream.Write(pdfBytes, 0, (int)pdfBytes.Length);

【讨论】:

  • 在 Mkl 的建议之后,我找到了基本相同的解决方案 (stackoverflow.com/questions/1196059/…),没有后半部分。
  • @Curious 在这种情况下,请接受此答案(因为它足够相似)或创建您自己的答案以最终接受。
【解决方案2】:

我想您的问题与文件路径有关。 如果我使用Server.MapPath("Azure_Example1.pdf")这样的路径,我也会得到和你一样的错误。

我建议你可以尝试使用像Server.MapPath("~/Azure_Example1.pdf") 这样的相对路径。 '~/' 指向项目根目录。

你也可以设置断点,通过远程调试来检查路径的值。

我创建了一个简单的演示,它在我这边运行良好。可以参考一下。

  1. 管理 Nuget 包中安装 iTextSharp 5.5.13 nuget 包。

  2. 使用以下代码:

        var path = Server.MapPath("~/Azure_Example1.pdf");
        FileInfo dest = new FileInfo(path);
        FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
        Document doc = new Document();
        PdfWriter writer = PdfWriter.GetInstance(doc, fs);
        doc.Open();
        doc.Add(new Paragraph("Hello World")); //change content in pdf
        doc.Close();
    

最后,您可以看到pdf文件已存储在项目根目录中。

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2018-12-25
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多