Сохранение документа Word в PDF формате

Сохранение документа Word в PDF формате Примеры скриптов и макросов для Word и WSH

Приветствую всех читателей блога scriptcoding.ru. В этой статье мы рассмотрим, как сохранить документ Word в PDF формате, или в формате XPS.

По умолчанию, само приложение Word не позволяет сохранять документы в заданных форматах (исключением являются последние версии), что немного обидно, учитывая функциональные возможности самой компании Майкрософт. Но это и не удивительно, так как дядюшка Билл любит радовать своего потребителя различными косяками и багами – каких только нецензурных слов удостоился тот же Internet Explorer.

В первую очередь, стоит сообщить хорошую новость – есть расширение «SaveAsPDFandXPS«, которое находится в бесплатном доступе и его можно скачать с официального сайта Майкрософт. После установки данного расширения появляется возможность сохранить страницу как PDF в Word документе, причем, как в ручном режиме (соответствующий тип файла появится в диалоговом окне «Сохранить Как«), так и программным путем.

Собственно, программный метод получения формата pdf мы и рассмотрим, а именно, метод ExportAsFixedFormatобъекта Range, который позволяет экспортировать целиком или частично содержимое документа в нужный формат.

Данный метод содержит много параметров, и поэтому, я решил описать его в отдельной статье.

сохранение докумнта word в pdf

ExportAsFixedFormat(OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, ExportCurrentPage, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, FixedFormatExtClassPtr) — Сохраняет часть документа Word как PDF или XPS формат. Только первые два параметра являются обязательными.

OutputFileName– Обязательный параметр, который задает путь и имя сохраняемого в Word PDF или XPS-файла.

ExportFormat– Обязательный параметр, который определяет формат сохранения в Word (PDF или XPS). Значение константы WdExportFormat:

  • wdExportFormatPDF — 17 — Экспортировать документ в формате PDF.
  • wdExportFormatXPS — 18 — Экспортировать документ в формате XML Paper Specification (XPS).

OpenAfterExport— Открыть новый файл после экспорта содержимого – значение true.

OptimizeFor– Параметр указывает, следует ли оптимизировать файл для экрана или для печати. Значение константы WdExportOptimizeFor:

  • wdExportOptimizeForOnScreen — 1 – Для экрана — низкое качество и маленький размер.
  • wdExportOptimizeForPrint — 0 — Для печати – высокое качество и большой размер.

ExportCurrentPage– Определяет, что нужно экспортировать, всю страницу (true) или только выбранный диапазон (false). Word сохранение в PDF.

Item— Определяет процесс экспорта — включать только текст или текст с разметкой. Значение константы WdExportItem:

  • wdExportDocumentContent — 0 — Экспорт документа без разметки.
  • wdExportDocumentWithMarkup — 7 — Экспорт документа с разметкой.

IncludeDocProps— Указывает, следует ли включить свойства документа в недавно экспортируемый файл (true). Сохранить как PDF в Word.

KeepIRM— Указывает, следует ли копировать права доступа IRM в XPS документ, если исходный документ имеет защиту IRM. Значение по умолчанию True.

CreateBookmarks — Указывает, следует ли экспортировать закладки и тип закладки. Значение константы WdExportCreateBookmarks:

  • wdExportCreateHeadingBookmarks — 1 — Создание закладки в экспортируемом документе для всех заголовком, которые включают только заголовки внутри основного документа и текстовые поля не в пределах колонтитулов, концевых сносок, сносок или комментариев.
  • wdExportCreateNoBookmarks — 0 — Не создавать закладки в экспортируемом документе.
  • wdExportCreateWordBookmarks — 2 — Создание закладки в экспортируемом документе для каждой закладки, которая включает все закладки кроме тех, которые содержатся в верхнем и нижнем колонтитулах.

DocStructureTags— Указывает, следует ли включать дополнительные данные, которые помогут при чтении с экрана, например информацию о потоке и логическую организацию содержимого. Значение по умолчанию True. Документ Word сохранить в PDF.

BitmapMissingFonts— Указывает, следует ли включать растровое изображение текста. Установите этот параметр в значение True, когда шрифт не поддерживается в PDF.

UseISO19005_1 и FixedFormatExtClassPtr – Данные параметры не предоставляют практического интереса.

Теперь давайте рассмотрим два примера программного кода – на языке VBScript и JScript. Оба примера создают новый документ Word, далее вставляют в него текст, содержащий информацию о сервере сценариев Windows Script Host.

как сохранить документ word в pdf

Программный код на VBSCRIPT:

