pdf頁面轉成圖片

使用了開源組件PdfiumViewer,本人寫了很多關於pdf操作的文章,幾乎都是以來第三方開源的組件

        private void RenderPages(string pdfPath, string outputfiledir, int startNumber, int endNumber, int dpi = 300)
        {

            try
            {
                using (var document = PdfiumViewer.PdfDocument.Load(pdfPath))
                {
                    var pagesNumber = document.PageCount;
                    if (startNumber < pagesNumber && endNumber > pagesNumber)
                    {
                        endNumber = pagesNumber;
                    }
                    if (startNumber > pagesNumber || endNumber > pagesNumber)
                    {
                        throw new IndexOutOfRangeException("頁碼超出範圍!");
                    }
                    var pagesizes = document.PageSizes;
                    for (int i = startNumber; i <= endNumber; i++)
                    {
                        Size size = new Size();
                        size.Height = (int)pagesizes[(i - 1)].Height;
                        size.Width = (int)pagesizes[(i - 1)].Width;

                        var filename = Path.GetFileNameWithoutExtension(pdfPath) + "_" + i + ".jpg";
                        var outputfilepathtemp = Path.Combine(outputfiledir, filename);

                        using (var stream = new FileStream(outputfilepathtemp, FileMode.Create))
                        using (var image = GetPageImage(i, size, document, dpi))
                        {
                            image.Save(stream, ImageFormat.Jpeg);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private System.Drawing.Image GetPageImage(int pageNumber, Size size, PdfiumViewer.PdfDocument document, int dpi)
        {
            return document.Render(pageNumber - 1, size.Width, size.Height, dpi, dpi, PdfRenderFlags.Annotations);
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章