Syncfusion PDF: добавление изображения в pdf работает в iOS, но не в Android - PullRequest
1 голос
/ 13 мая 2019

Я создаю PDF на лету, используя Syncfusion и Xamarin Forms. В iOS все идет хорошо, но в Android не удалось найти изображение (логотип).

После начала работы Syncfusion PDF, но даже это не работает. Изображение находится в ресурсе Android / Drawable. Я также добавил его в активы.

Это рабочий код в формах 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 ]

1 голос
/ 14 мая 2019

В ходе дальнейшего анализа «Загрузите изображение из папки для рисования» в Android Xamarin мы обнаружили, что не можем загрузить изображения непосредственно из папки для рисования.Вместо этого мы можем получить, если из ресурсов.Пожалуйста, найдите фрагмент кода ниже для получения более подробной информации,

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

Мы создали образец для того же, который можно скачать по ссылке ниже,

Образец для загрузки изображений с ресурса

0 голосов
/ 14 мая 2019

Я просто последовал за 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 означает название картинки.

Обязательно поместите ваше изображение как «встроенный ресурс» и «Всегда копировать»

Я добавляю скриншот, чтобы прояснить:

screenshot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...