C# PDF转Image图片

概述

  PDF是常用的文件格式之一,通常情况下,我们可以使用itextsharp生产PDF文件;可是如何将PDF文件转换成图片那?目前常用的:思路1、根据PDF绘画轨迹重新绘制图片;思路2、是将PDF文件解析成二进制,直接将二级制转换成图片;借助这2种思路,我在网上和同事的帮助下找到了2个DLL文件(第三方);

思路1:

  使用第三方DLL:O2S.Components.PDFRender4NET         DLL下载

  编写代码部分:

public enum Definition
    {
        One = 1, Two = 2, Three = 3, Four = 4, Five = 5, Six = 6, Seven = 7, Eight = 8, Nine = 9, Ten = 10
    }
    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 <= 0)
            {
                startPageNum = 1;
            }
            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 - 1, 56 * (int)definition);
                pageImage.Save(imageOutputPath + imageName + i.ToString() + "." + imageFormat.ToString(), imageFormat);
                pageImage.Dispose();
            }
            pdfFile.Dispose();
        }
    }

调用部分:

PDFTranImgHelp.ConvertPDF2Image("F:\\204834.pdf", "F:\\", "NImage", 1, 1, 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(100);
                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[0], InvoiceCodeNumber1[1], InvoiceCodeNumber1[2], InvoiceCodeNumber1[3]);
            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[0]+InvoiceCodeNumber1[1] + ".gif";
            byte[] ResutlBytes= PDFTranImg.ConvertPDF2Image(PDFBytes,SaveAsFileImagePath);
            return File(ResutlBytes, @"image/gif");
        }

不足:

  使用该方式只能将PDF解析成gif格式的图片;

时间: 2024-08-06 09:59:01

C# PDF转Image图片的相关文章

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

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

20140526-一个从pdf转换成图片的类,工作当中有用到

20140526-一个从pdf转换成图片的类,工作当中有用到 package com.jako.database.model; import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import

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

iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转化为PDF文件. iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了. 1.包的引用 1 import java.io.FileNotFoundException; 2 import java.i

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

原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常用的方法写在第一条,如果不满足您的需要,您可以继续往后看. 如果看完全文还是不能解决您的问题,欢迎加撸主的QQ群(274281457)进行讨论. 木有csdn分的童鞋,可以去github clone,地址:https://github.com/stone0090/OfficeTools.Pdf2Im

迅捷pdf转换器——如何提取pdf中的图片

对于PDF文件的转换,我们最常遇到的情况是把PDF文件转换成Word格式的情况,不过在一些特殊的情况下,我们也会遇到一些特殊的转换工作,比如将pdf转换成jpg格式的文件就比较少见.PDF转换成图片,转换出来的就是一张张的图片,像是扫描过的PDF文件,文字和图片合并成的文件,单独将图片提取出来,只需要里面的图片要怎么办,最简单的方法:利用迅捷PDF转换器的“PDF图片获取”功能直接提取图片. 迅捷PDF转换器正式为上班一族打造的一款专业软件.软件采用OCR技术,它就像是一台袖珍型扫描仪,帮助用户

pdf里的图片怎么导出来

作为一名美工,经常需要针对各种各样的图片进行加工处理,同时也需要从网上下载一些可用资源.可是当下载的图片素材在pdf文件里时,这时想到的唯一方法就是将pdf里的图片给导出来.今天小猪猪在这里与大家分享一下:pdf里的图片怎么导出来 工具/原料  pdf素材文件 方法/步骤  1.由于pdf是不可编辑的格式,我们需要借助pdf转换技术方可将pdf里的图片给导出来,进入pdf在线转换网站.(http://app.xunjiepdf.com) 2.这里的转换功能比较多,而在众多的转换按钮中,只有“pd

php(thinkphp)在linux系统下pdf转png图片【转】

PHP)中使用imagick实现把PDF转成图片 操作之前,先在linux服务器安装 ghostscript 650 2017-06-17 13:31:20 root cd ./soft 651 2017-06-17 13:31:25 root wget http://ghostscript.com/releases/ghostscript-8.71.tar.gz 652 2017-06-17 13:41:14 root tar zxvf ghostscript-8.71.tar.gz 653

pdf在线转图片格式的方法

对于转换文件格式,大多数人都会自己下载并注册一个转换工具来完成,这对于经常转换文件的人来说没什么,反正都得用,但是不经常转换文件的朋友专门去下载并注册一个转换工具就没必要了.今天就跟大家分享可以在线转换的方法,虽然有文件大小限制,但是一般是够用的.下面以在线pdf转换成图片举例说明. 在线转换无非就是要用到浏览器,所以电脑中必须装有浏览器,随便哪个都行: 然后打开浏览器,百度输入在线pdf转换器,找到在线转换平台进入: 进入转换平台之后可以看到,虽然是在线转换平台,但是功能非常全: 第一步先单击

新版在线PDF转JPG图片转换器

每次我们遇到一个pdf文件时,我们经常因为不能方便复制其中的内容而烦躁.看到别人的pdf文件自己 也想制作,但却因不得法而郁闷. 平时,在图片和很多PDF文件里的文字是无法复制的,但有时候我们必须得将里面的文本转换成word文档 格式,怎么去做呢?其实不难,首先你要保证图片和PDF里面的文字足够清晰,然后利用OCR即可识别出 图片或者PDF中的文本,然后直接导出成word文档格式即可. PDF的优点在于这种格式的电子读物美观.便于存取.安全性很高,具有纸版书的质感和阅读效果,可以 "逼真地&qu

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

1.[iTextSharp.dll],C# 开源PDF处理工具,可以任意操作PDF,并可以提取PDF中的文字和图片,但不能直接将PDF转换成图片. DLL和源码 下载地址:http://download.csdn.net/detail/shi0090/4065982 中文帮助文档 下载地址:http://download.csdn.net/detail/shi0090/4065986 提取文字测试工程 下载地址:http://download.csdn.net/detail/shi0090/40