【问题标题】:How to convert HTML content to PDF in Xamarin forms如何在 Xamarin 表单中将 HTML 内容转换为 PDF
【发布时间】:2021-04-08 10:46:09
【问题描述】:

我想将 HTML 内容转换为 PDF。我尝试过使用第三方 API,例如 GemBox、GrapeCity.. 这些都在 UWP 中工作,但在 android 中失败。

请提出任何解决方案。我也可以使用付费 API。

谢谢!

【问题讨论】:

  • 如果您提供一些关于“在 android 中失败”的详细信息,我们可以帮助您解决它吗?
  • @Jason 我遇到了 GemBox.Document API 的这个问题。但我没有在 html 中使用这种字体-Faimly。 System.InvalidOperationException: '无法为字体 'Times New Roman' 获得匹配的字形字体。'
  • 'Times New Roman' 是 HTML 中的默认字体,所以似乎某些内容正在获取默认字体?无论如何,如果不调查您的 HTML 就很难说,但是,要创建 PDF 文件,您需要在 android 上拥有字体文件。您可以通过三种方式提供字体:安装的、私有的或嵌入的。

标签: c# pdf xamarin xamarin.forms html-to-pdf


【解决方案1】:

如果您正在寻找一体化解决方案,您可以在此处查看 Leadtools 文档转换器 nuget:https://www.nuget.org/packages/Leadtools.Document.Sdk/ 免责声明:我受雇于该库的供应商

LEADTOOLS 支持 HTML -> PDF 以及许多其他格式。您可以在此处查看更多信息:https://www.leadtools.com/sdk/document/document-converter

此库支持 Android、UWP 和 iOS 上的 Xamarin,并且完全离线。

以下是适用于您的用例的 sn-p 代码:

using (var documentConverter = new DocumentConverter())
{
   var htmlString = File.ReadAllText(@"./test.htm");
   using (var ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(htmlString)))
   {
      var htmlDocument = DocumentFactory.LoadFromStream(ms, new LoadDocumentOptions());
      var jobData = DocumentConverterJobs.CreateJobData(htmlDocument, "output.pdf", DocumentFormat.Pdf);
      var job = documentConverter.Jobs.CreateJob(jobData);
      documentConverter.Jobs.RunJob(job);
   }
}

【讨论】:

  • 如果我将 html 内容作为字符串而不是“./input.html”传递,它会起作用吗?实际上我想将 html 内容作为字符串传递。
  • 是的,您可以从字节中获取内存流,然后加载它。我更新了我的答案以显示如何。
猜你喜欢
  • 1970-01-01
  • 2011-08-13
  • 2016-05-06
  • 2017-05-29
  • 2018-03-28
  • 1970-01-01
  • 2020-04-03
  • 1970-01-01
  • 2022-12-07
相关资源
最近更新 更多