Syncfusion PDF:将图像添加到pdf在iOS中有效,但在android中无效

时间:2019-05-13 10:47:16

标签: c# xamarin.forms syncfusion

我正在使用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天。

2 个答案:

答案 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来使其清晰:

screenshot

答案 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();
}

我们已经为该示例创建了示例,可以从下面的链接下载该示例,

Sample for loading images from resource