/*
功能:
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;
int nR = 0;
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);
return 1;
}
try
{
pThisWorkbook = pApplication->GetWorkbooks()->Open(szBstrInputFileName);
pThisWorkbook->ExportAsFixedFormat(Excel::XlFixedFormatType::xlTypePDF,szBstrOutputFileName);
pThisWorkbook->Close();
pThisWorkbook.Release();
pThisWorkbook = NULL;
}catch(...)
{
nR = 2;
}
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;
int     nR = 0;
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);
return 1;
}
spPres = spPpApp->Presentations;
if(spPres==NULL)
{
nR = 2;
goto _RELEASE_APP;
}
try{
pPre = spPres->Open(szBstrInputFileName,
Office::MsoTriState::msoTrue,Office::MsoTriState::msoFalse,Office::MsoTriState::msoFalse);
if(pPre ==NULL)
{
nR = 3;
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==4;
}
_RELEASE_APP:
spPpApp-> Quit();
spPpApp.Release();
spPpApp = NULL;
return nR;
}
int Word2PDF(std::wstring inputFileName,std::wstring outputFileName)
{
int nR = 0;
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)
{
return 1;
}
Word::DocumentsPtr   pDocs   =   NULL;
pWordApp-> get_Documents(&pDocs);
if(pDocs==NULL)
{
nR = 2;
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,1,1,
Word::WdExportItem::wdExportDocumentContent,VARIANT_TRUE,VARIANT_TRUE,
Word::WdExportCreateBookmarks::wdExportCreateNoBookmarks,VARIANT_TRUE,VARIANT_TRUE,VARIANT_FALSE);
pDoc-> Close();
pDoc.Release();
pDoc   =   NULL;
}catch(...)
{
nR = 3;
}
_RELEASE_APP:
pWordApp-> Quit();
pWordApp.Release();
pWordApp   =   NULL;
return nR;
}
int _tmain(int argc, _TCHAR* argv[])
{
int nR = 0;
CoInitialize(NULL);
std::wstring wsCmd;
std::wstring wsS;
std::wstring wsD;
if(argc!=4)
{
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;
return 1;
}
wsCmd = argv[1];
wsS   = argv[2];
wsD   = argv[3];
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();
if(nR!=0)
std::cout<<"Error:"<<nR<<std::endl;
return nR;
}

docx文件格式转PDF格式相关推荐

  1. win7记事本如何转换html,Win7把记事本文件格式变成PDF格式的方法

    一位用户询问说Win7记事本文件格式如何变成PDF格式?我们在使用记事本编辑内容,但是保存后想让格式变成PDF,PDF格式具有许多其他电子文档格式无法相比的优点.它可以将文字.字型.格式.颜色及独立于 ...

  2. DjVu 文件格式比PDF格式好!

    DjVu 文件格式比PDF格式好! 1.使用LizardTech Virtual Printer Pro打印成Djvu格式的方法: 这种格式压缩比高,图片质量也好.使用默认设置,打印成彩页,40页书的 ...

  3. 如何通过WPS将Word(doc、docx)转换为PDF格式的教程方法

    如何通过WPS将Word(doc.docx)转换为PDF格式的教程方法 作者:张国军_Suger 开发工具与关键技术:WPS         很多时候,有些朋友们不知道如何来通过WPS来讲Word(d ...

  4. xsd文件转图片_图片转换成PDF格式怎么转?图片转换成PDF的软件哪个好?

    图片转换成PDF格式怎么转?经验丰富的设计师在完成图片格式的设计作品后都会将图片转成PDF格式文件,这样方便保存以及参加一些设计比赛.同时我们在保存大量图片的时候也可以将图片转换成PDF文件.但是还有 ...

  5. WPS如何转PDF格式?WPS转PDF怎么转?

    PDF转换器是将相应的Word.Excel.PPT文档进行转换,而不是简单的修改文件后缀,而是将相应的文件格式转换为PDF格式,这样就可以以图片的方式预览文件,并且可以更方便的进行内容传输,避免WPS ...

  6. 文件怎么转换成pdf格式?只需这个一键转换神器

    PDF文件在我们的日常工作和生活中扮演着至关重要的角色,因为它具有许多优点,例如体积小,易于传输,具有良好的外观和读书般的体验感,以及简洁明了的画面等.因此,我们经常需要将其他格式的文件转换为PDF格 ...

  7. React文件预览,React实现在线预览docx,xslx,pdf格式文件

    一.前言 由于项目需要实现文件的预览功能,通过查询百度找到了一个组件,就是react-file-viewer,其官方API中描述可支持文件格式有以下格式: 图片:png,jpeg,gif,bmp,包括 ...

  8. PDF 格式的文件编辑难度非常大,相比 .docx格式,它存在的意义是什么?

    知乎上有个热门问题,PDF 格式的文件编辑难度非常大,相比 .docx格式,它存在的意义是什么? 回答这个问题得承认一个大前提,PDF是用来查看的,而不是编辑的. 否则就相当于提问,詹姆斯的足球踢得并 ...

  9. PDF文件格式转换攻略:PDF格式转换图片格式

    关于PDF文件格式的转换大家有了解多少吗?就比如将PDF格式转换成图片格式,可能之前大家对于PDF件大家都有了解到,办公中我们经常遇到过.现在小编在这里教大家如何将PDF格式转换成图片格式,有兴趣的伙 ...

最新文章

  1. 华为2019暑期实习笔试题
  2. MySQL备份命令mysqldump参数说明与示例
  3. js将json数据保存到本地
  4. .NET斗鱼直播弹幕客户端(上)
  5. 安卓案例:View动画 - 弹球碰壁
  6. 引用和使用引用传递参数《二》
  7. call、apply和bind的用法与说明
  8. 【简报】帮助开发人员在线了解CSS Filter特性的工具 - CSS FilterLab
  9. 版本控制git之一-仓库管理
  10. 【Python打卡2019】20190423之52周存钱挑战-for+range()函数使用
  11. 微信小程序实现微信企业付款到零钱功能的流程
  12. 天盾linux数据恢复,天盾Mac数据恢复软件
  13. 玩转curl指令—测试简单的HTTP接口
  14. 《棒球殿堂》:棒球联盟LEAGUE·埼玉西武狮
  15. 总结两个最近遇到 校园网连不上或丢失WLAN如何解决的方案
  16. 【Nordic】使用nRF52810常见问题
  17. windows网络服务进程管理dos命令
  18. 界面控件DevExpress WPF的主题设计器,可轻松完成应用主题研发
  19. python卸载后安装不上_python卸载后怎么也安装不上
  20. 八爪鱼,那些我踩过的坑

热门文章

  1. zotero如何用markdown记笔记
  2. Scala中Seq转Map的方法(:_*)
  3. groupby常用方法
  4. InZiv 为 MicroLED 显示检测技术筹集 1000 万美元
  5. 6-6 采用邻接表创建无向图
  6. 根据面阵相机拍摄的速度和传送带运动的速度将拍摄的实物图片的每一帧进行无缝拼接使其成为一张完整的图片的全部流程以及c++代码
  7. excel怎么固定住一行和一列
  8. 旭锋科技制造信息管理系统
  9. 红包来咯!免费的红包封面快来领取!
  10. “永远肩负守卫物联网安全的责任和使命”——Ayla CTO发声美网瘫痪事件