O2S.Components.PDFRender4NET.질문

12665 단어 component
인터넷의 2.0.1.0 해독판을 사용할 때 알 수 없는 오류가 발생할 수 있다. 대부분의pdf가 그림으로 바뀌는 것은 Ok이지만 일부는 공백이다. 왜냐하면 나는 여기에 대량의 pdf가 그림으로 바뀌어야 하기 때문에 오류가 발생하는 것을 허락하지 않는다.
 
나중에 실험을 통해 이 버전에 버그가 존재하는 것을 발견하였다.그래서 더 높은 버전으로 업그레이드할 수밖에 없어요.저는 지금 4.0, 2, 0 쓰고 있어요.
이 버전은 워터프린트가 존재하고 l로 전환됩니다. 수정된 후에 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 }

좋은 웹페이지 즐겨찾기