【问题标题】:Generate pdf from user input to PDF Xamarin从用户输入生成 pdf 到 PDF Xamarin
【发布时间】:2021-11-14 06:31:12
【问题描述】:

我目前正在开发一个以 Xamarin 形式为 Android 和 IOS 生成订单的应用程序。客户可以下单,下单方法见代码块。我想创建一个以 PDF 格式显示客户订单的功能。有没有办法从这个函数中创建一个名为“CreatePdfFile”的新函数,该函数会生成包含客户订购的订单的 pdf?

    public async Task<string> PlaceOrderAsync()
    {
        var cn = DependencyService.Get<ISQLite>().GetConnection();
        var data = cn.Table<CartItem>().ToList();

        var orderId = Guid.NewGuid().ToString();
        var uname = Preferences.Get("Username", "Guest");

        foreach(var item in data)
        {
            OrderDetails od = new OrderDetails()
            {
                OrderId = orderId,
                OrderDetailId = Guid.NewGuid().ToString(),
                ProductId = item.ProductId,
                ProductName = item.ProductName
            };
            await client.Child("OrderDetails").PostAsync(od);
        }
        await client.Child("Orders").PostAsync(
            new Order()
            {
                OrderId = orderId,
                Username = uname
            });
        return orderId;
    }

【问题讨论】:

标签: c# android ios pdf xamarin


【解决方案1】:

您可以尝试使用Syncfusion.Xamarin.PDF

首先从 NuGet 包安装。

使用表格创建 PDF 文档:

  //Create a new PDF document.
  PdfDocument doc = new PdfDocument();
  //Add a page.
  PdfPage page = doc.Pages.Add();
  //Create a PdfGrid.
  PdfGrid pdfGrid = new PdfGrid();
  //Add values to list
  List<object> data = new List<object>();
  Object row1 = new { ID = "E01", Name = "Clay" };
  Object row2 = new { ID = "E02", Name = "Thomas" };
  Object row3 = new { ID = "E03", Name = "Andrew" };
  Object row4 = new { ID = "E04", Name = "Paul" };
  Object row5 = new { ID = "E05", Name = "Gray" };
  data.Add(row1);
  data.Add(row2);
  data.Add(row3);
  data.Add(row4);
  data.Add(row5);
  //Add list to IEnumerable
  IEnumerable<object> dataTable = data;
  //Assign data source.
  pdfGrid.DataSource = dataTable;
  //Draw grid to the page of PDF document.
  pdfGrid.Draw(page, new PointF(10, 10));
  //Save the PDF document to stream.
  MemoryStream stream = new MemoryStream();
  doc.Save(stream);
  //Close the document.
  doc.Close(true);

  //Save the stream as a file in the device and invoke it for viewing
  Xamarin.Forms.DependencyService.Get<ISave>().SaveAndView("Output.pdf",             "application/pdf", stream);

有关ISave的更多详细信息,您可以从Syncfusion官方文档中获取完整代码。

【讨论】:

    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 2016-01-30
    • 2010-09-30
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多