将doc文件批量转为pdf文件
需要将不少doc文件转为pdf,WPS带有这种功能,但是鼠标点击次数太多以后整个人都变得很烦躁
用了一下午去搜这方面的工具软件,找到若干。有一些免费,有一些试用的,但总归就找到一个真正能用,虽说生成的文件名中有未授权字样,但批量修改文件名简单多了。
谁知道到了实验室的电脑上因为什么打印机错误,还是不能用!
于是决定自己写一个,
第二天上午开始搜资料,乱搜一阵,居然发现WPS有二次开发的功能,大喜
但是,没有C++开发接口的资料,而且官方论坛的C++例子是针对老版本的。
于是参考别人写的C#和VB的例子,在那摸索一阵,总算完事。
- void CTestDocDlg::OnBnClickedButton1()
- {
- _beginthreadex(NULL, 0, convertThread, this, 0, NULL);
- //StartConvert(m_FileSrc);
- }
- void CTestDocDlg::OnBnClickedButton2()
- {
- // TODO: 在此添加控件通知处理程序代码
- TCHAR Buffer[MAX_PATH];
- BROWSEINFO bi;
- ZeroMemory(&bi, sizeof(BROWSEINFO));
- bi.hwndOwner = m_hWnd;
- bi.ulFlags = BIF_RETURNONLYFSDIRS ; //要求返回文件系统的目录
- bi.pszDisplayName = Buffer; //此参数如为NULL则不能显示对话框
- bi.lpszTitle = _T("请选择文件夹");
- bi.lpfn = NULL;
- bi.iImage=IDR_MAINFRAME;
- LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
- if(pIDList)
- {
- SHGetPathFromIDList(pIDList, Buffer);
- //取得文件夹路径到Buffer里
- UpdateData(FALSE);
- m_FileSrc = Buffer;//将文件夹路径保存在一个CString对象里
- if(m_FileSrc != "" && m_FileSrc.GetAt(m_FileSrc.GetLength() - 1) != '\\')
- m_FileSrc += "\\";
- m_destPath.SetWindowText(m_FileSrc);
- }
- else
- {
- }
- }
- int CTestDocDlg::StartConvert(CString path)
- {
- CFileFind fileFinder;
- CString filePth = path + _T("*.doc");
- BOOL bFinished = fileFinder.FindFile(filePth);
- // 先搜集文件信息,保存起来,再集中处理!
- while(bFinished)
- {
- bFinished = fileFinder.FindNextFile();
- CString fileName = fileFinder.GetFileName();
- AddFileInfo(fileName.GetBuffer(0));
- //ConvertFile(path + fileName);
- }
- fileFinder.Close();
- std::vector<std::string>::iterator theIter;
- for(theIter = m_vecFileName.begin(); theIter != m_vecFileName.end(); theIter++)
- {
- ConvertFile(path + theIter->c_str());
- }
- return 0;
- }
- int CTestDocDlg::ConvertFile(CString szFileName)
- {
- CApplication app;
- app.CreateDispatch("WPS.APPLICATION");
- //app.SetVisible(TRUE);
- //app.doc
- app.put_Visible(FALSE);
- CDocuments docs = app.get_Documents();
- CDocument0 doc = docs.Open(szFileName, FALSE, TRUE, FALSE, NULL, NULL, TRUE, NULL, NULL, 0, 0, FALSE, FALSE, 0, FALSE);
- CString pdfName = szFileName;
- pdfName.Replace("doc", _T("pdf"));
- doc.ExportPdf(pdfName, NULL, NULL);
- //docs.Close(NULL, NULL, NULL);
- //doc.Close(NULL, NULL, NULL);
- COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR),
- vtTrue((short)TRUE),
- vtFalse((short)FALSE);
- doc.Close(vtFalse, vtOptional, vtOptional);
- return 0;
- }
- unsigned int WINAPI CTestDocDlg::convertThread(void *pParam)
- {
- CoInitialize(NULL);
- ((CTestDocDlg *)pParam)->ReadConvert();
- ::CoUninitialize();
- return 0;
- }
- int CTestDocDlg::ReadConvert()
- {
- StartConvert(m_FileSrc);
- return 0;
- }
- void CTestDocDlg::AddFileInfo(CString strFileName)
- {
- m_vecFileName.push_back(strFileName.GetBuffer(0));
- }
后面才知道原来C++版本的WPS二次开发,接口也是参考WORD的!!!
参考http://stackoverflow.com/questions/145573/creating-opening-and-printing-a-word-file-from-c
2014/03/22 10:32
将doc文件批量转为pdf文件的更多相关文章
- php 查询mysql数据批量转为PDF文件二(批量使用wkhtmltopdf html导出PDF)
上节讲到配置wkhtmltopdf,这节讲下如何批量操作 首先讲下wkhtmltopdf如何使用 直接命令行输入: wkhtmltopdf http://www.baidu.com/ baidu.p ...
- php 查询mysql数据批量转为PDF文件一(mac使用配置wkhtmltopdf html导出PDF)
数据转标准PDF查文档,查资料先转HTML标准格式再html转PDF 转PDF wkhtmltopdf工具是最佳选择 首先下载wkhtmltopdf https://wkhtmltopdf.org/d ...
- doc或docx(word)或image类型文件批量转PDF脚本
doc或docx(word)或image类型文件批量转PDF脚本 1.实际生产环境中遇到文件展示只能适配PDF版本的文件,奈何一万个文件有七千个都是word或者image类型的,由此搞个脚本批量转换下 ...
- word批量转pdf文件快捷方法。
最近在工作中因为要遇到大量的Word文件转化为PDF文件来实现平台的迁移.但是由于文件太多,手动很费力,想到了用代码的方式: 复制下面的代码,保存的记事本,另存为vbs文件:然后把这个vbs文件放到你 ...
- 怎样批量删除PDF文件中的注释
日常我们在阅读一些PDF文章时候,我们会发现有些PDF文章带有非常多的注释,显得非常不美观,影响了阅读体验.那么PDF文章里的批注应该怎么进行删除呢?怎样批量删除PDF文件中的注释? 操作教程: ...
- 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- 史上最强php生成pdf文件,html转pdf文件方法
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 怎么编辑PDF文件内容,PDF文件编辑方法
怎样编辑PDF文件内容?这是一个常常困扰我们的问题,工作当中我们经常会收到PDF格式的文件,但有时的文件内容不是我们想要的或者是觉得不合理的需要改掉.但是每次有这样的问题时都没有什么好的解决方法,每次 ...
- 将caj文件转化为pdf文件进行全文下载脚本(ubuntu下亲测有用)
最近ubuntu下caj阅读器,突然崩掉了,而偏偏要准备开题,在网上搜索原因未果,准备放弃时候,突然在网上看到一个脚本,说是很好用,可以在指定页面将caj文件转化为pdf文件,亲测有用,这里直接给出脚 ...
随机推荐
- 4.Mybatis的输入映射(parameterType类型解析)
前面提到过Mybatis可以对输入的参数进行映射,那么现在我们来看一下输入映射,关于输入映射大概可以分为几种情况来学习: 1.基本的类型 2.实体类 3.包装类 1.参数是基本的类型(int,Stri ...
- mac安装Mysql官方示例数据库employee
1. 下载地址 https://launchpad.net/test-db/employees-db-1/1.0.6 2. 执行命令 /usr/local/mysql/bin/mysql -t -u ...
- Spring aop——前置增强和后置增强 使用注解Aspect和非侵入式配置
AspectJ是一个面向切面的框架,它扩展了java语言,定义了AOP语法,能够在编译期提供代码的织入,所以它有一个专门的编译器用来生成遵守字节码字节编码规范的Class文件 确保使用jdk为5.0以 ...
- C# 判断是否联网
public static class Internet { [DllImport("winInet.dll")] private static extern bool Inter ...
- Tableview 优化Cell的复用机制01
#import "ViewController.h" @interface ViewController ()<UITableViewDataSource> @end ...
- mysql的一个特殊问题 you can't specify target table 'cpn_regist' for update in FROM clause
今天在操作数据库的时候遇到了一个问题,sql语句如下: UPDATE cpn_yogurt_registration SET dep1Name = '1' WHERE `key` in (SELEC ...
- Odoo10尝鲜:出勤登记
非常的cool,使用一个 联网的PAD 就能使用超级潮的 出勤登记功能 扫描 工牌条码,或者 从员工目录选择 员工, 例如 输入 PIN 密码, 防止"代打卡" ...
- SQL Server 树查询
WITH treeAS(SELECT ParentAssetID, AssetID,1 AS x2level,nodename,CAST(nodename AS NVARCHAR(max)) x2na ...
- [转载]PHP 5.6 on CentOS/RHEL 7.0 and 6.6 via Yum
https://webtatic.com/packages/php56/ PHP 5.6.5 has been released on PHP.net on 22nd January 2014, an ...
- springMVC验证码程序
原文地址:http://my.oschina.net/u/1757031/blog/488322 import java.awt.Color; import java.awt.Font; import ...