O2S.Components.PDFRender4NET.dll 圖片空白BUG問題

來源:互聯網
上載者:User

標籤:style   blog   color   io   os   使用   ar   for   檔案   

在用網上的2.0.1.0破解版的時候,會出現莫名的錯誤,大多數pdf轉成圖片都是Ok的,但是有部分轉出來是空白,因為我這裡要涉及大量的pdf轉圖片,不允許出現錯誤。

 

後來經過實驗發現是這個版本存在bug。所以只有升級到更高的版本。我現在用的是4.0.2.0

這個版本會有浮水印存在,  轉成il,修改了之後,dll不能使用了,dll簽名過,所以沒辦法。

 

只有在轉出來的圖片上進行處理,bitmap處理一下就行了,因為浮水印是固定的地方,所以用GDI重新畫圖,去掉浮水印的那一部分就可以了

 1 /// <summary> 2         /// 將PDF文檔轉換為圖片的方法 3         /// </summary> 4         /// <param name="pdfInputPath">PDF檔案路徑</param> 5         /// <param name="imageOutputPath">圖片輸出完整路徑(包括檔案名稱)</param> 6         /// <param name="startPageNum">從PDF文檔的第幾頁開始轉換</param> 7         /// <param name="endPageNum">從PDF文檔的第幾頁開始停止轉換</param> 8         /// <param name="imageFormat">設定所需圖片格式</param> 9         /// <param name="definition">設定圖片的清晰度,數字越大越清晰</param>10         private static void ConvertPdf2Image(string pdfInputPath, string imageOutputPath,11              int startPageNum, int endPageNum, ImageFormat imageFormat, int definition)12         {13             14             PDFFile pdfFile = PDFFile.Open(pdfInputPath);15             16             if (startPageNum <= 0)17             {18                 startPageNum = 1;19             }20 21             if (endPageNum > pdfFile.PageCount)22             {23                 endPageNum = pdfFile.PageCount;24             }25 26             if (startPageNum > endPageNum)27             {28                 int tempPageNum = startPageNum;29                 startPageNum = endPageNum;30                 endPageNum = startPageNum;31             }32 33             var bitMap = new Bitmap[endPageNum];34 35             for (int i = startPageNum; i <= endPageNum; i++)36             {37                 Bitmap pageImage = pdfFile.GetPageImage(i - 1, 56 * definition);
38 Bitmap newPageImage = new Bitmap(pageImage.Width/4 , pageImage.Height/4);39 40 Graphics g = Graphics.FromImage(newPageImage);41 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
           //重新畫圖的時候Y軸減去130,高度也減去130 這樣浮水印就看不到了42 g.DrawImage(pageImage, new Rectangle(0, 0, pageImage.Width/4 , pageImage.Height/4),43 new Rectangle(0, 130, pageImage.Width, pageImage.Height-130), GraphicsUnit.Pixel);44 45 bitMap[i - 1] = newPageImage;46          g.Dispose();47 }48 49 //合并圖片50 var mergerImg = MergerImg(bitMap);51 //儲存圖片52 mergerImg.Save(imageOutputPath, imageFormat);53 pdfFile.Dispose();54 }55 56 /// <summary>57 /// 合并圖片58 /// </summary>59 /// <param name="maps"></param>60 /// <returns></returns>61 private static Bitmap MergerImg(params Bitmap[] maps)62 {63 int i = maps.Length;64 65 if (i == 0)66 throw new Exception("圖片數不能夠為0");67 else if (i == 1)68 return maps[0];69 70 //建立要顯示的圖片對象,根據參數的個數設定寬度71 Bitmap backgroudImg = new Bitmap(maps[0].Width, i * maps[0].Height);72 Graphics g = Graphics.FromImage(backgroudImg);73 //清除畫布,背景設定為白色74 g.Clear(System.Drawing.Color.White);75 for (int j = 0; j < i; j++)76 {77 g.DrawImage(maps[j], 0, j * maps[j].Height, maps[j].Width, maps[j].Height);78 }79 g.Dispose();80 return backgroudImg;81 }

 

O2S.Components.PDFRender4NET.dll 圖片空白BUG問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.