在 .NET 下使用 Pdfium 渲染和打印 PDF

大家可能已经看到这条 新闻,Google最近又新推出一个开源项目,名叫 PDFium,将成为Chrome浏览器的PDF渲染引擎组件。与已有的开源PDF引擎如Firefox目前的PDF解决方案PDF.js以及 Poppler相比,PDFium性能要好得多。

本次开源是由Google方面主导的,因为Chrome里的PDF渲染使用的是福昕的专有技术授权,Google方面希望能够开源并提出了很好的条件。福昕从长远考虑,接受了Google的建议。

接下来,福昕仍然会继续投入技术力量支持PDFium的发展。我们已经在PDFium项目网站上看到Bo Xu等三名福昕工程师在 解决和解答各种问题。

官方的 API 文档:https://developers.foxitsoftware.com/resources/pdf-sdk/c_api_reference_pdfium/index.html

一个 PDF 版本的 Pdfium API 文档:http://cdn01.foxitsoftware.com/pub/foxit/manual/enu/FoxitPDF_SDK20_Guide.pdf

许可协议:Apache 2.0 见:https://pdfium.googlesource.com/pdfium/+/refs/heads/master/LICENSE

来源:https://www.csdn.net/article/2014-06-23/2820351-Why-Foxit-Open-Sourced-Core-PDF-technologies

Pdfium 库

Pdfium 本身是一个 C 语言库,编译之后是一个 DLL。

Google 下载

https://pdfium.googlesource.com/pdfium/

GitHub

https://github.com/chromium/pdfium

下载 Pdfium 二进制预编译库

可以直接使用预编译的库,既可以直接从 NuGet 中导入,也可以自己下载使用。

NuGet

下面这两个比较版本比较老。

https://www.nuget.org/packages/PdfiumViewer.Native.x86_64.no_v8-no_xfa/

Native 64-bit PDFium DLL without V8 or XFA support for usage with the PdfiumViewer project.

2018.4.8.256

https://www.nuget.org/packages/PdfiumViewer.Native.x86.no_v8-no_xfa/

Native 32-bit PDFium DLL without V8 or XFA support for usage with the PdfiumViewer project.

2018.4.8.256

GitHub

这个比较新

GitHub: https://github.com/bblanchon/pdfium-binaries

PdfiumViewer

由于 Pdfium 本身并不是 .NET 库,在 .NET 中使用时,需要进行适配,PdfiumViewer 对它进行了适配工作,可以使我们很方便地在 .NET 项目中使用它。

Introduction

PdfiumViewer is a PDF viewer based on the PDFium project.

  • PdfiumViewer provides a number of components to work with PDF files:
  • PdfDocument is the base class used to render PDF documents;
  • PdfRenderer is a WinForms control that can render a PdfDocument;

PdfiumViewer 提供了一个 WinForms 控件,通过 PdfRenderer 控件进行渲染,提供了工具栏,可以支持保存到 PDF 文件或者打印到打印机。

PdfiumViewer is a WinForms control that hosts a PdfRenderer control and adds a toolbar to save the PDF file or print it.

项目:https://github.com/pvginkel/PdfiumViewer

NuGet: https://www.nuget.org/packages/PdfiumViewer/

参考

