将Word文档批量转换为PDF


Answers:


24

这就是我要做的:

  1. 下载CutePDF writer
  2. 将writer设置为默认打印机(以后可以将其更改回)
  3. 将所有.doc文件放置在同一文件夹中
  4. 突出显示所有文件,右键单击,打印

唯一的缺点是您必须为每个文件单击一次“ 确定”


3
这是我实际上所做的。不过,我不得不做些不同的操作...从控制面板中打开CutePDF“ Printer”,这样它就会显示出打印机队列...然后我将文档拖放到该窗口中-然后一切都在ENTER上进行,以接受那里的文件名...它们都被命名为MICROSOFT WORD-[filename] .pdf,但我可以轻松解决。
肯森2009年

相同的工作流程可以与PDFCreator(en.pdfforge.org/pdfcreator)一起使用。如果您将其安装为服务或以自动模式安装,则除了选择>打印外,它是手动的。
马特·威尔基

1
如果我在Windows中突出显示了15个以上的文件,则“打印”选项将从右键单击上下文菜单中消失。我刚刚尝试过拖放方法,但是94个文件可能对它来说太大了……
Spacedman 2012年

41

这可能会将其推入stackoverflow.com领域,但是您可以编写Word 2007脚本来打开文档并将其另存为PDF。这需要Office 2007和Microsoft 的“另存为PDF”插件

将其保存到文件SaveAsPDF.js并使用cscript.exe //nologo SaveAsPDF.js SomeFolder\MyDocToConvert.doc以下命令从命令行运行:

var fso = new ActiveXObject("Scripting.FileSystemObject");
var docPath = WScript.Arguments(0);
docPath = fso.GetAbsolutePathName(docPath);

var pdfPath = docPath.replace(/\.doc[^.]*$/, ".pdf");
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("Done.");
}
finally
{
    if (objWord != null)
    {
        objWord.Quit();
    }
}

