【问题标题】:Create PDF from existing pdf with azure storage使用 Azure 存储从现有 pdf 创建 PDF
【发布时间】:2018-09-04 07:25:51
【问题描述】:

我使用 Microsoft Botbuilder 制作了一个机器人应用程序。现在我想从用户输入创建一个 pdf 文件。该文件应存储在我的天蓝色存储中。 我有一个“pdf-template”应该被复制和修改(这个文件已经在 azure 存储中)。它有一些应该用用户输入填充的文本框。我已经用 iTextSharp 编写了代码。 但我需要这个代码的文件流。有人知道如何从我的天蓝色存储中的文件中获取文件流吗?或者有没有其他方法可以完成我的任务?

编辑: 这是我需要文件流的代码

string fileNameExisting = Path.Combine(Directory.GetCurrentDirectory(), "Some.pdf");
     string fileNameNew = @"Path/Some2.pdf";
     var inv = new Invention
     {
        Inventor = new Inventor { Firstname = "TEST!", Lastname= "TEST!" },
        Date = DateTime.Now,
        Title = "TEST",
        Slogan = "TEST!",
        Description = "TEST!",
        Advantages = "TEST!s",
        TaskPosition = "TEST!",
        TaskSolution = "TEST!"
     };
     using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
     using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
     {
        // Open existing PDF
        var pdfReader = new PdfReader(existingFileStream);

        // PdfStamper, which will create
        var stamper = new PdfStamper(pdfReader, newFileStream);

        var form = stamper.AcroFields;
        var fieldKeys = form.Fields.Keys;

        foreach (string fieldKey in fieldKeys)
        {
           var props = fieldKey.Split('.');
           string t = GetProp(props, inv);
           form.SetField(fieldKey, t);
        }
        stamper.Close();
        pdfReader.Close();
     }
  }
  public static string GetProp(string[] classes, object oldObj)
  {
     var obj = oldObj.GetType().GetProperty(classes[0]).GetValue(oldObj, null);
     if(classes.Length>1)
     {
        classes = classes.Skip(1).ToArray();
        return GetProp(classes, obj);
     }
     Console.WriteLine(obj.ToString());
        return obj.ToString();
  }

【问题讨论】:

  • 你能在需要文件流的地方分享代码吗?

标签: c# azure-storage botframework filestream


【解决方案1】:

PdfReader 构造函数也采用字节数组。您应该能够使用以下内容创建对象:

var pdfTemplateBytes = await new WebClient().DownloadDataTaskAsync("https://myaccount.blob.core.windows.net/templates/mytemplate.pdf");
var pdfReader = new PdfReader(pdfTemplateBytes );

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 2019-08-17
  • 1970-01-01
  • 2022-11-02
  • 2023-03-07
  • 2018-07-06
  • 1970-01-01
相关资源
最近更新 更多