' ----------------------------------------------------------------------------' Как документ word сохранить в pdf формате' ExportAsFixedFormat.vbs' ----------------------------------------------------------------------------OptionExplicit dim oWord, oDoc, oSel, oFont, oShell, oRange, oPars, cur_dir, REnd set oWord = WScript.CreateObject("Word.Application") set oShell = WScript.CreateObject("WScript.Shell")set oDoc = oWord.Documents oDoc.Add() set oSel = oWord.Selection oWord.Visible = Trueset oFont = oSel.Fontset oRange = oDoc(1).Range() 'Текущий каталогcur_dir = oShell.CurrentDirectory with oFont.Size = 20.Name = "Times New Roman".Bold=true.Colorindex=2endwith oSel.TypeText "Word - сохранение в PDF" with oFont.Size = 12.Bold=false.Colorindex=0endwith With oSel .TypeParagraph .TypeParagraphEndWith ' документ word сохранить в pdfWith WScript call TXInsert("Name: ", .Name & "") call TXInsert("FullName: ", .FullName & "") call TXInsert("ScriptName: ", .Name & "") call TXInsert("ScriptFullName: ", .FullName & "") call TXInsert("Path: ", .Path & "") call TXInsert("Version: ", .Version & "") call TXInsert("Application: ", .Application & "") call TXInsert("Timeout: ", .Timeout & "") call TXInsert("BuildVersion: ", .BuildVersion & "")EndWith set oPars = oRange.ParagraphsREnd = oPars(oPars.Count).Range.End  call LRange(4,7)With oRange ' Сохраняем абзацы с 4 по 7 в PDF формате .ExportAsFixedFormat cur_dir & "WscInfo_VBS.pdf", 17, true  .setRange 0, REnd ' Сохраняем весь документ Word в PDF формате .ExportAsFixedFormat cur_dir & "WscInfoFull_VBS.pdf", 17, trueEndWith ' Используем метод SaveAs для сохранения документаoDoc(1).SaveAs cur_dir & "WscInfoFull_SaveAs_VBS.pdf", 17 ' процедура выбора диапазонаSub LRange(a, b) With oRange .setRange 0, REnd .setRange oPars(a).Range.Start, oPars(b).Range.EndEndWithEndSub ' Процедура для форматирования шрифта и вставки абзацакак сохранить ворд в пдфSub TXInsert(a, b) With oSel oFont.Bold=true .TypeText a .EndOf oFont.Bold=false .TypeText b .TypeParagraph EndWithEndSub
как сохранить файл ворд в пдф

Программный код на JSCRIPT:

// ----------------------------------------------------------------------------// Как документ word сохранить в pdf формате// ExportAsFixedFormat.js// ----------------------------------------------------------------------------var oWord1, oDoc1, oSel1, oFont1, oShell1, oRange1, oPars1, CurDir1, REnd; oWord1 = WScript.CreateObject("Word.Application");oShell1 = WScript.CreateObject("WScript.Shell");oDoc1 = oWord1.Documents; oDoc1.Add(); oSel1 = oWord1.Selection;oWord1.Visible=true; oFont1 = oSel1.Font;oRange1 = oDoc1(1).Range(); //Текущий каталогCurDir1 = oShell1.CurrentDirectory; with(oFont1){Size =20;Name ="Times New Roman";Bold=true;Colorindex=2;} oSel1.TypeText("Word - сохранение в PDF"); with(oFont1){Size =12;Bold=false;Colorindex=0;} oSel1.TypeParagraph();oSel1.TypeParagraph();  //документ word сохранить в pdfwith(WScript){ TXInsert("Name: ", Name +""); TXInsert("FullName: ", FullName +""); TXInsert("ScriptName: ", Name +""); TXInsert("ScriptFullName: ", FullName +""); TXInsert("Path: ", Path +""); TXInsert("Version: ", Version +""); TXInsert("Application: ", Application +""); TXInsert("Timeout: ", Timeout +""); TXInsert("BuildVersion: ", BuildVersion +"");} oPars1 = oRange1.Paragraphs;REnd = oPars1(oPars1.Count).Range.End;  LRange(4,7);with(oRange1){// Сохраняем абзацы с 4 по 7 в PDF формате ExportAsFixedFormat (CurDir1 +"\WscInfo_JS.pdf",17,true); setRange(0, REnd);// Сохраняем весь документ Word в PDF формате ExportAsFixedFormat (CurDir1 +"\WscInfoFull_JS.pdf",17,true);} // Используем метод SaveAs для сохранения документаoDoc1(1).SaveAs(CurDir1 +"\WscInfoFull_SaveAs_JS.pdf",17); // процедура выбора диапазонаfunction LRange(a, b){ with(oRange1){ setRange(0, REnd) setRange(oPars1(a).Range.Start, oPars1(b).Range.End)}} // Процедура для форматирования шрифта и вставки абзацакак сохранить ворд в пдфfunction TXInsert(a, b){ with(oSel1){ oFont1.Bold=true; TypeText(a); EndOf(); oFont1.Bold=false; TypeText(b); TypeParagraph();}}

Сами сценарии сохраняют документ Word в формате PDF в текущем каталоге, то есть, в каталоге, из которого произошел запуск сценария. Две функции LRange и TXInsert позволяют выбрать нужный диапазон текста (точнее нужные абзацы) и применить форматирование текста (тип шрифта и размер). Метод SaveAs также позволяет сохранить документ Word в PDF формате или в любом другом формате, данный метод принадлежит объекту Document. Более детально похожий пример я рассмотрел в этой статье.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий