Syncfusion WinRT: исключение для кода, работающего в версии 12.2.0.36, который теперь не работает в версии 13.1.0.21

Я спросил об этом на сайте syncfusion foruns, но решил, что попробую и здесь.

Некоторое время назад я работал над проектом, который использовал Syncfusion для 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.SetColorSpace () в Syncfusion.Pdf.Graphics.PdfBitmap.Save () в Syncfusion.Pdf.Graphics.PdfGraphics.DrawImage (изображение PdfImage, один x, один y, одна ширина, одна высота) в Gapp_metro.Pages.PdfPage.d__25.MoveNext ()

Изменилось ли что-нибудь между версиями, из-за чего я мог выдавать ошибку? Или я что-то не так делаю?


person Ric    schedule 15.04.2015    source источник


Ответы (1)


В настоящее время Essential PDF Winrt поддерживает следующие форматы изображений. 1. Jpeg 2. PNG 3. Tiff 4. Gif

Пожалуйста, попробуйте изображение PNG, не конвертируя его в jpeg. Я приложил образец проекта для вашей справки. Попробуйте это и дайте мне знать результат.

http://www.syncfusion.com/downloads/support/forum/118851/InsertingImage613405857.zip

С уважением,

Картикеян.C

person KarthikeyanC    schedule 29.04.2015
comment
я понял это, проблема была в этой строке: PdfImage pdfImage; - person Ric; 29.04.2015