Синхронизация PDF изображения Xamarin.ios - PullRequest
0 голосов
/ 06 октября 2018

В настоящее время я создаю динамический PDF из моего приложения Xamarin.ios.Однако в настоящее время я пытаюсь добавить пользовательский класс списка, который содержит байтовый массив (изображение) и строку для заголовка изображения.Однако, когда я создаю документ PDF, я использую цикл foreach для результатов, содержащихся в списке, чтобы получить каждый байтовый массив изображений и соответствующий заголовок.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я получаю сгенерированный PDF,кажется, что 4 изображения распечатаны в PDF.Я не уверен, что делаю что-то не так, но не вижу, если я?

Создание части изображения в PDF-сетке:

        #region ATTACHED IMAGES GRID
        PdfGrid imagesGrid = new PdfGrid();

        imagesGrid.Columns.Add(2);
        imagesGrid.Columns[0].Width = 110;
        imagesGrid.Columns[1].Width = 400;

        PdfGridRow imagesGridTitle = imagesGrid.Rows.Add();
        imagesGridTitle.Cells[0].Value = "Attached Photos";


        AddImages(imagesGrid);


        #region CUSTOMISE STYLES

        imagesGrid.Style.CellPadding = generalPadding;

        imagesGridTitle.ApplyStyle(pdfGridHeaderStyle);



        imagesGrid.Rows.SetSpan(0, 0, 1, 2);

        #endregion

Метод динамического создания дополнительных строк:

private static void AddImages(PdfGrid imagesGrid)
    {
        foreach (var image in FormResults.photoResults)
        {
            PdfGridRow newGridRow = imagesGrid.Rows.Add();
            newGridRow.Cells[0].Value = image.Caption;
            newGridRow.Cells[1].Value = CreatePDFImage(image.ImageByte);

            newGridRow.Cells[1].ImagePosition = PdfGridImagePosition.Fit;
        }
    }

Метод создания pdfimage из байтового массива:

private static PdfImage CreatePDFImage(byte[] byteArray)
    {
        MemoryStream imageMs = new MemoryStream(byteArray);

        PdfImage image = new PdfBitmap(imageMs);

        return image;
    }

наконец, мой пользовательский список:

public class PhotoResults
    {
        public byte[] ImageByte { get; set; }
        public string Caption { get; set; }
    }

1 Ответ

0 голосов
/ 08 октября 2018

Ваше требование может быть достигнуто с помощью обработчика событий BeginCellLayout.Ниже вы найдете образец и выходной PDF для справки.

Образец: http://www.syncfusion.com/downloads/support/directtrac/217022/ze/Sample1494155968

Выходной PDF: http://www.syncfusion.com/downloads/support/directtrac/217022/ze/output-1577237401

Примечание: Я работаю в Syncfusion.

...