从用户输入生成 pdf 到 PDF Xamarin

Posted

技术标签:

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

我目前正在开发一个以 Xamarin 形式为 androidios 生成订单的应用程序。客户可以下单,下单方法见代码块。我想创建一个以 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;
    

【问题讨论】:

您可以使用 iTextSharp 或 PdfSharp 等第三方库。 目前存在许多关于在 Xamarin 中创建 PDF 的问题。 google.com/search?q=xamarin+generate+pdf+site:***.com 【参考方案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官方文档中获取完整代码。

【讨论】:

以上是关于从用户输入生成 pdf 到 PDF Xamarin的主要内容,如果未能解决你的问题,请参考以下文章

Syncfusion Xamarin.Forms生成的PDF格式的文本

空 HTML textarea 输入未显示在 mPDF 生成的 PDF 中

从 React 组件生成 PDF 文件

将表格结果从联系表格 7 导出为 PDF (fPDF)

Xamarin 表单 UWP - 显示 PDF

从流中以 Xamarin 表单呈现 PDF