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 ...
随机推荐
- 保护企业的Word文档
保护企业的Word文档 通常,我们可以对Word文件进行加密码.设置为只读.禁止复制甚至是将内容变成图片加以保护,但这仅限于个人少量文档,如果是企业每天生产大量的word文档好用这种方法就不行,今天为 ...
- Hyper-V下安装Ossim系统
WindowsServer2008Hyper-V下安装Ossim系统 背景:很多朋友在用Hyper-v安装Linux的时候总是抱怨速度很慢,而且装好了系统无法识别网卡,可实际上针对网卡的问题本文提出了 ...
- CSS3文字描边 CSS3字体外部描边
给需要实现文字描边的元素添加如下CSS3的属性 text-shadow:#000 1px 0 0,#000 0 1px 0,#000 -1px 0 0,#000 0 -1px 0; -webkit-t ...
- 【qt4.8.6】qt-everywhere-opensource-src-4.8.6静态库编译,搭建vs2010 + Qt4.8.6环境
公司的电脑上无法运行QtCreator, 又想用Qt,只能搞vs2010+Qt了, 看到运行时要链接一个几M到十几M的QtCore.dll和QtGui.dll,又有一种在用C#写的程序的感觉,很不爽, ...
- jQuery 遍历 - map() 方法
定义和用法 map() 把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的 jQuery 对象. 例子1: 构建表单中所有值的列表: <p><b>value为: &l ...
- oracle查询使用频率和磁盘消耗需要缓存大小
SELECT * FROM (SELECT Sql_Text, Sql_Id, Cpu_Time FROM V$sql ORDER BY Cpu_Time DESC) ORDER BY Rownum ...
- c# winfrom应用程序关闭任务管理器中的进程
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- [leetcode]_Longest Substring Without Repeating Characters
问题:求一个字符串中最长不重复子串的长度. 直接思路:以每个字符为出发计算最长不重复子串.TLE.O(n2),HashMap存储字符出现的位置. 代码: public int lengthOfLong ...
- [leetcode]_Pascal's Triangle
题目:题目本身不存在问题,生成Pascal三角. 注意: ArrayList的使用: 1.ArrayList申请二维数组. ArrayList<ArrayList<Integer>& ...
- php或js判断网站访问者来自手机或者pc
php或js判断网站访问者来自手机或者pc机 2013年9月26日,在弄wtuonline的时候为了区分用户是来自手机版浏览器还是pc,针对不同平台选择不同的网站版本,最终总结如下: ...