我正在使用Syncfusion和Xamarin Forms快速创建PDF。在iOS上一切正常,但是在Android上,找不到图像(徽标)。
遵循syncfusion PDF入门,但即使它不起作用。该图像位于android的资源/可绘制区域中。我也确实将其添加到资产中。
这是xamarin形式的iOS中的工作代码
//Load the image
Stream imageStream = System.IO.File.OpenRead("logo.jpg");
//Load the image from the stream
PdfBitmap image = new PdfBitmap(imageStream);
不幸的是,即使在Android上也无法使用
//Load the image
Stream imageStream = DependencyService.Get<ISave>().LoadFromFile(@"logo.jpg");
//Load the image from the stream
PdfBitmap image = new PdfBitmap(imageStream);
感谢您的帮助,因为我已经坚持了3天。
答案 0 :(得分:0)
我刚刚关注the syncfusion PDF getting started
,我认为您在错误的位置添加了图片。该图像应保存在 Xamarin.Forms项目中,并且可以使用以下代码段进行访问:
Stream imageStream = typeof(App).GetTypeInfo().Assembly.GetManifestResourceStream("GettingStarted.Assets.logo.jpg");
GettingStarted.Assets.logo.jpg
GettingStarted
表示您的项目的名称。
Assets
表示该选件内的图片。
logo.jpg
表示图片的名称。
请确保将您的图片作为“嵌入式资源”和“始终复制”
我在这里添加了一个scrrenshot来使其清晰:
答案 1 :(得分:0)
在Xamarin Android中对“从可绘制文件夹中加载图像”的进一步分析中,我们发现我们无法直接从可绘制文件夹中加载图像。相反,我们可以从资源中获取信息。请找到下面的代码片段以获取更多详细信息,
Xamarin.Android:
var context = Android.App.Application.Context;
using (var drawable =
Xamarin.Forms.Platform.Android.ResourceManager.GetDrawable(context, fileName))
using (var bitmap = ((BitmapDrawable)drawable).Bitmap)
{
var stream = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Png, 100, stream);
bitmap.Recycle();
return stream.ToArray();
}
我们已经为该示例创建了示例,可以从下面的链接下载该示例,