36

Как мне выполнить пакетное преобразование многих документов Word и сохранить их как [originalfilename] .pdf?

12 ответов12

41

Это может подтолкнуть его на территорию stackoverflow.com, но вы можете написать скрипт Word 2007, чтобы открыть и сохранить документ в формате PDF. Для этого требуется Office 2007 и подключаемый модуль "Сохранить как PDF" от Microsoft.

Сохраните это в файл 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();
    }
}
24

Вот как я бы это сделал:

  1. Скачать CutePDF писатель
  2. Установите устройство записи в качестве принтера по умолчанию (вы можете изменить его позже)
  3. Поместите все ваши файлы .doc в одну папку
  4. Выделите все файлы, щелкните правой кнопкой мыши, Печать

Единственным недостатком является то, что вы должны нажать Ok один раз для каждого файла.

9

ну, cutepdf & pdf99 отлично справляются со своей работой, но я считаю, что PDFcreator более привлекательный, поскольку он печатает более высокого качества, чем два других, у него также есть больше параметров конфигурации, плюс он с открытым исходным кодом.

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 в этом каталоге.

Я уверен, что это неуклюже, но это сработало для меня. надеюсь, это поможет кому-то.

6

Используйте Google Docs в качестве пакетного конвертера PDF от Amit Agarwal

Если у вас есть огромный пакет документов Word, электронных таблиц Excel и презентаций PowerPoint на жестком диске, которые вы хотите конвертировать в PDF сразу, не вкладывая средства в коммерческое программное обеспечение, такое как Adobe Acrobat, попробуйте Google Docs.

Несмотря на то, что всегда было возможно преобразовать документы Office в PDF с помощью Google Docs, новая функция экспорта еще больше упрощает пакетное преобразование форматов файлов Microsoft Office и OpenOffice в PDF (или HTML) за три простых шага. Пакетное преобразование в PDF с Google Docs

Используйте Google Docs в качестве пакетного конвертера 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, но это приведет к тому, что все будет помещено в основную папку, и поэтому управление документами может стать проблемой, особенно если у вас слишком много файлов.

Шаг № 3 - После того, как все файлы загружены в Документы Google, снова откройте панель управления и выберите папку "input" на правой боковой панели. Выберите все файлы в этой папке и выберите "Экспорт" в разделе "Дополнительные параметры".

Здесь выберите "PDF" (или HTML) в качестве выходного формата, и все ваши документы Word, презентации, таблицы и т.д. Будут немедленно преобразованы в PDF.

И если вы конвертируете большой пакет документов в PDF, вам не нужно ждать в браузере завершения конвертации, так как Документы Google автоматически отправят вам электронное письмо после завершения обработки. В электронном письме будет ссылка, откуда вы сможете напрямую загрузить все файлы PDF в один большой ZIP-архив.

5

Ответ 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

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 а затем запустите его из командной строки из папки, в которой находятся все ваши исходные документы.

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 и последующего экспорта его в формате PDF кажется разумным, если вы обнаружите, что OpenOffice.org делает разумную работу по открытию файлов .doc, которые у вас есть.

0

Если вам нужен быстрый и простой онлайн-метод для 20 или менее файлов, используйте этот веб-сайт online2pdf. Здесь вы можете загрузить свои файлы, выбрать некоторые параметры и нажать кнопку «Преобразовать», он преобразует все документы и затем автоматически загрузит один zip-файл, содержащий файлы PDF.

0

Если документы Word просты и если вам не нужно, чтобы форматирование документов Word присутствовало в документах PDF, вы можете использовать простой цикл вокруг основного кода моих программ 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

Преобразование нескольких документов из DOC в PDF в Windows XP с использованием JODConverter и Open Office

Предпосылки:


Шаг 1 Загрузите JODConverter (последняя версия jodconverter-2.2.2.zip) из

Распакуйте zip-файл JODConverter в каталог по вашему выбору (D1)


Шаг 2 Запустите OpenOffice в сервисном режиме (подробнее здесь)

Создайте пакетный файл start-service.bat со следующим содержимым:

старт-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 (открытый офис теперь запущен в сервисном режиме и ожидает команды)


Шаг 3

Соберите все документы для преобразования в PDF в каталоге (D2)

Создайте пакетный файл convert.doc, который запускает JODConverter, и выполните инструкции по преобразованию:

convert.bat:

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

где D1 - каталог JODConverter, созданный на шаге 1

(Если JODConverter имеет другой номер версии, обновите convert.bat соответственно)

ВАЖНО: файл convert.bat должен находиться в каталоге D2!


Шаг 4:

Запустите convert.bat

Для каждого файла * .doc, присутствующего в D2, JODConverter потребует, чтобы Open Office создал новый файл с тем же именем и расширением pdf в том же каталоге.

0

Основываясь на ответе Умара, вот модифицированный скрипт PowerShell, который будет:

  • Процесс DOC, а также DOCX
  • Показать индикатор выполнения, как он работает

Как с Умаром, чтобы использовать это:

  • сохраните приведенный ниже скрипт как файл, например, 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .