c/c++常用代码---doc,ppt,xls文件格式转PDF格式[转]
[转]doc,ppt,xls文件格式转PDF格式
http://blog.csdn.net/lee353086/article/details/7920355
确实好用。
需要注意的是#import文件路径要和自己电脑上的文件路径对应
- /*
- 功能:
- Office文件格式(docx、xlsx、pptx)转PDF格式文件
- Author:
- Kagula by 2012-08-29
- 使用前提
- [1]Office 2007(Word,Excel,PPT)
- [2]Office 2007导PDF插件
- 编译环境:
- [1]VS2008SP1
- [2]WinXPSP3
- */
- #pragma warning(disable:4786)
- #import "C:\Program Files\Common Files\Microsoft Shared\Office12\mso.dll" \
- rename("RGB","_OfficeRGB")
- #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" \
- rename("Reference", "ignorethis")
- #import "C:\Program Files\Microsoft Office\Office12\msword.olb " \
- rename("FindText","_FindText")\
- rename("Rectangle","_Rectangle")\
- rename("ExitWindows","_ExitWindows")
- #import "C:\Program Files\Microsoft Office\Office12\MSPPT.OLB"
- #import "c:\Program Files\Microsoft Office\Office12\EXCEL.exe" \
- rename("DialogBox","_DialogBox") \
- rename("RGB","_RGB") \
- exclude("IFont","IPicture")
- #include <string>
- #include <iostream>
- int EXCEL2PDF(std::wstring inputFileName,std::wstring outputFileName)
- {
- HRESULT hr;
- ;
- Excel::_ApplicationPtr pApplication = NULL;
- Excel::_WorkbookPtr pThisWorkbook = NULL ;
- BSTR szBstrInputFileName;
- BSTR szBstrOutputFileName;
- szBstrInputFileName=SysAllocString(inputFileName.c_str());
- szBstrOutputFileName=SysAllocString(outputFileName.c_str());
- if (FAILED(pApplication.CreateInstance(__uuidof(Excel::Application))))
- {
- wprintf(L"CreateInstance failed w/err 0x%08lx\n", hr);
- ;
- }
- try
- {
- pThisWorkbook = pApplication->GetWorkbooks()->Open(szBstrInputFileName);
- pThisWorkbook->ExportAsFixedFormat(Excel::XlFixedFormatType::xlTypePDF,szBstrOutputFileName);
- pThisWorkbook->Close();
- pThisWorkbook.Release();
- pThisWorkbook = NULL;
- }catch(...)
- {
- nR = ;
- }
- pApplication-> Quit();
- pApplication.Release();
- pApplication= NULL;
- return nR;
- }
- int PPT2PDF(std::wstring inputFileName,std::wstring outputFileName)
- {
- PowerPoint::_ApplicationPtr spPpApp;
- BSTR szBstrInputFileName;
- BSTR szBstrOutputFileName;
- BSTR szBstrEmpty;
- HRESULT hr;
- PowerPoint::PresentationsPtr spPres;
- PowerPoint::_PresentationPtr pPre;
- ;
- szBstrInputFileName=SysAllocString(inputFileName.c_str());
- szBstrOutputFileName=SysAllocString(outputFileName.c_str());
- szBstrEmpty=SysAllocString(L"");
- if (FAILED(spPpApp.CreateInstance(__uuidof(PowerPoint::Application))))
- {
- wprintf(L"CreateInstance failed w/err 0x%08lx\n", hr);
- ;
- }
- spPres = spPpApp->Presentations;
- if(spPres==NULL)
- {
- nR = ;
- goto _RELEASE_APP;
- }
- try{
- pPre = spPres->Open(szBstrInputFileName,
- Office::MsoTriState::msoTrue,Office::MsoTriState::msoFalse,Office::MsoTriState::msoFalse);
- if(pPre ==NULL)
- {
- nR = ;
- goto _RELEASE_APP;
- }
- pPre->ExportAsFixedFormat(szBstrOutputFileName,PowerPoint::PpFixedFormatType::ppFixedFormatTypePDF,
- PowerPoint::PpFixedFormatIntent::ppFixedFormatIntentPrint,Office::MsoTriState::msoTriStateMixed,
- PowerPoint::PpPrintHandoutOrder::ppPrintHandoutHorizontalFirst,PowerPoint::PpPrintOutputType::ppPrintOutputSlides,
- Office::MsoTriState::msoFalse,NULL,PowerPoint::PpPrintRangeType::ppPrintAll,szBstrEmpty,
- VARIANT_TRUE,VARIANT_FALSE,VARIANT_TRUE,VARIANT_TRUE,VARIANT_FALSE);
- pPre->Close();
- pPre.Release();
- pPre = NULL;
- }catch(...)
- {
- nR==;
- }
- _RELEASE_APP:
- spPpApp-> Quit();
- spPpApp.Release();
- spPpApp = NULL;
- return nR;
- }
- int Word2PDF(std::wstring inputFileName,std::wstring outputFileName)
- {
- ;
- Word::_ApplicationPtr pWordApp = NULL;
- Word::_DocumentPtr pDoc = NULL;
- HRESULT hr;
- BSTR szBstrOutputFileName;
- szBstrOutputFileName=SysAllocString(outputFileName.c_str());
- hr = pWordApp.CreateInstance(__uuidof(Word::Application));
- if(hr!=S_OK)
- {
- ;
- }
- Word::DocumentsPtr pDocs = NULL;
- pWordApp-> get_Documents(&pDocs);
- if(pDocs==NULL)
- {
- nR = ;
- goto _RELEASE_APP;
- }
- try
- {
- pDoc = pDocs->Open(&(_variant_t(inputFileName.c_str())));
- if(pDoc==NULL)
- goto _RELEASE_APP;
- pDoc->ExportAsFixedFormat(szBstrOutputFileName,Word::WdExportFormat::wdExportFormatPDF,VARIANT_FALSE,
- Word::WdExportOptimizeFor::wdExportOptimizeForPrint,Word::WdExportRange::wdExportAllDocument,,,
- Word::WdExportItem::wdExportDocumentContent,VARIANT_TRUE,VARIANT_TRUE,
- Word::WdExportCreateBookmarks::wdExportCreateNoBookmarks,VARIANT_TRUE,VARIANT_TRUE,VARIANT_FALSE);
- pDoc-> Close();
- pDoc.Release();
- pDoc = NULL;
- }catch(...)
- {
- nR = ;
- }
- _RELEASE_APP:
- pWordApp-> Quit();
- pWordApp.Release();
- pWordApp = NULL;
- return nR;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- ;
- CoInitialize(NULL);
- std::wstring wsCmd;
- std::wstring wsS;
- std::wstring wsD;
- )
- {
- std::cout<<"Command Usage: Office2PDF -[e|p|w] <source file name> <destination file name>"<<std::endl;
- std::cout<<" e.g.: Office2PDF -e myName.xlsx myName.pdf"<<std::endl;
- ;
- }
- wsCmd = argv[];
- wsS = argv[];
- wsD = argv[];
- if(wsCmd==L"-e")
- nR = EXCEL2PDF(wsS.c_str(),wsD.c_str());
- else if(wsCmd==L"-p")
- nR = PPT2PDF(wsS.c_str(),wsD.c_str());
- else if(wsCmd==L"-w")
- nR = Word2PDF(wsS.c_str(),wsD.c_str());
- CoUninitialize();
- )
- std::cout<<"Error:"<<nR<<std::endl;
- return nR;
- }
c/c++常用代码---doc,ppt,xls文件格式转PDF格式[转]的更多相关文章
- 文档资源搜索小工具 - 支持PDF,DOC,PPT,XLS
最近做了一个文档搜索小工具,当然不是网盘搜索工具,这个工具支持四种文件格式搜索(pdf,doc,ppt,xls),你只需要在搜索框中输入你想要搜索资源的关键词,点击搜索按钮即可获取相关资源,点击下载按 ...
- NSIS常用代码整理
原文 NSIS常用代码整理 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ 1 ;获取操作系统盘符 2 ReadEnvStr $R0 SYSTEMDRIVE ...
- XSS(跨站脚本攻击) - 常用代码大全
XSS(跨站脚本攻击) - 常用代码大全-版本一 1'"()&%<acx><ScRiPt >prompt(915149)</ScRiPt> < ...
- GCD 常用代码
GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...
- 转--Android实用的代码片段 常用代码总结
这篇文章主要介绍了Android实用的代码片段 常用代码总结,需要的朋友可以参考下 1:查看是否有存储卡插入 复制代码 代码如下: String status=Environment.getE ...
- 刀哥多线程之03GCD 常用代码
GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...
- jquery常用代码集锦
1. 如何修改jquery默认编码(例如默认GB2312改成 UTF-8 ) 1 2 3 4 5 $.ajaxSetup({ ajaxSettings : { contentT ...
- IOS 使用webview 显示 doc/docx/xls/pdf等
在一款项目里添加阅读各种文档功能 那么对在线的文档或者是下载后的文档 进行阅读,比如 doc/docx/xls/pdf等文件 有两种方法总结如下: 1. - (void)viewDidLoad { [ ...
- Mysql:常用代码
C/S: Client Server B/S: Brower Server Php主要实现B/S .net IIS Jave TomCat LAMP:L Mysql:常用代码 Create table ...
随机推荐
- html5相关
1.语义化标签: header\section\aside\footer 2.音视频播放: video\audio 其中video支持ogg\mpeg4\webm格式的视频: 3.canvas 一.画 ...
- js中字符串,数字之间转换的常用方法
var number={ num:, num1:"2你好" }; //将数字转换为字符串 var str=number.num.toString();//十进制 );//二进制 ) ...
- WP8_读写XML
/// <summary> /// WP手机,XML读写类 /// </summary> public class WPXmlRW { /// <summary> ...
- Linux:两台服务器之间添加信任关系,进行远程操作的时候不需要输入密码
两台机器之间建立信任关系的步骤: 1. 在机器1上root用户执行ssh-keygen命令,生成建立安全信任关系的证书,直接Enter [root@CentOS64-x64 ~]# ssh-keyge ...
- Hbase rest方式获取指定key范围内的值
代码如下: <?php class Monitor_Hbase{ private $rest_host = "http://10.99.90.39:8130/";//rest ...
- Vim中的正则表达式[转]
来自:http://blog.csdn.net/endall/archive/2007/08/29/1764554.aspx Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操 ...
- Unieap3.5-Grid编辑列中数字与下拉改变
Grid列表中字段改变事件 <cell label="单据金额" width='20%' name="NFEE_1" id="NFEE_1&qu ...
- svn服务器搭建与配置
http://www.cnblogs.com/armyfai/p/3985660.html
- [原]sdut2605 A^X mod P 山东省第四届ACM省赛(打表,快速幂模思想,哈希)
本文出自:http://blog.csdn.net/svitter 题意: f(x) = K, x = 1 f(x) = (a*f(x-1) + b)%m , x > 1 求出( A^(f(1) ...
- PeopleCode 处理压缩文件
PeopleSoft中对文件附件的处理都是单个文件处理的,虽然在8.52版本新增了MAddAttachment(URLDestination, DirAndFilePrefix, Prompts, ...