Как конвертировать файлы Word в PDF программно?

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

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

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

Благодаря!

Используйте цикл 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 с установленной надстройкой Save As 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(@"\\server\folder"); 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; 

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

Загрузка офисных приложений Microsoft:

  • pia для офиса 2010
  • pia для офиса 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() 

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

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

Существует полное обсуждение библиотек для преобразования Word в PDF на дискуссионных форумах Джоэла . Некоторые предложения из streamа:

  • Aspose
  • PDF создатель
  • PDFsharp

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

  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 baseFileName = Path.GetFileNameWithoutExtension(path); var pdfFileName = baseFileName + ".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; } 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • AndAlso / OrElse в VBA
  • Формат TimeSpan более 24 часов
  • Задание логического значения для целого числа возвращает -1 для true?
  • Получение hashа списка строк независимо от порядка
  • VB.NET. Какова цель classа или модуля?
  • Как проверить форматирование адресов электронной почты с помощью .NET Framework?
  • Связь TCP-клиент с сервером
  • Разделите строку на значение Enum в VB.NET
  • Тени против перегрузки в VB.NET
  • Как получить размер удобочитаемого файла в аббревиатуре байтов с помощью .NET?
  • VB.NET - IsNothing против нет ничего
  • Interesting Posts

    Убедитесь, что 32 или 64-разрядная ОС Windows через реестр

    Каков рекомендуемый способ создания числового текстового поля в JavaFX?

    Как получить версию Windows в качестве переменной?

    Почему функция Array’s == возвращает true для Array (1,2) == Array (1,2)?

    Как справиться с летней экономией, используя TimeZone в Java

    Как сообщить QWebPage не загружать определенные типы ресурсов?

    Отключение / выключение из общего сетевого ресурса Windows без перезагрузки службы рабочей станции

    Вкладки в браузере Chrome слишком сильно сжаты

    appcompat-v7: 21.0.0 ‘: не найден ресурс, который соответствует указанному имени: attr’ android: actionModeShareDrawable ‘

    Как заставить R использовать указанный факторный уровень в качестве ссылки в регрессии?

    Отключить стрелки страницы поиска Google, кроме результатов при прокрутке вверх / вниз с помощью клавиатуры

    Рекомендации для инструмента анализа кучи для Java?

    Помните, какая вкладка была активной после обновления

    Maven с помощью нескольких каталогов src

    Как проверить, является ли ввод числовым в C ++

    Давайте будем гением компьютера.