Syncfusion PDF 图像 Xamarin.ios
Syncfusion PDF Images Xamarin.ios
目前我正在从我的 Xamarin.ios 应用程序生成动态 PDF。但是,我目前尝试做的是添加一个自定义列表 class,其中包含一个字节数组(图像)和一个图像标题字符串。但是,当我生成 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;
}
最后,我的自定义列表 class:
public class PhotoResults
{
public byte[] ImageByte { get; set; }
public string Caption { get; set; }
}
您的要求可以使用 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 工作。
目前我正在从我的 Xamarin.ios 应用程序生成动态 PDF。但是,我目前尝试做的是添加一个自定义列表 class,其中包含一个字节数组(图像)和一个图像标题字符串。但是,当我生成 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;
}
最后,我的自定义列表 class:
public class PhotoResults
{
public byte[] ImageByte { get; set; }
public string Caption { get; set; }
}
您的要求可以使用 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 工作。