美文网首页
PDF矢量图形转像素版本

PDF矢量图形转像素版本

作者: yumxuanyi | 来源:发表于2020-05-22 16:45 被阅读0次

    @版权声明:本文为版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出,
    本文链接https://www.jianshu.com/p/e7c221b45864
    如有问题, 可邮件(yumxuanyi@qq.com)咨询。


    关键字:PDF转图片、itextSharp、O2S.Components.PDFRender4NET.dll

    1. 第一步:将PDF文件转换为图片流
      O2S.Components.PDFRender4NET.dll
      (第三方DLL,可以实现PDF转图片,官方试用版有红色水印)
      (网上下载的盗版可能会出现转换不了的情况,表现为空白图片,可私聊我)
     /// pdfPath 表示pdf文件的路径
     /// definition 表示像素分辨率。1英寸 = 72(user unit)  
     /// 默认1(user unit) 为 1个像素点。
     ///Definitioin  其实是枚举值表示1 - 10的数字而已 值越大图像越大
     private MemeryStream PrintPDFToTiffStream(string pdfPath, int definition)
    {
        MemoryStream ms = null;
        using(FileStream fs = new FileStream(pdfPath,FileMode.Open,FileAccess.Read,FileShare.None))
        {
                PDFFile pdfFile = PDFFile.Open(fs);
                ms = pdfFile.GetPageImagesAsMultipageTiff(72 * (int)definition);
        }
         return ms;
    }
    
    1. 第二步 : 创建新的PDF文件

      itextsharp.dll (免费的,好使!)

        //注意下面方法是将原PDF覆盖了哦
       public void StartPrint(string pdfFilePath)
       {
           MemoryStream ms =   PrintPDFToTiffStream(pdfFilePath,3);
           if(ms == null)
           {
               return;
           }
           using(Document document = new iTextSharp.text.Docuemnt())
           {
              using(FileStream stream = new FileStream(pdfFilePath,FileMode.Create,FileAccess.Write,FileShare.None))
               {                 
                  document.SetMargins(0,0,0,0);
                  PdfWriter pdfWriter = PdfWriter.GetInstance(docment,stream);
                  document.Open()
                  {
                      RandomAccessFileOrArray ra  = new  RandomAccessFileOrArray(ms.ToArray());
                       for(int i =1;i<= TiffImage.GetNumberOfPages(ra);i++)
                       {
                               iTextSharp.Image image = TiffImage.GetTiffImage(ra,true,i);
                              document.SetPageSize(this.PdfPages[i].PageSize);
                           image.ScaleToFit(document.PageSize);
                           image.Alignment = iTextSharp.text.Image.ALIGN_MIDDLE;
                            document.NewPage();
                            document.Add(image);                     
                       }
                       document.close();
                  }
               }
            }
       }
    

    相关文章

      网友评论

          本文标题:PDF矢量图形转像素版本

          本文链接:https://www.haomeiwen.com/subject/knaqahtx.html