5
上面的代码效果很好,但是只需要一个文件作为参数。我太懒了,没有找到在JScript中过滤目录的方法,所以我使用下面的帖子作为灵感在Powershell中准备了一种方法:stackoverflow.com/questions/181036/…PS E:\ MyDocuments> ls * .doc | %{cscript // nologo E:\ jssrc \ SaveAsPDF.js $ _}
Aniti 2012年

@bobbymcr答案中的链接已死。有关最新的SaveAsPDF插件下载,请参见此处
彼得·范迪维尔

9

好吧,cutepdf和pdf99做得很好,但是我发现PDFcreator更具吸引力,因为它的打印质量比其他两个更高,它还有更多的配置选项,而且它是开源的。


1
可以使用上面的kjensen回答的PDFCreator,但是,我想指出的是,在PDFCreator选项中,您可以启用自动保存功能,这还将自动将每个文档以及所选文件名保存在所选目录中。这样,您无需单击“输入”即可确认要保存每个文件。

6

使用谷歌文档的批量PDF转换阿米特·阿加瓦尔

如果您的硬盘驱动器上有大量的Word文档,Excel电子表格和PowerPoint演示文稿,并且您希望立即将其转换为PDF,而无需投资购买Adobe Acrobat之类的商业软件,请尝试使用Google Docs。

尽管始终可以使用Google Docs将Office文档转换为PDF,但是新的导出功能使您可以更轻松地通过三个简单的步骤将Microsoft Office和OpenOffice文件格式批量转换为PDF(或HTML)。使用Google文档批量转换为PDF

使用Google文档作为批处理PDF转换器

步骤#1-在Google文档中创建一个新的“输入”文件夹,您将在其中上传所有要转换为PDF的文档和演示文稿。

步骤#2-现在选择Google文档中的上传文档选项,将目标文件夹设置为您在步骤#1中创建的文件夹,然后上传*所有文档。

尽管您还可以上传图片,但Google文档正式支持以下文件格式:

* Microsoft PowerPoint (.ppt, .pps).
* Microsoft Word (.doc, .docx), OpenDocument (.odt) and StarOffice (.sxw).
* Microsoft Excel (csv, .xls, .xlsx) files and OpenDocument Spreadsheet (.ods).

[*]您也可以使用电子邮件选项将文档上传到Google Docs,但这会将所有内容都放在主文件夹中,因此,尤其是当文件过多时,管理文档会成为问题。

步骤#3-将所有文件上传到Google文档后,再次打开仪表板,然后从右侧栏中选择“输入”文件夹。选择此文件夹中的所有文件,然后在“更多选项”下选择“导出”。

选择“ PDF”(或HTML)作为输出格式,您的所有Word文档,演示文稿,电子表格等都将立即转换为PDF。

而且,如果您要将大量文档转换为PDF,则不必等待浏览器中的转换完成,因为处理完成后,Google文档会自动向您发送电子邮件。该电子邮件将具有一个链接,您可以从该链接直接下载一个大型ZIP格式的所有PDF文件。


1
准备好对包含表,图像和较不常用字体的任何文档进行重大修改。我没有进一步研究它,但是我尝试了一个带有抬头的Word文档,该抬头用包含Calibri字体和图形的表格构成。PDF与原始文件完全不同。
rossmcm

该方法最初来自2009年,但不幸的是,它似乎已被删除(单个文件可以导出为pdf,但文件夹编号...)
Joe

6

Bobbymcr的答案非常有趣,并且可以与Word 2010一起很好地工作。但是,仍有待改进。Bobbymcr的原始命令行如下所示:

cscript.exe //nologo SaveAsPDF.js SomeFolder\MyDocToConvert.doc

如果您将.js文件与某种编辑器(如Notepad ++)相关联,则此方法将无效。在这种情况下,您还必须指定要使用的引擎,否则cscript将显示一条错误消息。使用//E:jscript命令行参数可以轻松实现:

cscript.exe //nologo //E:jscript SaveAsPDF.js SomeFolder\MyDocToConvert.doc


6

关于先前用户发布的SaveAsPDF.js脚本。这可以转换一个pdf文件,但是我不知道如何隐藏目录中的所有文件。玩了一点我就创建了一个文件。CovertAll2PDF.bat有以下2行:

echo off
for %%X in (*.doc) do cscript.exe //nologo SaveAsPDF.js "%%X"

还有/r "Parent Directory"可以插入/r "PD" %%X in -....所有目录的,在这种情况下,将其命名为C:\ SaveAsPDF.js并将Saveaspdf.js保存在该目录中。

我确定它笨拙,但对我有用。希望这对某人有帮助。


4

我没有尝试过,但是有一种可以测试的使用OpenOffice.org的批处理方法。有关在GNU / Linux和Windows平台上执行此操作的说明,请参见http://www.tech-faq.com/convert-word-to-pdf.shtml(以及在http://www.togaware.com/linux/survivor/Convert_MS_Word.html,并且在http://www.oooforum.org/forum/viewtopic.phtml?t=3772)。

如果发现OpenOffice.org可以打开您拥有的.doc文件,那么使用OpenOffice.org读取.doc文件然后将其导出为PDF的原理似乎很合理。


1
使用OpenOffice.org将为您提供可单击的目录等。任何“打印为PDF”解决方案都不会。见superuser.com/questions/568/how-to-print-documents-to-pdf/...
阿尔扬

pdf虚拟打印机为+1。那些很棒,我希望它们可以在每个操作系统上默认使用。
Manu

4

这个小片段对我来说效果很好。

  • 自由
  • 简单
  • 文件数量无限制

    $Word=New-Object -ComObject Word.Application
    
    $Files=Get-ChildItem ".\*.docx"
    
    ForEach ($File In $Files) {
        $Document=$Word.Documents.Open($File.FullName)
    
        $Name=($Document.FullName).Replace("docx", "pdf")
    
        $Document.SaveAs([ref] $Name, [ref] 17)
        $Document.Close()
    }
    
    $Word.Close()
    

只需将其保存到PowerShell脚本之类Convert-Documents.ps1,然后在所有源文档所在的文件夹中从命令行运行即可。


@cxw对我的答案进行了编辑,删除了我答案的重要部分,即脚本是free并且可以处理unlimited文件的数量。这样,我回滚了编辑,但是结合了编辑中建议的语法修复。
Umar Farooq Khawaja

当我拿走[ref]命令和最后一行($Word.Close())时,它在Windows 7下为我工作。否则会出现错误。
love.by.Jesus 18-3-21

0

使用JODConverter和Open Office 在Windows XP 上将多个文档从DOC转换为PDF

先决条件:


步骤1从以下位置 下载JODConverter(最新版本jodconverter-2.2.2.zip)

在您选择的目录(D1)中解压缩JODConverter zip文件。


第2步 以服务模式启动OpenOffice(在此处有更多详细信息)

创建具有以下内容的批处理文件start-service.bat:

start-service.bat:

X:\Program Files\OpenOffice.org 3\program\soffice.exe -headless
-accept="socket,host=127.0.0.1,port=8100;urp;" –nofirststartwizard

::如果不起作用,请尝试删除最后一个参数(–nofirststartwizard)

(假设X:\ Program Files \ OpenOffice.org 3 \是安装Open Office并存在soffice.exe的目录)。

运行start-service.bat(现在在服务模式下启动开放办公室并等待命令)


第三步

将所有要转换为pdf的文档收集在目录(D2)中

创建一个批处理文件convert.doc,使用该文件启动JODConverter并发出转换说明:

convert.bat:

java -jar  "<D1>\lib\jodconverter-cli-2.2.2.jar" -f pdf  *.doc

其中D1是在步骤1中创建的JODConverter目录

(如果JODConverter具有另一个版本号,请相应地更新convert.bat)

重要说明:convert.bat文件必须位于D2目录中!


第四步:

运行convert.bat

对于D2中存在的每个* .doc文件,JODConverter将要求Open Office在同一目录中创建一个具有相同名称和pdf扩展名的新文件。


0

如果Word文档很简单,并且不需要在PDF文档中显示Word文档的格式,则可以在DOCXtoPDF程序的核心代码周围使用简单的循环来执行所需的操作。DOCXtoPDF内部使用xtopdf,这是我的Python工具包,用于从许多其他格式创建PDF。您还需要安装ReportLab 1.21。

看到:

http://jugad2.blogspot.in/2013/10/convert-microsoft-word-files-to-pdf.html

http://slid.es/vasudevram/xtopdf

https://bitbucket.org/vasudevram/xtopdf

http://www.reportlab.com/ftp


0

如果您想使用20个或更少文件的快速,简单的在线方法,请使用此网站online2pdf,您可以在此处上传文件,选择一些选项,然后单击“转换”,它将转换所有文档,然后自动下载包含以下内容的单个zip文件: PDF文件。


0

基于Umar的答案,这是经过修改的PowerShell脚本,它将执行以下操作:

  • 处理DOC以及DOCX
  • 在工作时显示进度条

与Umar一样,使用此方法:

  • 保存以下脚本文件,例如doc2pdf.ps1,在某个地方你PATH
  • 转到包含您的doc或docx文件的目录
  • powershell doc2pdf.ps1
$Word=New-Object -ComObject Word.Application

$Files=@(Get-ChildItem ".\*.docx") + @(Get-ChildItem ".\*.doc")
    # Need @() to get an array in case there is only one file - see
    # https://blogs.technet.microsoft.com/heyscriptingguy/2013/07/18/powertip-find-number-elements-in-a-powershell-array/#comment-104863

for($file_idx = 0; $file_idx -lt $Files.Count; ++$file_idx) {

    # Show the current progress
    $File = $Files[$file_idx]
    Write-Progress -Activity "Convert DOC(X) to PDF" `
                    -CurrentOperation $File.Name `
                    -PercentComplete (($file_idx/$Files.Count)*100)

    # Make the PDF
    $Document=$Word.Documents.Open($File.FullName)
    $Name=($Document.FullName -replace "\.docx?", ".pdf")     # -replace is case-insensitive regex per https://ss64.com/ps/syntax-regex.html

    $Document.SaveAs([ref] $Name, [ref] 17)
    $Document.Close()
}

# Clean up
$Word.Quit()    # Doesn't close other Word instance that may be running.

# Remove any dangling references, per https://technet.microsoft.com/en-us/library/ff730962.aspx
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Word)
Remove-Variable Word

# By cxw - https://superuser.com/users/269989/cxw - CC-BY-SA 3.0
# Modified from https://superuser.com/a/1187598/269989 by https://superuser.com/users/12797/umar-farooq-khawaja

经过Word 2013和PowerShell 4.0的测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.