将pdf转换为图片,并将图片进行切分

        /// <summary>
        /// 将pdf转换为图片,并且将图片进行切分
        /// </summary>
        /// <param name="pdfInputPath"></param>
        /// <param name="imageFormat"></param>
        void ConvertPDF2Image(string pdfInputPath, ImageFormat imageFormat)
        {
            PDFFile pdfFile = PDFFile.Open(pdfInputPath);
            // start to convert each page
            for (int i = 0; i < pdfFile.PageCount; i++)
            {
                Bitmap pageImage = pdfFile.GetPageImage(i, 100);

                int width = pageImage.Width / 2;
                int height = pageImage.Height;

                Bitmap temp = GetPart(pageImage, 0, 0, width, height, 0, 0);
                temp.Save("images\\" + i.ToString() + "-1." + imageFormat.ToString(), imageFormat);

                int w = width / 2;
                int h = height;
                Bitmap temp1 = GetPart(temp, 0, 0, w+3, h, 0, 0);
                temp1.Save("images\\" + i.ToString() + "-1-1." + imageFormat.ToString(), imageFormat);

                temp = GetPart(temp, 0, 0, w - 3, h, w, 0);
                temp.Save("images\\" + i.ToString() + "-1-2." + imageFormat.ToString(), imageFormat);

                temp = GetPart(pageImage, 0, 0, width, height, width, 0);
                temp.Save("images\\" + i.ToString() + "-2." + imageFormat.ToString(), imageFormat);

                Bitmap temp2 = GetPart(temp, 0, 0, w + 3, h, 0, 0);
                temp2.Save("images\\" + i.ToString() + "-2-1." + imageFormat.ToString(), imageFormat);

                temp = GetPart(temp, 0, 0, w - 3, h, w, 0);
                temp.Save("images\\" + i.ToString() + "-2-2." + imageFormat.ToString(), imageFormat);

                pageImage.Dispose();
            }
            pdfFile.Dispose();
        }

        /// </summary>
        /// <param name="pPartStartPointX">目标图片开始绘制处的坐标X值(通常为0)</param>
        /// <param name="pPartStartPointY">目标图片开始绘制处的坐标Y值(通常为0)</param>
        /// <param name="pPartWidth">目标图片的宽度</param>
        /// <param name="pPartHeight">目标图片的高度</param>
        /// <param name="pOrigStartPointX">原始图片开始截取处的坐标X值</param>
        /// <param name="pOrigStartPointY">原始图片开始截取处的坐标Y值</param>
        Bitmap GetPart(Image originalImg, int pPartStartPointX, int pPartStartPointY, int pPartWidth, int pPartHeight, int pOrigStartPointX, int pOrigStartPointY)
        {
            System.Drawing.Bitmap partImg = new System.Drawing.Bitmap(pPartWidth, pPartHeight);
            System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(partImg);
            System.Drawing.Rectangle destRect = new System.Drawing.Rectangle(new System.Drawing.Point(pPartStartPointX, pPartStartPointY), new System.Drawing.Size(pPartWidth, pPartHeight));
            System.Drawing.Rectangle origRect = new System.Drawing.Rectangle(new System.Drawing.Point(pOrigStartPointX, pOrigStartPointY), new System.Drawing.Size(pPartWidth, pPartHeight));
            graphics.DrawImage(originalImg, destRect, origRect, System.Drawing.GraphicsUnit.Pixel);
            return partImg;
        }
        //调用
ConvertPDF2Image("abcd.pdf", ImageFormat.Png);


 

上一篇:Android绘图视图非常慢


下一篇:C# 选择排序,冒泡排序,快速排序之效率比对