zoukankan      html  css  js  c++  java
  • 将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 网络加载动态库 .so
    利用input新类型,解决移动端原生实现日期时间联动问题,精确到分
    简单对React入个门-个人总结
    三种方式创建Angular的自定义服务
    Angular的自定义指令-个人总结
    利用Angular的自定义过滤器功能实现单词的首字母大写
    简单小例子带你明白Angular的MVVM思想
    Angular基础引导(1)
    JavaScript简单拖拽事件(鼠标跟随事件)
    简单数组去重
  • 原文地址:https://www.cnblogs.com/hsliuyl/p/10820444.html
Copyright © 2011-2022 走看看