Есть ли у вас какой-нибудь бесплатный .Управляемый Net код для конвертации DocX в PDF?

StackOverflow https://stackoverflow.com/questions/1356718

  •  20-09-2019
  •  | 
  •  

Вопрос

В моем веб-проекте я использую файл типа DocX для хранения шаблона отчета.Мне нужно преобразовать файл типа DocX в PDF.Есть ли у вас какой-либо .Управляемый сетью код для этого?

Я знаю несколько способов решения этого вопроса.Но это не управляемый код и не бесплатный, как следующие элементы.

  • Библиотека объектов Word 12.0 Для программного сохранения документа Word 2007 либо в формате PDF, либо в формате XPS.Но для этого требуется установить Office 2007 на сервер.

  • Распечатайте с помощью какого-нибудь бесплатного PDF-принтера, например PDFCreator - создатель.Но мне нужна какая-нибудь программа для открытия DocX на сервере, например Office 2007.Это очень плохая идея.

  • Конвертируйте с помощью бесплатной программы convertor.Но результат не идеален.

  • Используйте фреймворк, подобный Сервер рендеринга XF.Это очень хорошая идея, но она не бесплатна.

  • Создайте все содержимое документа в PDF Api следующим образом iTextSharp.Но я должен очень постараться, чтобы создать красивый документ.

  • Или создайте шаблон документа с другим форматом файла, который может экспортировать его в формат DocX и PDF.Более того, конечные пользователи должны легко редактировать этот файл.Если ты знаешь, пожалуйста, скажи мне.

Спасибо,

Это было полезно?

Решение

У меня нет кода для преобразования DocX в PDF, но, похоже, ваши требования к DocX не являются твердыми.Твоя последняя пуля гласит:

Или создайте шаблон документа с другим форматом файла, который может экспортировать его в DocX и PDF формат файла.Более того, конечные пользователи должны легко редактировать этот файл.Если ты знаешь, пожалуйста, скажи мне.

Я прочитал это так, что вы хотите иметь возможность создать шаблонный документ, заполнить его данными и преобразовать в формат PDF, но при этом разрешить поддерживать шаблон, верно?

Решение:XSL-FO

XSL-FO является стандартом W3C, таким же, как HTML, и может быть преобразован рядом коммерческих продуктов с открытым исходным кодом в PDF, WordML, XPS, PS, PCL, SVG, TIFF и т.д.Я использовал это для доставки сотен тысяч документов в месяц, как онлайн в формате PDF, так и оффлайн (например, массовая печать чеков).

Чтобы вы могли начать, вот Страница W3C для XML-FO.Там много полезной информации, включая список программного обеспечения (как с открытым исходным кодом, так и коммерческого) в левой части.Я лично использовал два коммерческих продукта под названием Создатель PDF-файлов IBEX и XEP от RenderX.Оба являются отличными продуктами, и существует 100% управляемая реализация C # для перехода к PDF, которая называется FO.NET на CodePlex.Я не пробовал это, но это должно удовлетворять вашему критерию "бесплатно".

Существует несколько способов редактирования шаблона для документов, которые будут созданы в XSL-FO.Обычно этот шаблон представляет собой XSLT, который вы применяете к своим XML-данным, но это не является обязательным требованием.Я соорудил их вручную, но это требует некоторого обучения.Вы можете начать с документа в XSL-FO и заполнить его разделы кодом, точно так же, как вы могли бы использовать HTML.Хорошей новостью является то, что там являются ряд из них Редакторы XSL-FO там, снаружи.Плохая новость заключается в том, что ни один из известных мне вариантов не является бесплатным, но некоторые из них дешевы, и вы можете найти что-то, что соответствует критерию бесплатного, немного погуглив.Однако одним из вариантов является то, что вы можете выполнить преобразование из Word с помощью таблицы стилей (коммерческий & Бесплатно).

Другие советы

Установка Office 2007 и использование библиотеки объектов Word 12 — это определенно тот вариант, который я бы выбрал (и сделал это в некоторых своих проектах).

Если вы не хотите устанавливать Word на рабочий веб-сервер, почему бы не установить его на дополнительный сервер.Вы можете заставить этот второй сервер взаимодействовать с первым (используя веб-службу или что-то в этом роде) — он может запросить следующий документ Word, который необходимо экспортировать, выполнить преобразование и затем вернуть данные PDF.

Дайте мне знать, если вам нужен пример автоматизации Word на C#, который выполняет это преобразование (это очень тривиально).

Адриан


Вот мой код, опубликованный для Джейсона.Это работает с Word 2007.Вам необходимо загрузить и установить средство экспорта PDF с веб-сайта Office:

using Microsoft.Office.Interop.Word;

...

object _read_only = false;
object _visible = true;
object _false = false;
object _true = true;
object _dynamic = 2;
object  _missing = System.Reflection.Missing.Value;

object _htmlFormat = 8;        
object _pdfFormat = 17;
object _xpsFormat = 18;

object fileName = "C:\\Test.docx";

ApplicationClass ac = new ApplicationClass();
//ac.Visible = true; // Uncomment to see Word as it opens and converts the document
//ac.Activate();

Document d = ac.Documents.Open(ref fileName, ref _missing, ref _true, ref _read_only, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _visible, ref _missing, ref _missing, ref _missing, ref _missing);

object newFileName = ((string)fileName).Substring(0, ((string)fileName).LastIndexOf(".")) + ".pdf";

d.SaveAs(ref newFileName, ref _pdfFormat, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing);

d.Close(ref _false, ref _missing, ref _missing);
ac.Quit(ref _false, ref _missing, ref _missing);

ac = null;

Итак, Soul_Master, вы говорите, что не хотите использовать взаимодействие (хотя вы не говорите почему, и мне было бы интересно знать), вы не хотите платить за коммерческого экспортера и вы хотите идеальных результатов?

Боюсь, я не смогу вам помочь.Interop всегда будет давать вам идеальные результаты, а программное обеспечение у вас уже есть.Если вы не будете использовать это, вам придется пойти на жертву — либо стоимостью, либо качеством.

Есть ли у Open Office API?это хотя бы будет бесплатная опция?

Создайте PDF-файл с помощью инструмента создания отчетов, такого как ActiveReports/Crystal Reports (гораздо проще, чем использовать iTextSharp).

Я решил свои проблемы с преобразованием docX в PDF с помощью бесплатного компонента под названием Бесплатно Spire.Doc.Вы можете увидеть больше об этом на этот сайт.Это довольно легко использовать.

вы можете попробовать использовать OpenOffice.org

http://abdulmunim.com/how-to-convert-office-documents-to-pdf-using-open-office-in-csharp/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top