Word сохранить в pdf программно

Use a foreach loop instead of a for loop — it solved my problem.

int j = 0;
foreach (Microsoft.Office.Interop.Word.Page p in pane.Pages)
{
    var bits = p.EnhMetaFileBits;
    var target = path1 +j.ToString()+  "_image.doc";
    try
    {
        using (var ms = new MemoryStream((byte[])(bits)))
        {
            var image = System.Drawing.Image.FromStream(ms);
            var pngTarget = Path.ChangeExtension(target, "png");
            image.Save(pngTarget, System.Drawing.Imaging.ImageFormat.Png);
        }
    }
    catch (System.Exception ex)
    {
        MessageBox.Show(ex.Message);  
    }
    j++;
}

Here is a modification of a program that worked for me. It uses Word 2007 with the Save As PDF add-in installed. It searches a directory for .doc files, opens them in Word and then saves them as a PDF. Note that you’ll need to add a reference to Microsoft.Office.Interop.Word to the solution.

using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

...

// Create a new Microsoft Word application object
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

// C# doesn't have optional arguments so we'll need a dummy value
object oMissing = System.Reflection.Missing.Value;

// Get list of Word files in specified directory
DirectoryInfo dirInfo = new DirectoryInfo(@"\serverfolder");
FileInfo[] wordFiles = dirInfo.GetFiles("*.doc");

word.Visible = false;
word.ScreenUpdating = false;

foreach (FileInfo wordFile in wordFiles)
{
    // Cast as Object for word Open method
    Object filename = (Object)wordFile.FullName;

    // Use the dummy value as a placeholder for optional arguments
    Document doc = word.Documents.Open(ref filename, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing);
    doc.Activate();

    object outputFileName = wordFile.FullName.Replace(".doc", ".pdf");
    object fileFormat = WdSaveFormat.wdFormatPDF;

    // Save document into PDF Format
    doc.SaveAs(ref outputFileName,
        ref fileFormat, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing);

    // Close the Word document, but leave the Word application open.
    // doc has to be cast to type _Document so that it will find the
    // correct Close method.                
    object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
    ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
    doc = null;
}

