У вас есть бесплатный .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)
Ответ 4
вы можете попробовать использовать OpenOffice.org
http://tinyway.wordpress.com/2011/03/30/how-to-convert-office-documents-to-pdf-using-open-office-in-c/
Ответ 5
Я решил свои проблемы с преобразованием docX в pdf со свободным компонентом Free Spire.Doc. Вы можете увидеть больше об этом на этом сайте. Это довольно простое использование.