PDF矢量图形转像素版本
2020-05-22 本文已影响0人
yumxuanyi
@版权声明:本文为版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出,
本文链接https://www.jianshu.com/p/e7c221b45864
如有问题, 可邮件(yumxuanyi@qq.com)咨询。
关键字:PDF转图片、itextSharp、O2S.Components.PDFRender4NET.dll
- 第一步:将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;
}
-
第二步 : 创建新的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();
}
}
}
}