Есть ли у вас бесплатный .Net управляемый код для преобразования DocX в PDF? - PullRequest
14 голосов
/ 31 августа 2009

В моем веб-проекте я использую тип файла 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. Более того, конечные пользователи должны легко редактировать этот файл. Если вы знаете, пожалуйста, скажите мне.

Спасибо

Ответы [ 5 ]

9 голосов
/ 18 октября 2009

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

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

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

Решение: XSL-FO

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

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

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

2 голосов
/ 08 сентября 2009

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

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

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

0 голосов
/ 11 апреля 2017

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

0 голосов
/ 26 декабря 2013

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

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

0 голосов
/ 04 сентября 2009

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

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

...