/* ----------------------------------------------------------------- */ /// /// 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); } }
/* ----------------------------------------------------------------- */ /// /// 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); } }