常州网站设计平台,it运维服务商,成都电子商务网站开发,玉环市建设工程检测中心网站背景#xff1a;之前接了一个小单子#xff0c;需求就是将PDF转成.tif图片#xff0c;刚好闲着#xff0c;就搜了许多资料#xff0c;最后选择的是PDFium SDK。 1、首先是打开PDF文件#xff0c;
//chPDF为文件路径
FPDF_DOCUMENT pdf_doc FPDF_LoadDocument(chPDF, NU…背景之前接了一个小单子需求就是将PDF转成.tif图片刚好闲着就搜了许多资料最后选择的是PDFium SDK。 1、首先是打开PDF文件
//chPDF为文件路径
FPDF_DOCUMENT pdf_doc FPDF_LoadDocument(chPDF, NULL);
if (pdf_doc NULL)
{printf(open file failed.);return;
}2、获取PDF文件页数
int pageCount FPDF_GetPageCount(pdf_doc);
if (pageCount 0)
{FPDF_CloseDocument(pdf_doc);continue;
}3、对每页的处理
for (int pageIndex 0; pageIndex pageCount; pageIndex)
{//根绝页面号加载页面FPDF_PAGE page FPDF_LoadPage(pdf_doc, pageIndex);if (page NULL){continue;}//获取页面默认大小double page_width 0.0, page_height 0.0;FPDF_GetPageSizeByIndex(pdf_doc, pageIndex, page_width, page_height);//以灰度的格式将页面渲染到FPDF_BITMAP 这里的可以选择渲染的图片分辨率我这里写成原来的两倍FPDF_BITMAP bitmap FPDFBitmap_CreateEx(page_width*2, page_height*2 , FPDFBitmap_Gray, NULL, 0);//创建空位图FPDF_DWORD fill_color 0xFFFFFFFF;//默认填充可以不写FPDFBitmap_FillRect(bitmap, 0, 0, need_l, need_w, 255, 255, 255,0);//开始渲染FPDF_RenderPageBitmap耗时跟分辨率有关FPDF_RenderPageBitmap(bitmap, page, 0, 0, need_l, need_w, 0, 0);//保存成BMPSaveImage是我自己实现方法其实就是在数据前面加上BMP图片格式的文件头SaveImage文件名图片数据一行所占的像素值图片高SaveImage(123.bmp, (BYTE*)FPDFBitmap_GetBuffer(bitmap), FPDFBitmap_GetStride(bitmap), FPDFBitmap_GetHeight(bitmap));//关闭页面FPDF_ClosePage(page);
}
//关闭文件
FPDF_CloseDocument(pdf_doc);至此就完成了将PDF的页面抽取封装成BMP图片至于转为.TIF格式我是在BMP的基础上使用另外的方法转的。
相关文章: