Beispiel #1
0
        /* ----------------------------------------------------------------- */
        ///
        /// Render
        ///
        /// <summary>
        /// Executes the rendering with the specified arguments.
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        private static void Render(IntPtr core, Graphics dest, Page page,
                                   PointF point, SizeF size, int flags)
        {
            if (core == IntPtr.Zero)
            {
                return;
            }

            var n  = 5;
            var hp = PdfiumApi.FPDF_LoadPage(core, page.Number - 1, n);

            if (hp == IntPtr.Zero)
            {
                throw new LoadException(LoadStatus.PageError);
            }
            var hdc = dest.GetHdc();

            try
            {
                PdfiumApi.FPDF_RenderPage(
                    hdc,
                    hp,
                    (int)point.X,
                    (int)point.Y,
                    (int)size.Width,
                    (int)size.Height,
                    GetRotation(page.Delta),
                    flags,
                    n
                    );
            }
            finally
            {
                dest.ReleaseHdc(hdc);
                PdfiumApi.FPDF_ClosePage(hp);
            }
        }
Beispiel #2
0
        /* ----------------------------------------------------------------- */
        ///
        /// GetPage
        ///
        /// <summary>
        /// Page オブジェクトを取得します。
        /// </summary>
        ///
        /// <param name="index">
        /// 最初のページを "ゼロ" とするインデックス
        /// </param>
        ///
        /* ----------------------------------------------------------------- */
        private Page GetPage(int index)
        {
            var page = _core.Invoke(e => PdfiumApi.FPDF_LoadPage(e, index, 5));

            if (page == IntPtr.Zero)
            {
                throw _core.GetLastError();
            }

            try
            {
                var degree = GetPageRotation(page);
                var size   = GetPageSize(page, degree);

                return(new Page(
                           File,                    // File
                           index + 1,               // Number
                           size,                    // Size
                           new Angle(degree),       // Rotation
                           new PointF(72.0f, 72.0f) // Resolution
                           ));
            }
            finally { PdfiumApi.FPDF_ClosePage(page); }
        }