导出pdf功能
PDF是我们极其常用的文件格式,但对如何生成PDF,个人一直觉得很神秘,其实利用一些公开的PDF库,我们就可以直接生成PDF文件,而不用关注PDF文件的内部细节。我知道的PDF库有如CARIO和HARU。
HARU是一款免费的,跨平台的,开源的生成PDF的库。支持嵌入PNG、JPEG图片,支持CJK字体编码。用C语言编写,因此可以在C/C++中调用。HARU也提供了Ruby,Delphhi,和C#的捆绑(binding)。项目主页见http://libharu.sourceforge.net/index.html
对于HARU这个开源的PDF库,我们没必要深究具体代码的实现, 只需要使用它提供的接口: 如何创建一个PDF, 设置PDF宽高,保存PDF等就可以了。
下面通过一个例子:使用HARU开源库,实现把图片转为pdf功能。
程序运行界面:点击导出pdf,将会把图片转为pdf。

具体导出PDF响应函数过程如下:
void CPdfDlg::OnBtnExportPdf()
{
// TODO: Add your control notification handler code here //生成的pdf名称
CString strDlgPathName = "E:\\123.pdf"; //需要转换的图片
CString strImage = "E:\\002.jpg"; //临时生成的图片
CString strImageTemp = "E:\\000.jpg"; //新建PDF文档,error_handler为错误响应函数
HPDF_Doc pExportPdf = HPDF_New (error_handler, NULL); if (NULL == pExportPdf)
return; CxImage xImage; //E:\\002.jpg图片格式为3,可以用其它函数获取不同类型图片的格式ID
int nType = ;
xImage.Load(strImage,nType); //临时生成jpg图片
xImage.Save(strImageTemp,CXIMAGE_FORMAT_JPG); HPDF_Page page = HPDF_AddPage (pExportPdf);
double imageH = xImage.GetHeight();
double imageW = xImage.GetWidth();
HPDF_Image jpgImage = HPDF_LoadJpegImageFromFile (pExportPdf, strImageTemp);
HPDF_Page_SetWidth (page, HPDF_Image_GetWidth (jpgImage));
HPDF_Page_SetHeight (page, HPDF_Image_GetHeight(jpgImage));
HPDF_Page_DrawImage (page, jpgImage, , ,HPDF_Image_GetWidth (jpgImage),HPDF_Image_GetHeight (jpgImage)); //删除临时生成的图片
DeleteFile(strImageTemp); //保存pdf
HPDF_SaveToFile (pExportPdf,strDlgPathName); if (NULL != pExportPdf)
{
HPDF_Free (pExportPdf);
}
}
在使用HPDF_New (error_handler, NULL)这个函数新建一个PDF时,需要指定错误响应函数,也就是创建失败后会执行的函数。
这个错误处理函数函数原型为:
( HPDF_STDCALL * HPDF_Error_Handler )(HPDF_STATUS error_no, HPDF_STATUS detail_no, void *user_data);
我们可以返照这个函数原型,写出一个错误响应函数:
1 //PDF错误处理回调
void __cdecl CPdfDlg::error_handler(HPDF_STATUS error_no,HPDF_STATUS detail_no,void *user_data)
{
//在此可以抛出异常
}
导出pdf功能的更多相关文章
- java导出pdf功能记录
这几天已在做处理导出pdf文件的功能,摸索了几天总算可以了.记录下这几天遇到的问题. 1.网上基本都是基于Itext5和Itext7来处理的.我最终是在Itext5上成功了,itext7应该是模板出问 ...
- ASP.NET C#根据HTML页面导出PDF
在启明星采购系统里,新增了导出PDF功能.整个功能使用了第三方软件 wkhtmltopdf(下载) 官网 https://wkhtmltopdf.org/ 提供有更多版本下载 他可以把HTML页面转换 ...
- Vue框架下实现导入导出Excel、导出PDF
项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写.编辑和归档,经调研需支持如下功能: Excel报表的导入.导出 PDF文件的导出 打印表格 经过技术选型,项目组一致决定通过 ...
- 个人永久性免费-Excel催化剂功能第50波-批量打印、导出PDF、双面打印功能
在倡导无纸化办公的今天,是否打印是一个碍眼的功能呢,某些时候的确是,但对于数据的留存,在现在鼓吹区块链技术的今天,仍然不失它的核心价值,数据报表.单据打印出来留存,仍然是一种不可或缺的数据存档和防篡改 ...
- React项目实现导出PDF的功能
在做web项目中,有时候会遇到pdf导出的需求,现根据之前在公司的React项目中遇到的导出PDF需求,整理一个demo出来. 导出PDF需要用到两个依赖包:html2canvas.jspdf 1.安 ...
- JS导出PDF插件(支持中文、图片使用路径)
在WEB上想做一个导出PDF的功能,发现jsPDF比较多人推荐,遗憾的是不支持中文,最后找到pdfmake,很好地解决了此问题.它的效果可以先到http://pdfmake.org/playgroun ...
- iText导出pdf、word、图片
一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...
- Itext导出PDF,word,图片案例
iText导出pdf.word.图片 一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生 ...
- FusionChart 导出图片 功能实现(转载)
FusionChart 导出图片 功能实现(转载) http://www.cnblogs.com/jiagoushi/archive/2013/02/05/2893468.html 题目:精美Fusi ...
随机推荐
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(11)- KBOOT特性(ROM API)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之ROM API特性. KBOOT的ROM API特性主要存在于ROM Bootloader ...
- 关于跨DB增量(增、改)同步两张表的数据小技巧
有些场景下,需要隔离不同的DB,彼此DB之间不能互相访问,但实际的业务场景又需要从A DB访问B DB的情形,这时怎么办?我认为有如下常规的三种方案: 1.双方提供RESET API,需要访问不同DB ...
- #12 Python函数
前言 矩形的面积 S = ab,只要知道任一矩形的的长和宽,就可以带入上式求得面积.这样有什么好处呢?一个公式,适用于全部矩形,一个公式,重复利用,减少了大脑的记忆负担.像这类用变量代替不变量的思想在 ...
- nginx错误界面优化和日志管理
nginx错误界面优化 在进行web访问的时候,经常会遇到网站打不开报错的情况,nginx默认的界面并不美观,我们可以通过重定向到自定义的错误页面,提升用户体验,比如淘宝的错误页面还有商品信息和广告. ...
- [T-SQL] NCL INDEX 欄位選擇效能影響-解析
因為這篇文章寫的比較長一些,我就將總結先列出來 總結 1. 除了WHERE條件外,JOINColumn除了記得建立索引,也要注意到選擇性的高低,如果真的找不到可用的Column,可以考慮在兩邊關聯的表 ...
- SD详解-销售过程
http://www.sapzh.com/html/Financial/SD/3113.html 7 销售过程 7.1销售执行 目的 作用与目的描述 步骤 操作过程/步骤描述 备 ...
- 查看系统cpu性能top和多核cpu使用性能
1.使用top查看系统当前负载情况. 在显示过程 按P会按照cpu使用率排序,按M会按照内存占用率排序. 2.多核CPU上,每个核的使用率,使用 mpstat mpstat -P ALL 1 10 - ...
- iOS----------viewcontroller中的dealloc方法不调用
ios的viewcontroller生命周期是 init -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppe ...
- JMeter 内置日期(时间)函数总结
JMeter 内置日期(时间)函数总结 by:授客 QQ:1033553122 1. 测试环境 apache-jmeter-3.3 下载地址: http://jmeter.apache.org/c ...
- 【笔记】两个根因分析方法:5WHY&10WHY
什么是问题根因分析 根本原因分析(root cause analysis):通过调查和分析问题哪里出错.为什么出错,寻求防止差错事故再次发生的必要措施,从而提高服务安全和质量. 根因分析目标 问题(发 ...