// word has to be cast to type _Application so that it will find
// the correct Quit method.
((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
word = null;

Use a foreach loop instead of a for loop — it solved my problem.

int j = 0;
foreach (Microsoft.Office.Interop.Word.Page p in pane.Pages)
{
    var bits = p.EnhMetaFileBits;
    var target = path1 +j.ToString()+  "_image.doc";
    try
    {
        using (var ms = new MemoryStream((byte[])(bits)))
        {
            var image = System.Drawing.Image.FromStream(ms);
            var pngTarget = Path.ChangeExtension(target, "png");
            image.Save(pngTarget, System.Drawing.Imaging.ImageFormat.Png);
        }
    }
    catch (System.Exception ex)
    {
        MessageBox.Show(ex.Message);  
    }
    j++;
}

Here is a modification of a program that worked for me. It uses Word 2007 with the Save As PDF add-in installed. It searches a directory for .doc files, opens them in Word and then saves them as a PDF. Note that you’ll need to add a reference to Microsoft.Office.Interop.Word to the solution.

using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

...

// Create a new Microsoft Word application object
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

// C# doesn't have optional arguments so we'll need a dummy value
object oMissing = System.Reflection.Missing.Value;

// Get list of Word files in specified directory
DirectoryInfo dirInfo = new DirectoryInfo(@"\serverfolder");
FileInfo[] wordFiles = dirInfo.GetFiles("*.doc");

word.Visible = false;
word.ScreenUpdating = false;

foreach (FileInfo wordFile in wordFiles)
{
    // Cast as Object for word Open method
    Object filename = (Object)wordFile.FullName;

    // Use the dummy value as a placeholder for optional arguments
    Document doc = word.Documents.Open(ref filename, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing);
    doc.Activate();

    object outputFileName = wordFile.FullName.Replace(".doc", ".pdf");
    object fileFormat = WdSaveFormat.wdFormatPDF;

    // Save document into PDF Format
    doc.SaveAs(ref outputFileName,
        ref fileFormat, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing);

    // Close the Word document, but leave the Word application open.
    // doc has to be cast to type _Document so that it will find the
    // correct Close method.                
    object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
    ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
    doc = null;
}

// word has to be cast to type _Application so that it will find
// the correct Quit method.
((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
word = null;

   Блондинка_

27.05.15 — 14:03

Добрый день! У меня уже как-то был такой вопрос, как макет формата Word программно сохранить из 1С в формате pdf.

Установили принтер pdf но никакой из вариантов

MSWord.SaveAS(Путь + ИмяФайла, 17);

MSWord.ExportAsFixedFormat(0,Путь+ИмяФайла+РасширениеФайла,0);

все равно не работает(( Эти способы я находила в инете и вроде они работали судя по отзывам((

   aka AMIGO

1 — 27.05.15 — 14:13

https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.word.document.exportasfixedformat.aspx

Возможно, так:

>>Чтобы сохранять файлы в форматах PDF и XPS в Microsoft Office Word, необходимо сначала установить надстройку, обеспечивающую эту функцию. Дополнительные сведения см. в разделе «Включение поддержки других форматов файлов, таких как PDF и XPS» на узле Office Online. <<

   aka AMIGO

2 — 27.05.15 — 14:15

   Креатив

3 — 27.05.15 — 14:31

(0)Если «принтер pdf», то может на печать отправить?

   aka AMIGO

4 — 27.05.15 — 14:34

(3) надо ставить конвертор какой-нибудь.

их навалом бесплатных

   Масянька

5 — 27.05.15 — 14:36

(0) А это не у тебя было, что в самом Word’е не сохраняет в pdf?

   Креатив

6 — 27.05.15 — 14:38

(4)Я не против. Пусть хоть Adobe Acrobat ставит. Просто ТС пишет про принтер, а результат хочет получить сохранением.

   Блондинка_

7 — 27.05.15 — 14:38

(1) Так все-таки надстройка, а не pdf принтер, только зря его ставили, большое спасибо!

(3) На печать можно и тогда сохраняет в pdf но мне надо чтобы пользователь делал минимум движений)

(5)  У меня, мне тогда посоветовали установить пдф-принтер, мы поставили, из Word могу с помощью принтера сохранить, но из 1с по-прежнему нет

   Масянька

8 — 27.05.15 — 14:41

(7) Понятно… А из Word точно сохраняет? В файл.

   Блондинка_

9 — 27.05.15 — 14:43

(8)  Да, но именно через кнопку печать и потом выбор pdf принтера

   Блондинка_

10 — 27.05.15 — 14:43

(8) Да, но именно через кнопку Печать и выбор pdf принтера

   Масянька

11 — 27.05.15 — 14:44

(10) Ну, и в 1С так же замутите… Сначала печать, а потом выбор принтера :)))))

   Джордж1

12 — 27.05.15 — 14:46

(10)Да лажно. Сохранить как… — там есть вариант сохранения в пдф

   Масянька

13 — 27.05.15 — 14:47

(12) У ТС нету. Уже проверяли (в прошлый раз). Word не такой, как у тебя.

   Блондинка_

14 — 27.05.15 — 15:01

(1) Огромное спасибо!) Получилось, всего-то установила надстройку) И воспользовалась кодом из ссылки)

(13) Теперь есть сохранить в pdf, просто надстройки офисной не было

Всем спасибо!!!

  

Блондинка_

15 — 27.05.15 — 15:05

А кстати, я раньше в Word даже не видела варианта установить надстройку, может кстати это и после установки принтера появилось, так что наверное он тоже нужен был

Приветствую всех читателей блога 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. Более детально похожий пример я рассмотрел в этой статье.

Я нашел несколько программ с открытым исходным кодом /freeware, которые позволяют вам конвертировать файлы .doc в файлы .pdf, но все они являются разновидностями драйверов приложений/принтеров, без добавления SDK.

Я нашел несколько программ, у которых есть SDK, позволяющий конвертировать файлы .doc в файлы .pdf, но они все принадлежат к типу собственности, 2000 долларов или лицензии или около того.

Кто-нибудь знает о каком-либо чистом, недорогом (желательно бесплатном) программном решении моей проблемы, используя С# или VB.NET?

Спасибо!

4b9b3361

Ответ 1

Используйте цикл foreach вместо цикла for — он решил мою проблему.

int j = 0;
foreach (Microsoft.Office.Interop.Word.Page p in pane.Pages)
{
    var bits = p.EnhMetaFileBits;
    var target = path1 +j.ToString()+  "_image.doc";
    try
    {
        using (var ms = new MemoryStream((byte[])(bits)))
        {
            var image = System.Drawing.Image.FromStream(ms);
            var pngTarget = Path.ChangeExtension(target, "png");
            image.Save(pngTarget, System.Drawing.Imaging.ImageFormat.Png);
        }
    }
    catch (System.Exception ex)
    {
        MessageBox.Show(ex.Message);  
    }
    j++;
}

Вот модификация программы, которая работала для меня. Он использует Word 2007 с Сохранить как PDF-надстройку. Он ищет каталог для файлов .doc, открывает их в Word и затем сохраняет их как PDF. Обратите внимание, что вам нужно добавить ссылку на Microsoft.Office.Interop.Word на решение.

using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