在 .NET 下使用 Pdfium 渲染和打印 PDF的更多相关文章

  1. PDFium 渲染

    PDFium 是 Chromium 的 PDF 渲染引擎,许可协议为 BSD 3-Clause.不同于 Mozilla 基于 HTML5 的 PDF.js,PDFium 是基于 Foxit Softw ...

  2. word文档的生成、修改、渲染、打印,使用Aspose.Words

    无需MS Word也可执行各种文档处理任务,包括文档的生成.修改.渲染.打印,文档格式转换和邮件合并等文档处理.

  3. -XX:-PrintClassHistogram 按下Ctrl+Break后,打印类的信息

    -XX:+PrintClassHistogram –按下Ctrl+Break后,打印类的信息: num     #instances         #bytes  class name ------ ...

  4. EOS下控制台以及图形界面打印sql语句

    EOS下控制台以及图形界面打印sql语句 场景需求:在eos中打印sql语句,包括数据实体,查询实体和命名sql的sql语句. 所需资源: P6spy:负责拦截sql,并打印. Sqlprofiler ...

  5. Layui下拉选渲染

    下拉选渲染有很多方式,这个比较简单,记录一下: HTML代码如下: <div class="layui-input-inline"> <input type=&q ...

  6. javaWeb项目springMVC框架下利用ITextpdf 工具打印PDF文件的方法(打印表单、插入图片)

    方法一:打印PDF表单以及在PDF中加入图片 需要的资料: jar包:iTextAsian.jar ,itext-2.1.7.jar: 源码: public static void main(Stri ...

  7. C# 打印PDF文件之使用不同打印机打印所有页面或部分页面

    C# 打印PDF文件之使用不同打印机打印所有页面或部分页面 最近在逛国外各大编程社区论坛的时候,发现很多人都在问一个关于PDF文件打印的问题:打印时如何选择非默认打印机并设置打印页面的范围.而一般情况 ...

  8. Winform 打印PDF顺序混乱,获取打印队列

    工作中PDF打印顺序混乱着实让我疼痛了好久,其实决绝方法非常简单,但没有想到这个点子的时候确实让我走了很多弯路 这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方 ...

  9. 关于这两天研究Java打印pdf方法的记录

    这两天在研究Java调用打印机打印PDF文件的方法,学到了不少东西,特别来记录一下. 关于Java打印网上最多的而且也是Java正统的打印方法就是使用PrintService,一套比較标准的打印代码例 ...

  10. PDFBox创建并打印PDF文件, 以及缩放问题的处理.

    PDFBox带了一些很方便的API, 可以直接创建 读取 编辑 打印PDF文件. 创建PDF文件 public static byte[] createHelloPDF() { ByteArrayOu ...

随机推荐

  1. auto` 作为返回值类型的一些限制

    在 C++ 中,auto 作为返回值类型有一些限制,这与类型推导的方式和时机有关. 虽然在很多场景下 auto 可以简化代码,但它不能直接用于函数返回类型,这是因为在编译时类型推导的机制不同于局部变量 ...

  2. vue 赶鸭子上架入门笔记(一) 安装开发环境

    准备接手一个 vue 的前端项目,从零开始学习 vue.目标不高大上,能看得懂代码,能进行简单的修改,改完能打包和部署. 首先解决 vue 开发环境的准备.访问 Node.js 官方网站,下载适合你操 ...

  3. CentOS7 控制台上安装运行 vmware workstation 备忘录

    目标平台 CentOS 7.5.1804 无桌面,要跑个 Ubuntu.vmx 1.安装依赖库 yum -y install perl gcc kernel-devel libX11 libXiner ...

  4. android系统启动流程- ServiceManager进程启动流程

    *注:基于Android11源码 ServiceManager进程是在init进程创建的,所以我们从init进程的main()开始分析: // 文件路径: system/core/init/main. ...

  5. 08-react修改state数据驱动视图UI的更新【注意和vue的区别】

    // setState 修改状态 如果是直接修改页面不会改变 使用 setState 修改数据 才会驱动视图的改变 // setState 的原理:修改玩状态之后会调用 render 函数 impor ...

  6. 017 Python 流程控制之 if 判断

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  7. Android复习(二)应用资源——>样式

    样式资源定义界面的格式和外观.样式可应用于单个 View(从布局文件中)或应用于整个 Activity 或应用(从清单文件中). 如需详细了解如何创建和应用样式,请参阅样式和主题. 注意:样式是使用  ...

  8. Gitlab私有存储库支持SourceLink 调试之使用proxy方式

    前情概要 在 让你发布的nuget包支持源代码调试#为gitlab的私有源代码项目提供支持 小节中有介绍到如何让gitlab的私有存储库支持SourceLink. 其中有一个方法是说在vs中打开web ...

  9. KubeSphere 社区双周报 | OpenFunction v0.8.0 发布 | 2022-12-09

    KubeSphere 从诞生的第一天起便秉持着开源.开放的理念,并且以社区的方式成长,如今 KubeSphere 已经成为全球最受欢迎的开源容器平台之一.这些都离不开社区小伙伴的共同努力,你们为 Ku ...

  10. 鸿蒙Flutter实战:01-搭建开发环境

    鸿蒙Flutter实战:01-搭建开发环境 准备工作 1.安装 DevEco Studio NEXT IDE, 注意版本应该是 Next,当前最新的是 Beta3 2.安装Git, 如果要同时适配安卓 ...