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

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

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

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

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

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

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

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

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

Спасибо,

Ответы

Ответ 1

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

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

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

Решение: XSL-FO

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

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

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

Ответ 2

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

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

Сообщите мне, если вы хотите использовать С# для автоматизации Word, которая делает это преобразование (это очень тривиально).

Адриан


Вот мой код, отправленный для Джейсона. Это работает с 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 (хотя вы не говорите, почему, что мне было бы интересно узнать), вы не хотите платить за рекламу экспортером, и вы хотите отличные результаты?

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

Ответ 3

Есть ли в Open Office API? что, по крайней мере, было бы бесплатным вариантом?

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

Ответ 5

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