概述

  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图片的更多相关文章

  1. ITextSharp导出PDF表格和图片(C#)

    文章主要介绍使用ITextSharp导出PDF表格和图片的简单操作说明,以下为ITextSharp.dll下载链接 分享链接:http://pan.baidu.com/s/1nuc6glj 密码:3g ...

  2. C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)

    原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常 ...

  3. 【译】在Asp.Net中操作PDF – iTextSharp - 操作图片

    原文 [译]在Asp.Net中操作PDF – iTextSharp - 操作图片 作为我的iTextSharp系列的文章的第七篇,开始探索使用iTextSharp在PDF中操作图片,理解本篇文章需要看 ...

  4. 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】

    iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

  5. php 将pdf转成图片且将图片拼接

    说明: 1.pdf转图片通过安装php扩展imagick实现. 2.由于windows扩展安装的一系列问题,建议在linux环境开发,windows大伙可以尝试安装. 3.为Centos 安装Imag ...

  6. C#技术分享【PDF转换成图片——11种方案】

    1.[iTextSharp.dll],C# 开源PDF处理工具,可以任意操作PDF,并可以提取PDF中的文字和图片,但不能直接将PDF转换成图片. DLL和源码 下载地址:http://downloa ...

  7. JavaWeb项目生成PDF文件添加水印图片并导出

    一.前言 首先需要在Maven中添加相应的jar包依赖,若项目没用到Maven,也可自行下载相应所需的jar包(itextpdf.jar 与 itext-asian.jar),如下图所示.点此下载 M ...

  8. 采用 ITextPDF 类库测试向 PDF 中加入图片的示例

    package com.smbea.image; import com.artup.util.image.ImageUtil; import com.itextpdf.text.*; import c ...

  9. 对pdf中的图片进行自动识别

    对pdf中的图片进行自动识别 商务合作,科技咨询,版权转让:向日葵,135—4855__4328,xiexiaokui#qq.com 原理:增强扫描 效果:自动识别所有图片中的文字,可以选择.复制,进 ...

  10. Java PDF转换成图片并输出给前台展示

    首先需要导入所需工具类 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fo ...

随机推荐

  1. Spring Boot (十):邮件服务

    Spring Boot 仍然在狂速发展,才几个多月没有关注,现在看官网已经到 2.1.0.RELEASE 版本了.准备慢慢在写写 Spring Boot 相关的文章,本篇文章使用 Spring Boo ...

  2. 第42章 发现(discovery) - Identity Server 4 中文文档(v1.0.0)

    可以在*https://baseaddress/.well-known/openid-configuration*找到发现文档.它包含有关IdentityServer的端点,密钥材料和功能的信息. 默 ...

  3. 第22章 使用外部身份提供商登录 - Identity Server 4 中文文档(v1.0.0)

    ASP.NET Core有一种灵活的方式来处理外部身份验证.这涉及几个步骤. 注意 如果您使用的是ASP.NET Identity,则会隐藏许多基础技术细节.建议您还阅读Microsoft 文档并执行 ...

  4. [PHP] 简单多进程并发

    企邮搬家进程管理逻辑,经过简化后的功能实现 <?php //守护进程 umask(0); //把文件掩码清0 if (pcntl_fork() != 0){ //是父进程,父进程退出 exit( ...

  5. 【Java】List遍历时删除元素的正确方式

    当要删除ArrayList里面的某个元素,一不注意就容易出bug.今天就给大家说一下在ArrayList循环遍历并删除元素的问题.首先请看下面的例子: import java.util.ArrayLi ...

  6. Java 重建二叉树 根据前序中序重建二叉树

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...

  7. apply,call和bind的用法区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 如何解决Dynamics 365的错误:用户身份验证无效,MSIS0006

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复246或者20170312可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  9. [python爬虫]Requests-BeautifulSoup-Re库方案--robots协议与Requests库实战

    [根据北京理工大学嵩天老师“Python网络爬虫与信息提取”慕课课程编写 慕课链接:https://www.icourse163.org/learn/BIT-1001870001?tid=100223 ...

  10. 当我们按下电源键,Android 究竟做了些什么?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由goo发表于云+社区专栏 相信我们对Android系统都不陌生,而Android系统博大精深,被各种各样的智能设备承载的同时,我们会否 ...