[英]Syncfusion WinRT: Exception on code working in version 12.2.0.36 that now doesn't work on version 13.1.0.21
我在syncfusion论坛上询问了这个问题,但我想我也可以在这里尝试一下
我前一段时间从事一个项目,该项目使用Syncfusion for WinRT版本12.2.0.36,它具有一些pdf操作,例如将图像添加到pdf。 经过一些努力,它开始工作,并且代码的一部分是这样的
//...
foreach (var image in this.images) //image is type Windows.Ui.Xaml.Controls.Image
{
var bitmap = image.Source as ImageSource;
var index = bitmaps.IndexOf(bitmap);
var signature = signatures.ElementAt(index);
var bytes = await signature.Data.EncodePngToJpeg(); //returns bytes of png image converted to jpg
PdfImage pdfImage;
using (var memoryStream = new MemoryStream(bytes))
{
pdfImage = PdfImage.FromStream(memoryStream);
}
var transform = image.RenderTransform as CompositeTransform;
var x = (image.Margin.Left + transform.TranslateX + horizontalOffset) * 100 / pdfViewer.Zoom - 10;
var y = (image.Margin.Top + transform.TranslateY + verticalOffset) * 100 / pdfViewer.Zoom - 10;
var firstPage = pdfDocument.Pages[pdfViewer.PageNumber - 1];
var pageHeight = firstPage.Size.Height;
var pageWidth = firstPage.Size.Width;
var selpage = pdfViewer.PageNumber;
var pagn = selpage - 1;
if (pagn < 0)
pagn = 0;
var ss = pdfViewer.GetDescendantsOfType<ScrollViewer>();
var hh = ss.ElementAt(3);
float VertOff = (float)hh.VerticalOffset;
float VertOff2 = (VertOff * 100 / pdfViewer.Zoom) - ((pagn) * (pageHeight * 1.325f));
var page = pdfDocument.Pages[pagn];
var graphics = page.Graphics;
var width = image.Width;
var height = image.Height;
//float fWidth = (float)width;
//float fHeight = (float)height;
fWidth = 165f * 0.50f;
fHeight = 110f * 0.50f;
graphics.ScaleTransform(0.75f, 0.75f);
graphics.DrawImage(pdfImage, (float)x, (float)y + VertOff2, fWidth, fHeight); // <-- exception is here
}
这样做是在特定位置将图像列表添加到pdf文档中,在此代码之后,我将保存并上传。
然后我安装了WinRT试用版(13.1.0.21),然后开始出现此异常
类型'System.NullReferenceException'的第一次机会异常发生在Syncfusion.Pdf.WinRT.DLL System.NullReferenceException'中:{“对象引用未设置为对象的实例。”}
使用此StackTrace:
在Syncfusion.Pdf.Graphics.PdfBitmap.Save()在Syncfusion.Pdf.Graphics.PdfGraphics.DrawImage(PdfImage图像,单个x,单个y,单个宽度,单个高度)在Syncfusion.Pdf.Graphics.PdfBitmap.Save()在Gapp_metro.Pages.PdfPage.d__25.MoveNext()
版本之间是否有任何更改,可能会给我一个错误? 还是我做错了什么?
当前,Essential PDF Winrt支持以下图像格式。 1. Jpeg 2. PNG 3. Tiff 4. Gif
请尝试PNG图像而不将其转换为jpeg,我已附加了示例项目供您参考,请尝试一下并让我知道结果。
http://www.syncfusion.com/downloads/support/forum/118851/InsertingImage613405857.zip
问候,
卡尔提克扬
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.