最近由于工作需要,需要将文件格式作为PDF格式输入,于是在网上搜集资料,基于C#,java 到时有零星的代码,基于C的没有,自己看了API, 官方案列基本实现功能,仅供参考。下载相关文件地址:http://www.pdflib.com/
具体实现步骤如下(参考http://blog.csdn.net/wangjie0377/article/details/7163370):
一 准备PDFlib包,将PDFlib.dll 复制一份到system32, 并且把PDFlib.lib和PDFlib.h文件加入到项目工程里,并在相应的单元加入引用的头文件。
二 PDF部分代码实现:
PDF *p=NULL;
int img;
SavePanelDisplayToFile (panelHandle1,VAL_FULL_PANEL,VAL_ENTIRE_OBJECT,-1,-1,imageFileName);
if((p=PDF_new())==(PDF *)0)
{
printf("Couldn't create PDFlib object (out of memory)!/n");
return(2);
}
PDF_TRY(p)
{
//PDF_set_parameter( p,"license","X600605-009100-4E7661-329E0C");//去除水印。将注册号写入。
if (PDF_begin_document(p,pdfFileName , 0, "") == -1)
{
printf("Error: %s/n", PDF_get_errmsg(p));
return(2);
}
PDF_begin_page_ext(p, a4_width, a4_height, "");
if(img=PDF_load_image(p,"auto", imageFileName, 0, "")==-1)
{
printf("Error: %s/n", PDF_get_errmsg(p));
return(2);
}
PDF_fit_image(p, img, 0, 0, "adjustpage");
PDF_close_image(p, img);
PDF_end_page_ext(p, "");
PDF_end_document(p, "");
}
PDF_CATCH(p)
{
printf("PDFlib exception occurred in sample:/n");
printf("[%d] %s: %s/n",
PDF_get_errnum(p), PDF_get_apiname(p), PDF_get_errmsg(p));
PDF_delete(p);
getchar();
return(2);
}
PDF_delete(p);
三 虽然能正常的输出pdf 格式的文件,但是美中不足的是PDF文件中含有水印,怎么去掉呢?
第一种是获得官方授权的license,将注册号填入到注释部分。
第二种是破解,网上有很多种,个人推荐网上牛人的巧方法,直接从.DLL文件中修改。
详细说明请看牛人文章:http://bbs.pediy.com/showthread.php?p=1419309
郑重说明:请支持正版,获取授权。