将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);