最近恰好遇到了一个需求,需要将存储发票信息的pdf文件,转换成为图片文件并提供下载。因为pdf的内容是固定的,只有一页,最终在经过了一番百度之后,最终选择使用了Spire.PDF。

引用的dll文件可以通过NuGet进行下载:

这里需要选择下面的 FreeSpire.PDF, 这是免费的,但在创建和加载PDF文档时,文档的内容不能超过10页、转换图片时,仅支持转换前3页。

虽然如此,但也足够满足我当前的需求了。转换的代码大致如下:

using Spire.Pdf;
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;namespace ConsoleApp1
{class Program{/// <summary>/// 将pdf文件转换为图片文件/// </summary>/// <param name="stream">pdf文件流</param>/// <param name="pageIndex">要转换的pdf页索引(从0开始)</param>/// <param name="dpiX">dpi</param>/// <param name="dpiY">dpi</param>/// <param name="mimeType">mime类型</param>/// <returns></returns>public static Stream PdfToImage(Stream stream, int pageIndex = 0, int dpiX = 300, int dpiY = 300, string mimeType = "image/png"){using (PdfDocument document = new PdfDocument()){document.LoadFromStream(stream);// 图片类型选择为BitmapSpire.Pdf.Graphics.PdfImageType pdfImageType = Spire.Pdf.Graphics.PdfImageType.Bitmap;// 将pdf中指定的页码转换为图片对象并返回using (Image image = document.SaveAsImage(pageIndex, pdfImageType, dpiX, dpiY)){// 获取相应的编码器ImageCodecInfo codecInfo = (from item in ImageCodecInfo.GetImageEncoders()where mimeType.Equals(item.MimeType)select item).FirstOrDefault();EncoderParameters encoderParams = new EncoderParameters(1);encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);MemoryStream result = new MemoryStream();image.Save(result, codecInfo, encoderParams);result.Position = 0;return result;}}}static void Main(string[] args){using (Stream stream = PdfToImage(File.Open(@"C:\pdf转图片\ConsoleApp1\lib\1.pdf", FileMode.Open))){using (FileStream fileStream = new FileStream(@"C:\pdf转图片\ConsoleApp1\lib\2.png", FileMode.Create, FileAccess.Write)){stream.CopyTo(fileStream);}}Console.WriteLine("OK");Console.ReadKey();}}
}

C# 利用 Spire.PDF 实现.pdf转图片相关推荐

  1. Java使用Spire.Pdf实现PDF添加图片水印

    通过本文你将学到: Spire.Pdf是什么? 如何在项目中引入Spire.Pdf依赖? 项目中基于Spire.Pdf实现PDF添加图片水印? 一.Spire.Pdf是什么? 1.Spire.Pdf是 ...

  2. 利用 Python 去除 PDF 水印(和图片水印原理一样)

    前言 今天介绍下用 Python 去除 PDF (图片)的水印.思路很简单,代码也很简洁. 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面. 原理 这张图片是前几天整理 ...

  3. PDF管理控件Spire.PDF使用教程:如何创建PDF表格并添加图片到表格

    Spire.PDF是一个专业的PDF组件,能够独立地创建.编写.编辑.操作和阅读PDF文件,支持 .NET.Java.WPF和Silverlight.Spire.PDF的PDF API拥有丰富的功能, ...

  4. 利用iTextSharp组件给PDF文档添加图片水印,文字水印

    最近在做关于PDF文档添加水印的功能,折腾了好久,终于好了.以下做个记录: 首先会用到iTextSharp组件,大家可以去官网下载,同时我也会在本文中附加进来. 代码中添加引用为:   usingSy ...

  5. 利用itext复制pdf模板并插入图片

    java源码 String conName =getContName(map);try {Map beans = new HashMap(1);beans.put("name",c ...

  6. Java去除PDF文件中的图片

    场景:调用第三方的接口取得的PDF文件流中有个不想要的图片,跟第三方接口沟通无果的情况下,自己想办法去掉吧. 解决思路:打算用PDFBox去掉PDF中的图片,但是在代码中resources.getIm ...

  7. 三种方法,用Python轻松提取PDF中的全部图片

    作者 | 陈熹.刘早起 来源 | 早起Python 头图 | 下载于视觉中国 有时我们需要将一份或者多份PDF文件中的图片提取出来,如果采取在线的网站实现的话又担心图片泄漏,手动操作又觉得麻烦,其实用 ...

  8. Java 生成各种 PDF 实战方案(图片、模板、表格)

    刚接到了一个需求,生成一个pdf,一开始以为挺简单的,通过模板生成嘛,我也发过相应的文章,根据模板直接生成pdf,响应到前端或者根据模板生成pdf,直接指定下载位置,这两种方案都可以,不过这篇文章主要 ...

  9. java为word、excel、pdf、ppt、图片添加图片水印(文字水印同理)

    使用idea开发,所需依赖如下: spire的下载.使用,代码中会给出网址.idea中选中右键,添加为库即可使用 <!--使用spire,导入的jar--> <dependency& ...

  10. Java操作Word转PDF(Word转图片)

    1. spire.doc的jar引用 首先我们需要用到国产word处理工具jar包spire.doc,可以通过maven仓库寻找,然后在pom文件中直接引用. 此处需要注意,我们需要使用的是spire ...

最新文章

  1. golang defer 关闭文件 报错file may have nil or other unexpected value as its corresponding error
  2. 计算机主板的工作原理,计算机主板的工作原理.doc
  3. c语言输出参数是out,关于C语言中的输出输入流
  4. Cracked me --1--Acid_burn
  5. php递归面包屑,php实现面包屑导航例子分享,_PHP教程
  6. 用Java实现文本编辑器:创建、浏览、编辑文件;剪贴、复制、粘贴;保存、另存为;字符统计;自动换行
  7. 小程序插入html代码
  8. day11、3 - 思科模拟器介绍
  9. Rational Rose安装教程
  10. 中国个人企业征信体系介绍
  11. python兔子_python 实现兔子生兔子示例
  12. 同你分享1个完整的聚类分析案例
  13. Windows API 关于控件的自绘——文本颜色、背景颜色、字体
  14. 开关电源MOS管选型500V、600V、650V参数
  15. H5 移动端富文本编辑器
  16. 函数柯里化与反柯里化
  17. Oracle第三章练习
  18. word将参考文献序号改为上标
  19. 即时通讯开发时Https的安全性原理
  20. Java实现 LeetCode第30场双周赛 (题号5177,5445,5446,5447)

热门文章

  1. 内边距(padding)
  2. SCOI-2017 游记 SCOI-2017 酱油记 SCOI-2017 没有滚粗资格的记
  3. 分享几个实用的Chrome扩展程序
  4. suse12中pip install xxx报错gcc: error: unrecognized command line option ‘-fstack-clash-protection’
  5. 儿童智能定位鞋方案/案列/APP/小程序/网站
  6. 如何实现数据库的读写分离
  7. 阿里云网关签名特殊字符无法通过
  8. node版本管理工具gnvm
  9. 10000小时和10000次提交
  10. 【DC综合】逻辑综合的实施流程