C# PDF转Image图片
概述
PDF是常用的文件格式之一,通常情况下,我们可以使用itextsharp生产PDF文件;可是如何将PDF文件转换成图片那?目前常用的:
思路1、根据PDF绘画轨迹重新绘制图片;
思路2、是将PDF文件解析成二进制,直接将二级制转换成图片;借助这2种思路,我在网上和同事的帮助下找到了2个DLL文件(第三方);
思路1:
使用第三方DLL:O2S.Components.PDFRender4NET DLL下载
编写代码部分:
public enum Definition
{
One = , Two = , Three = , Four = , Five = , Six = , Seven = , Eight = , Nine = , Ten =
}
public class PDFTranImgHelp
{
/// <summary>
/// 将PDF文档转换为图片的方法
/// </summary>
/// <param name="pdfInputPath">PDF文件路径</param>
/// <param name="imageOutputPath">图片输出路径</param>
/// <param name="imageName">生成图片的名字</param>
/// <param name="startPageNum">从PDF文档的第几页开始转换</param>
/// <param name="endPageNum">从PDF文档的第几页开始停止转换</param>
/// <param name="imageFormat">设置所需图片格式</param>
/// <param name="definition">设置图片的清晰度,数字越大越清晰</param>
public static void ConvertPDF2Image(string pdfInputPath, string imageOutputPath,
string imageName, int startPageNum, int endPageNum, ImageFormat imageFormat, Definition definition)
{
PDFFile pdfFile = PDFFile.Open(pdfInputPath);
if (!Directory.Exists(imageOutputPath))
{
Directory.CreateDirectory(imageOutputPath);
}
// validate pageNum
if (startPageNum <= )
{
startPageNum = ;
}
if (endPageNum > pdfFile.PageCount)
{
endPageNum = pdfFile.PageCount;
}
if (startPageNum > endPageNum)
{
int tempPageNum = startPageNum;
startPageNum = endPageNum;
endPageNum = startPageNum;
}
// start to convert each page
for (int i = startPageNum; i <= endPageNum; i++)
{
Bitmap pageImage = pdfFile.GetPageImage(i - , * (int)definition);
pageImage.Save(imageOutputPath + imageName + i.ToString() + "." + imageFormat.ToString(), imageFormat);
pageImage.Dispose();
}
pdfFile.Dispose();
}
}
调用部分:
PDFTranImgHelp.ConvertPDF2Image("F:\\204834.pdf", "F:\\", "NImage", , , ImageFormat.Png, Definition.Five);
不足:
如果预解析的原PDF文件中,含有png透明的图片,使用该方式解析失败!
思路二:
使用的第三方类库是:Magick.NET-Q16-AnyCPU.dll DLL下载(包括Lib下的文件)
编写部分代码:
public class PDFTranImg
{
public static byte[] ConvertPDF2Image(byte[] PDFbytes,string ImgPath)
{ try
{
//设置dll文件的目录
string DLLLibPath = AppDomain.CurrentDomain.BaseDirectory;
string dlllib = DLLLibPath + "lib";
MagickNET.SetGhostscriptDirectory(dlllib);
MagickReadSettings setting = new MagickReadSettings();
// Settings the density to 300 dpi will create an image with a better quality
setting.Density = new Density();
using (MagickImageCollection images = new MagickImageCollection())
{
// 读取二进制数组中的文件
images.Read(PDFbytes, setting);
using (MagickImage vertical = images.AppendVertically())
{
vertical.Write(ImgPath);
byte[] ReusltByte = File.ReadAllBytes(ImgPath);
return ReusltByte;
}
}
}
catch (Exception ex)
{
return null;
}
finally {
File.Delete(ImgPath);
} }
}
调用部分代码:
public FileContentResult EPDFCodePic(string InvoiceCodeNumber)
{ string[] InvoiceCodeNumber1 = PDFUnEncode(InvoiceCodeNumber);
string ResultPDF64 = LoadPDFImportTemplate(InvoiceCodeNumber1[], InvoiceCodeNumber1[], InvoiceCodeNumber1[], InvoiceCodeNumber1[]);
byte[] PDFBytes = Convert.FromBase64String(ResultPDF64);
string PDFTempFilePath = System.Web.HttpContext.Current.Server.MapPath("Temp");
string sPath = PDFTempFilePath + "\\" + DateTime.Now.ToString("yyyyMM");
if (!Directory.Exists(sPath))
{
Directory.CreateDirectory(sPath);
}
string SaveAsFileImagePath = sPath + "\\" + InvoiceCodeNumber1[]+InvoiceCodeNumber1[] + ".gif";
byte[] ResutlBytes= PDFTranImg.ConvertPDF2Image(PDFBytes,SaveAsFileImagePath);
return File(ResutlBytes, @"image/gif");
}
不足:
使用该方式只能将PDF解析成gif格式的图片;
C# PDF转Image图片的更多相关文章
- ITextSharp导出PDF表格和图片(C#)
文章主要介绍使用ITextSharp导出PDF表格和图片的简单操作说明,以下为ITextSharp.dll下载链接 分享链接:http://pan.baidu.com/s/1nuc6glj 密码:3g ...
- C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)
原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常 ...
- 【译】在Asp.Net中操作PDF – iTextSharp - 操作图片
原文 [译]在Asp.Net中操作PDF – iTextSharp - 操作图片 作为我的iTextSharp系列的文章的第七篇,开始探索使用iTextSharp在PDF中操作图片,理解本篇文章需要看 ...
- 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- php 将pdf转成图片且将图片拼接
说明: 1.pdf转图片通过安装php扩展imagick实现. 2.由于windows扩展安装的一系列问题,建议在linux环境开发,windows大伙可以尝试安装. 3.为Centos 安装Imag ...
- C#技术分享【PDF转换成图片——11种方案】
1.[iTextSharp.dll],C# 开源PDF处理工具,可以任意操作PDF,并可以提取PDF中的文字和图片,但不能直接将PDF转换成图片. DLL和源码 下载地址:http://downloa ...
- JavaWeb项目生成PDF文件添加水印图片并导出
一.前言 首先需要在Maven中添加相应的jar包依赖,若项目没用到Maven,也可自行下载相应所需的jar包(itextpdf.jar 与 itext-asian.jar),如下图所示.点此下载 M ...
- 采用 ITextPDF 类库测试向 PDF 中加入图片的示例
package com.smbea.image; import com.artup.util.image.ImageUtil; import com.itextpdf.text.*; import c ...
- 对pdf中的图片进行自动识别
对pdf中的图片进行自动识别 商务合作,科技咨询,版权转让:向日葵,135—4855__4328,xiexiaokui#qq.com 原理:增强扫描 效果:自动识别所有图片中的文字,可以选择.复制,进 ...
- Java PDF转换成图片并输出给前台展示
首先需要导入所需工具类 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fo ...
随机推荐
- Spring Boot (十):邮件服务
Spring Boot 仍然在狂速发展,才几个多月没有关注,现在看官网已经到 2.1.0.RELEASE 版本了.准备慢慢在写写 Spring Boot 相关的文章,本篇文章使用 Spring Boo ...
- 第42章 发现(discovery) - Identity Server 4 中文文档(v1.0.0)
可以在*https://baseaddress/.well-known/openid-configuration*找到发现文档.它包含有关IdentityServer的端点,密钥材料和功能的信息. 默 ...
- 第22章 使用外部身份提供商登录 - Identity Server 4 中文文档(v1.0.0)
ASP.NET Core有一种灵活的方式来处理外部身份验证.这涉及几个步骤. 注意 如果您使用的是ASP.NET Identity,则会隐藏许多基础技术细节.建议您还阅读Microsoft 文档并执行 ...
- [PHP] 简单多进程并发
企邮搬家进程管理逻辑,经过简化后的功能实现 <?php //守护进程 umask(0); //把文件掩码清0 if (pcntl_fork() != 0){ //是父进程,父进程退出 exit( ...
- 【Java】List遍历时删除元素的正确方式
当要删除ArrayList里面的某个元素,一不注意就容易出bug.今天就给大家说一下在ArrayList循环遍历并删除元素的问题.首先请看下面的例子: import java.util.ArrayLi ...
- Java 重建二叉树 根据前序中序重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...
- apply,call和bind的用法区别
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 如何解决Dynamics 365的错误:用户身份验证无效,MSIS0006
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复246或者20170312可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- [python爬虫]Requests-BeautifulSoup-Re库方案--robots协议与Requests库实战
[根据北京理工大学嵩天老师“Python网络爬虫与信息提取”慕课课程编写 慕课链接:https://www.icourse163.org/learn/BIT-1001870001?tid=100223 ...
- 当我们按下电源键,Android 究竟做了些什么?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由goo发表于云+社区专栏 相信我们对Android系统都不陌生,而Android系统博大精深,被各种各样的智能设备承载的同时,我们会否 ...