PDF矢量图形转像素版本

2020-05-22  本文已影响0人  yumxuanyi

@版权声明:本文为版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出,
本文链接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();
              }
           }
        }
   }
上一篇下一篇

猜你喜欢

热点阅读