Xamarin.Forms 未能使用 EvoHtmlToPdfclient 将 html 字符串转换为 pdf 文件
Posted
技术标签:
【中文标题】Xamarin.Forms 未能使用 EvoHtmlToPdfclient 将 html 字符串转换为 pdf 文件【英文标题】:Xamarin.Forms failing to use EvoHtmlToPdfclient in order to convert html string to a pdf file 【发布时间】:2019-05-10 10:59:08 【问题描述】:我正在使用 Xamarin.Forms,我正在尝试使用 EvoPdfConverter 将 html 字符串转换为 pdf 文件,但问题是当我尝试这样做时,代码 sn-p 中的 htmlToPdfConverter.ConvertHtmlToFile(htmlData, "", myDir.ToString());
行下面,该应用程序只是冻结并且什么都不做,似乎它想连接到给定的 IP,但它不能,但是我没有收到任何错误或异常!连抓都抓不到!!有人知道我应该怎么做才能解决这个问题吗?这是我的代码:
public void ConvertHtmlToPfd(string htmlData)
ServerSocket s = new ServerSocket(0);
HtmlToPdfConverter htmlToPdfConverter = new
HtmlToPdfConverter(GetLocalIPAddress(),(uint)s.LocalPort);
htmlToPdfConverter.TriggeringMode = TriggeringMode.Auto;
htmlToPdfConverter.PdfDocumentOptions.CompressCrossReference = true;
htmlToPdfConverter.PdfDocumentOptions.PdfCompressionLevel = PdfCompressionLevel.Best;
if (ContextCompat.CheckSelfPermission(android.App.Application.Context, Manifest.Permission.WriteExternalStorage) != Permission.Granted)
ActivityCompat.RequestPermissions((Android.App.Activity)Android.App.Application.Context, new String[] Manifest.Permission.WriteExternalStorage , 1);
if (ContextCompat.CheckSelfPermission(Android.App.Application.Context, Manifest.Permission.ReadExternalStorage) != Permission.Granted)
ActivityCompat.RequestPermissions((Android.App.Activity)Android.App.Application.Context, new String[] Manifest.Permission.ReadExternalStorage , 1);
try
// create the HTML to PDF converter object
if (Android.OS.Environment.IsExternalStorageEmulated)
root = Android.OS.Environment.ExternalStorageDirectory.ToString();
htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";
htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;
Java.IO.File myDir = new Java.IO.File(root + "/Reports");
try
myDir.Mkdir();
catch (Exception e)
string message = e.Message;
Java.IO.File file = new Java.IO.File(myDir, filename);
if (file.Exists()) file.Delete();
htmlToPdfConverter.ConvertHtmlToFile(htmlData, "", myDir.ToString());
catch (Exception ex)
string message = ex.Message;
【问题讨论】:
你参考这个文档吗(evopdf.com/xamarin-html-to-pdf-converter.aspx)? 是的,但是没有指导,我的意思是有一个示例,但是该示例正在使用ConvertIrl()
方法转换 URL,但我想转换一个 HTML 字符串 uisng ConvertHtmlToFile()
方法,即一个 void 方法并且不返回任何东西,除了我在我的设备上运行了示例之外,这也不起作用!
好了,不介意的话可以试试pdftron(pdftron.com/documentation/xamarin/guides/basics/html-to-pdf/…)。
谢谢,我试试,看看有没有效果
【参考方案1】:
您能否尝试将基本 URL 设置为 ConvertHtmlToFile 调用的第二个参数?您传递了一个空字符串。这有助于将 HTML 中的相对 URL 解析为完整 URL。转换器在尝试从无效资源 URL 检索内容时可能会出现延迟。
【讨论】:
以上是关于Xamarin.Forms 未能使用 EvoHtmlToPdfclient 将 html 字符串转换为 pdf 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色
如果调用方未使用 Xamarin.Forms,Xamarin 依赖项服务能否正常工作?
在 Xamarin.Forms 中使用 Android 绑定