Сохранение документа 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
' ----------------------------------------------------------------------------
Option Explicit
 
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 = True                                                           
set oFont = oSel.Font
set oRange = oDoc(1).Range()
 
'Текущий каталог
cur_dir = oShell.CurrentDirectory
 
with oFont
    .Size = 20
    .Name = "Times New Roman"
    .Bold=true
    .Colorindex=2
end with
 
oSel.TypeText "Word - сохранение в PDF"
 
with oFont
    .Size = 12
    .Bold=false
    .Colorindex=0
end with
 
With oSel
     .TypeParagraph
     .TypeParagraph
End With
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    '   документ word сохранить в pdf
With 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 & "")
End With
 
set oPars = oRange.Paragraphs
REnd = 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, true
End With
 
' Используем метод 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.End
     End With
End Sub
 
' Процедура для форматирования шрифта и вставки абзаца                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              как сохранить ворд в пдф
Sub TXInsert(a, b)
     With oSel
                 oFont.Bold=true
                 .TypeText a
                 .EndOf
                 oFont.Bold=false
                 .TypeText b
                 .TypeParagraph
     End With
End Sub
как сохранить файл ворд в пдф

Программный код на 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 сохранить в pdf
with(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. Более детально похожий пример я рассмотрел в этой статье.

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