logo
Welcome Guest! To enable all features please Login or Register.

Notification

Icon
Error

Options
Go to last post Go to first unread
filipverreth  
#1 Posted : Wednesday, February 10, 2016 11:43:18 AM(UTC)
filipverreth

Rank: Newbie

Groups: Registered
Joined: 2/10/2016(UTC)
Posts: 1
Belgium
Location: antwerp

Exception

Code:

"Patagames.Pdf.Net.Exceptions.PdfiumException: Unexpected error code\r\n   at Patagames.Pdf.Net.PdfPage.get_Handle()\r\n   at Patagames.Pdf.Net.PdfPage.get_Width()\r\n   at Connective.WebSigner.SignController.PdfActions.Pdf2Image.RenderPage(PdfPage page, Single resolution, Int32 scaleLevel, ImageFormat format)




Code:
Code:


static Pdf2Image()
        {
            PdfCommon.Initialize(
                  "abc"
                + "def"
                + "123"
                + "234);
        }
      /// <summary>
        /// Creates an image convertor by reading the PDF from a path on disk.
        /// </summary>
        public Pdf2Image(string documentpath)
        {
            _pdfFile = PdfDocument.Load(documentpath);
        }

        /// <summary>
        /// Returns a jagged array holding several images of a PDF document.
        /// </summary>
        /// <param name="resolution"><see cref="float"/> depicting image resolution.
        ///     72 or 96 is a good default.</param>
        /// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
        /// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
        public byte[][] RenderPagesToByteArrays(float resolution, int scaleLevel, ImageFormat format)
        {
            byte[][] imBA = new byte[_pdfFile.Pages.Count][];
            int i = 0;
            foreach (var imageBytes in RenderPagesToBytes(resolution, scaleLevel, format))
            {
                imBA[i] = imageBytes;
                i++;
            }
            return imBA;
        }

        /// <summary>
        /// Returns a List holding several images of a PDF document.
        /// </summary>
        /// <param name="resolution"><see cref="float"/> depicting image resolution.
        ///     72 or 96 is a good default.</param>
        /// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
        /// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
        public List<byte[]> RenderPagesToByteList(float resolution, int scaleLevel, ImageFormat format)
        {
            var result = new List<byte[]>(PageCount);
            result.AddRange(RenderPagesToBytes(resolution, scaleLevel, format));
            return result;
        }

        /// <summary>
        /// Returns a List holding several base64-encoded images of a PDF document.
        /// </summary>
        /// <param name="resolution"><see cref="float"/> depicting image resolution.
        ///     72 or 96 is a good default.</param>
        /// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
        /// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
        public List<string> RenderPagesToBase64List(float resolution, int scaleLevel, ImageFormat format)
        {
            List<string> imageList = new List<string>(PageCount);

            foreach (var bytes in RenderPagesToBytes(resolution, scaleLevel, format))
            {
                imageList.Add(Convert.ToBase64String(bytes));
            }
            return imageList;
        }

        /// <summary>
        /// Returns an IEnumerable holding several images of a PDF document.
        /// </summary>
        /// <param name="resolution"><see cref="float"/> depicting image resolution.
        ///     72 or 96 is a good default.</param>
        /// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
        /// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
        public IEnumerable<byte[]> RenderPagesToBytes(float resolution, int scaleLevel,
            ImageFormat format)
        {
            foreach (var page in _pdfFile.Pages)
            {
                yield return RenderPage(page, resolution, scaleLevel, format);
            }
        }

        /// <summary>
        /// Returns a byte array containing an image of a single page in a PDF document.
        /// </summary>
        /// <param name="pageNumber">Integer defining the page number. Zero-based.</param>
        /// <param name="resolution"><see cref="float"/> depicting image resolution.
        ///     72 or 96 is a good default.</param>
        /// <param name="scaleLevel">Further scaling modifier, treated as percent.</param>
        /// <param name="format"><see cref="ImageFormat"/> to use. Png is recommended.</param>
        public byte[] RenderPageToBytes(int pageNumber, float resolution,
            int scaleLevel, ImageFormat format)
        {
            var page = _pdfFile.Pages[pageNumber];
            return RenderPage(page, resolution, scaleLevel, format);
        }

        private byte[] RenderPage(PdfPage page, float resolution, int scaleLevel, ImageFormat format)
        {
            int width = (int)(page.Width * resolution / 72f);
            int height = (int)(page.Height * resolution / 72f);
            using (PdfBitmap bitmap = new PdfBitmap(width, height, false))
            {
                // Fill background
                bitmap.FillRect(0, 0, width, height, Color.White);
                page.Render(bitmap, 0, 0, width, height, Patagames.Pdf.Enums.PageRotate.Normal,
                    Patagames.Pdf.Enums.RenderFlags.FPDF_ANNOT);

                Image scaled;
                if (scaleLevel == 100)
                {
                    scaled = bitmap.Image;
                }
                else
                {
                    int scaledWidth = bitmap.Width * scaleLevel / 100;
                    int scaledHeight = bitmap.Height * scaleLevel / 100;
                    scaled = new Bitmap(bitmap.Image, scaledWidth, scaledHeight);
                }
                
                using (scaled)
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        scaled.Save(ms, format);
                        return ms.ToArray();
                    } 
                } 
            }
        }
Paul Rayman  
#2 Posted : Thursday, February 11, 2016 6:25:25 AM(UTC)
Paul Rayman

Rank: Administration

Groups: Administrators
Joined: 1/5/2016(UTC)
Posts: 1,109

Thanks: 7 times
Was thanked: 130 time(s) in 127 post(s)
It looks like the library was released or document was closed and RenderPage() was called after that.

Could you please email me at support@patagames.com the sample project with this issue and pdf file?
Users browsing this topic
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.