【问题标题】:Syncfusion PDF Images Xamarin.iosSyncfusion PDF 图像 Xamarin.ios
【发布时间】:2018-10-06 20:12:52
【问题描述】:

目前我正在从我的 Xamarin.ios 应用程序生成动态 PDF。但是,我目前尝试做的是添加一个自定义列表类,其中包含一个字节数组(图像)和一个用于图像标题的字符串。但是,当我生成 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; }
    }

【问题讨论】:

    标签: c# pdf xamarin.ios syncfusion


    【解决方案1】:

    您的要求可以使用 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 工作。

    【讨论】:

    • 你好。感谢您的回复,很抱歉花了这么长时间才回复。但是,当我需要遍历我的自定义列表并为列表中的每条数据设置一个新行时,这将如何实现?该示例向我展示了如何实现事件处理程序,但实际上并未针对我的情况如何实现?
    • @JamieLeech,您可以使用上面的 BeginCellLayout 事件处理程序在单元格边界中绘制图像。您能否确认您的要求是否是将图像保留在单元格范围内?如果是,则可以通过将 ImagePosition 从 Fit 更改为 Stretch 来将图像保留在单元格边界中。请您尝试一下。如果您仍有疑问,请使用您的要求的详细信息创建支持票。这将有助于我们检查并为您提供解决方案。可以使用以下链接创建支持票。 [1]:syncfusion.com/account/login
    猜你喜欢
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多