...

// Create a new Microsoft Word application object
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

// C# doesn't have optional arguments so we'll need a dummy value
object oMissing = System.Reflection.Missing.Value;

// Get list of Word files in specified directory
DirectoryInfo dirInfo = new DirectoryInfo(@"\serverfolder");
FileInfo[] wordFiles = dirInfo.GetFiles("*.doc");

word.Visible = false;
word.ScreenUpdating = false;

foreach (FileInfo wordFile in wordFiles)
{
    // Cast as Object for word Open method
    Object filename = (Object)wordFile.FullName;

    // Use the dummy value as a placeholder for optional arguments
    Document doc = word.Documents.Open(ref filename, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing);
    doc.Activate();

    object outputFileName = wordFile.FullName.Replace(".doc", ".pdf");
    object fileFormat = WdSaveFormat.wdFormatPDF;

    // Save document into PDF Format
    doc.SaveAs(ref outputFileName,
        ref fileFormat, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing);

    // Close the Word document, but leave the Word application open.
    // doc has to be cast to type _Document so that it will find the
    // correct Close method.                
    object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
    ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
    doc = null;
}

// word has to be cast to type _Application so that it will find
// the correct Quit method.
((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
word = null;

Ответ 2

Подводя итог для пользователей vb.net, бесплатный вариант (должен быть установлен офис):

Microsoft Office сборки скачать:

  • пиа для офиса 2010
  • пиа для офиса 2007

  • Добавить ссылку на Microsoft.Office.Interop.Word.Application

  • Добавить оператор использования или импорта (vb.net) в Microsoft.Office.Interop.Word.Application

Пример VB.NET:

        Dim word As Application = New Application()
        Dim doc As Document = word.Documents.Open("c:document.docx")
        doc.Activate()
        doc.SaveAs2("c:document.pdf", WdSaveFormat.wdFormatPDF)
        doc.Close()

Ответ 3

PDFCreator имеет компонент COM, вызываемый из .NET или VBScript (образцы, включенные в загрузку).

Но мне кажется, что принтер — это именно то, что вам нужно — просто смешайте это с Автоматизация Word, и вам должно быть хорошо перейти.

Ответ 4

В целом обсуждение библиотек для преобразования Word в PDF на Joel дискуссионные форумы. Некоторые предложения из потока:

  • Aspose
  • pdfcreator
  • PDFsharp

Ответ 5

Просто хотел добавить, что я использовал библиотеки Microsoft.Interop, в частности функцию ExportAsFixedFormat, которую я не видел в этой теме.

using Microsoft.Office.Interop.Word;
using System.Runtime.InteropServices;
using System.IO;
using Microsoft.Office.Core;Application app;

public string CreatePDF(string path, string exportDir)
{
    Application app = new Application();
    app.DisplayAlerts = WdAlertLevel.wdAlertsNone;
    app.Visible = true;

    var objPresSet = app.Documents;
    var objPres = objPresSet.Open(path, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);

    var pdfFileName = Path.ChangeExtension(path, ".pdf");
    var pdfPath = Path.Combine(exportDir, pdfFileName);

    try
    {
        objPres.ExportAsFixedFormat(
            pdfPath,
            WdExportFormat.wdExportFormatPDF,
            false,
            WdExportOptimizeFor.wdExportOptimizeForPrint,
            WdExportRange.wdExportAllDocument
        );
    }
    catch
    {
        pdfPath = null;
    }
    finally
    {
        objPres.Close();
    }
    return pdfPath;
}

Ответ 6

Я прошел через Word в PDF боль, когда кто-то бросил меня с 10000 текстовыми файлами для преобразования в PDF. Теперь я сделал это на С# и использовал Word interop, но он был медленным и разбился, если я вообще пытался использовать ПК.. очень сложно.

Это привело меня к обнаружению, что я мог бы сбросить interops и их медленность….. для Excel, который я использую (EPPLUS), а затем я обнаружил, что вы можете получить бесплатный инструмент Spire, который позволяет конвертировать в PDF… с ограничениями!

http://www.e-iceblue.com/Introduce/free-doc-component.html#.VtAg4PmLRhE

Ответ 7

Я делаю это как часть процесса выпуска — конвертируйте Word Doc в PDF.

http://www.suodenjoki.dk/us/productions/articles/word2pdf.htm
а также
http://www.oooforum.org/forum/viewtopic.phtml?t=3772&highlight=pdf+form

не совсем программно, но может помочь вам.

Ответ 8

Когда я наткнулся на некоторые проблемы с автоматизацией на стороне сервера, мы рассмотрели технику, описанную здесь, на codeproject.
Он использует переносимую версию (которая может быть развернута через xcopy) OpenOffice в сочетании с макросом.
Хотя мы еще не сделали этого переключателя, он выглядит очень перспективным.

Ответ 9

Я был впечатлен Gembox (http://www.gemboxsoftware.com/), которые предоставляют ограниченную бесплатную редакцию управления документами (включая преобразование PDF). Они также делают библиотеки для электронных таблиц. Лицензия 1 разработчика, если вы превысите их пределы (что, я думаю, вы это сделаете), составляет около 580 долларов (http://www.gemboxsoftware.com/document/pricelist). Хорошо, это не бесплатно (или, на мой взгляд, относительно недорого), но это намного дешевле, чем 2000 долларов. Насколько я понимаю, из их прайс-листа нет роялти для развертывания сервера. Возможно, стоит приблизиться к ним и посмотреть, будут ли они делать сделку, если вы не хотите откатывать свои собственные.

Ответ 10

Кажется, здесь есть какая-то релевантная информация:

Преобразование документов MS Word в PDF в ASP.NET

Кроме того, при работе Office 2007 с публикацией в PDF-функции, я думаю, вы могли бы использовать автоматизацию офиса, чтобы открыть файл *.DOC в Word 2007 и Сохранить как PDF. Я не слишком увлекаюсь офисной автоматикой, поскольку он медленный и склонный к зависанию, но просто бросая это там…

Ответ 11

Я использовал ABCpdf, который является программным вариантом и не был слишком дорогим, 300 долларов США/лицензия. Он работает либо с OpenOffice, либо возвращается к Word, если OpenOffice недоступен. Настройка была немного сложной с разрешениями OpenOffice COM, но определенно стоить аутсорсинг этой части приложения.

Ответ 12

Microsoft PDF надстройка для слова, по-видимому, является лучшим решением на данный момент, но вы должны принять во внимание, что он не конвертирует все словарные документы правильно в pdf, и в некоторых случаях вы увидите огромную разницу между словом и выходом PDF. К сожалению, я не смог найти api, который бы правильно конвертировал все текстовые документы.
Единственное решение, которое я нашел для обеспечения конверсии, было на 100% правильным, это преобразование документов через драйвер принтера. Недостатком является то, что документы помещаются в очередь и конвертируются один за другим, но вы можете быть уверены, что приведенный pdf файл точно такой же, как и документ-макет документа.
Я лично предпочел использовать UDC (Universal document converter) и установил Foxit Reader (бесплатную версию) на сервере, а затем распечатал документы, запустив «Процесс» и установив для своего свойства Verb «print». Вы также можете использовать FileSystemWatcher для установки сигнала после завершения преобразования.

Ответ 13

Пока у вас установлен Word 2010 или более поздняя версия, вы можете использовать DocTo, который предоставляет приложение командной строки для этого.

Ответ 14

Для программистов, которые находятся в ситуации, когда они не могут установить Office на свой сервер или работают в какой-либо облачной среде — недорогой альтернативой другим ответам является Api2Pdf, который поддерживает преобразование файлов Word в PDF, а также любой другой файл MS Office. Это веб-API и использует LibreOffice под капотом.

Ответ 15

Простой код и решение с помощью Microsoft.Office.Interop.Word для преобразования WORD в PDF

using Word = Microsoft.Office.Interop.Word;

private void convertDOCtoPDF()
{

  object misValue = System.Reflection.Missing.Value;
  String  PATH_APP_PDF = @"c:..MY_WORD_DOCUMENT.pdf"

  var WORD = new Word.Application();

  Word.Document doc   = WORD.Documents.Open(@"c:..MY_WORD_DOCUMENT.docx");
  doc.Activate();

  doc.SaveAs2(@PATH_APP_PDF, Word.WdSaveFormat.wdFormatPDF, misValue, misValue, misValue, 
  misValue, misValue, misValue, misValue, misValue, misValue, misValue);

  doc.Close();
  WORD.Quit();


  releaseObject(doc);
  releaseObject(WORD);

}

Добавьте эту процедуру для освобождения памяти:

private void releaseObject(object obj)
{
  try
  {
      System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
      obj = null;
  }
  catch (Exception ex)
  {
      //TODO
  }
  finally
  {
     GC.Collect();
  }
}

Ответ 16

Я использовал iTextSharp для создания PDF файлов раньше. Это порт с открытым исходным кодом iText из мира Java и довольно мощный.

Я явно не делал преобразования Word в PDF, но я программно создал и манипулировал с ним PDF файлами.

Вот еще один ссылка для проекта.

Понравилась статья? Поделить с друзьями:
  • Word сохранил документ без формата
  • Word сохранение стилей в документе
  • Word сохранение результата печати
  • Word сохранение параметров панелей
  • Word сохранение версий документов