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

Примитивный, но добавляют # в начале каждой строки сервиса.

14
задан Soul_Master 31 August 2009 в 10:26
поделиться

3 ответа

У меня нет кода для преобразования 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 . Оба являются превосходными продуктами, и существует полностью управляемая реализация C # для доступа к PDF под названием FO.NET на CodePlex. Я не пробовал этого, но он должен удовлетворять вашему критерию «бесплатности».

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

9
ответ дан 1 December 2019 в 15:02
поделиться

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

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

0
ответ дан 1 December 2019 в 15:02
поделиться

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

Вы не хотите платить за коммерческого экспортера и хотите отличных результатов?

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

Вы не хотите платить за коммерческого экспортера и хотите отличных результатов?

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

2
ответ дан 1 December 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: