我正在研究一个Java程序,它以编程方式将.doc和.docx文件转换为pdf。我已经测试了几种不同的方法来将.doc和.docx文件转换为pdf格式,例如使用多个开源Java库,但遗憾的是这些库经常会弄乱文档中的布局。将doc/docx批量转换为使用Javascript的pdf
我在一个javascript脚本使用基础的Microsoft Word实例中打开该文件并将其保存为PDF跌跌撞撞(在这里找到:https://superuser.com/questions/17612/batch-convert-word-documents-to-pdfs-free/28303#28303):
var fso = new ActiveXObject("Scripting.FileSystemObject");
var docPath = WScript.Arguments(0);
var pdfPath = WScript.Arguments(1);
docPath = fso.GetAbsolutePathName(docPath);
var objWord = null;
try{
WScript.Echo("Saving '" + docPath + "' as '" + pdfPath + "'...");
objWord = new ActiveXObject("Word.Application");
objWord.Visible = false;
var objDoc = objWord.Documents.Open(docPath);
var wdFormatPdf = 17;
objDoc.SaveAs(pdfPath, wdFormatPdf);
objDoc.Close();
WScript.Echo("The CV was succesfully converted.");
} catch(err){
WScript.Echo("An error occured: " + err.message);
}finally{
if (objWord != null){
objWord.Quit();
}
}
这个JavaScript脚本是由称为我的Java程序为每个文档同步。
在小规模这似乎工作的伟大,但有很多像几千文件打交道时,我遇到了一些问题:
- 有时一个字的过程会挂起在“另存为'提示,如果发生这种情况,用户干预需要继续。在任何用户交互之前,该进程只会阻止。
- 有时Word过程会挂在'书签'提示符处。在任何用户干预来通过提示之前,该过程也被阻止。
我正在寻找最好/最干净的方式来以某种方式更好地控制这些Word过程,给他们一个最后期限或什么。就像给他们5秒打开Word文档并将其保存为PDF,5秒钟后该进程将被杀死,如果仍然有效。
我已经处理了一些与过去类似的事情,其解决方案包括“杀死字处理批处理脚本”,以杀死在程序结束后卡住的任何WORD进程。不是很干净,但它的工作。
任何经验或想法,将不胜感激!
这是JavaScript或更糟,而不是Java。 – Adder
除非您尝试学习这项技术,否则只需安装pdf打印机,并将文档“打印”为pdf。我使用了Adobe Acrobat中的(非免费的),但似乎有许多免费的实用程序可用于执行相同的操作。 – Gus
是否http://stackoverflow.com/questions/607669/how-do-i-convert-word-files-to-pdf-programmatically遭受同样的问题? (类似C#) –