2009-12-13 4 views
1

У меня возникла проблема с heckuva с этой проблемой, и, похоже, в поисковых системах есть много шума, чтобы добраться до нее, поэтому простите меня, если я пропустил там серебряную пулю.Веб-сайт ASP.NET, преобразование DOCX в PDF на стороне сервера

Основой является то, что мне нужно создать документ PDF, который имеет как статические, так и динамические элементы. Я начал делать это, имея шаблон PDF со всем статическим контентом, а затем я хотел добавить в него различные динамические элементы. Проблема в том, что PDF-файлы не предназначены для манипуляции таким образом, и в зависимости от размера динамического текста, который я там вставляю, может переполняться текст на других страницах. Я использовал iTextSharp, но не могу преодолеть эту проблему.

Возможная ошибка заключается в том, чтобы создать DOCX, который я делал ранее, а затем преобразовать его в PDF-файл на бэкэнд. Единственными библиотеками, которые я нашел для этого, являются платные приложения (например, Aspose). Есть examples out there, которые конвертируются в PDF без этих библиотек, но для них, похоже, требуется клиентское приложение. Я делаю это через IIS.

Чтобы сделать длинный рассказ длиннее ... есть ли бесплатные библиотеки, которые преобразуют файл DOCX на сервер PDF без запуска клиентских приложений?

+1

-2 ответить нижеуказанным используя что-то вроде LibreOffice/unoconv, чтобы сделать преобразование. Я уверен, что OP решил проблему к настоящему времени, но я просто оставлю свой опыт здесь для будущих googlers: libreoffice --headless или unoconv не обязательно пытаются сделать документы визуально такими же, как в MS Word. Мой опыт заключается в том, что если я создаю файл .odt с LibreOffice, то созданный PDF будет почти идеальным, но использование .docx или .odt, созданного в Word, будет выглядеть немного фанки, что может быть или не быть проблемой в вашем заявление. Вас предупреждают! – chucksmash

ответ

1

Есть несколько вариантов здесь:

  • построить COM-класс Interop, который будет выполнять функции чтения и 'Сохранить как' на вашем .docx. Ссылка MSDN, которую вы указали, не требует запуска на стороне клиента, а скорее имеет сборки Office в GAC или в каталоге bin вашего ASP.NET.

  • Купите сторонний компонент, чтобы выполнить свою работу за вас. Here's just one example with no guarantees.

-1
+0

Я видел это там, но, похоже, он предназначался для (и, возможно, только для использования) клиентских приложений Windows Form. Возможно ли, что этот пример серверный? – Chris

+0

@ Крис, возможно-да, желательно - нет. – RichardOD

2

Я не знаком с хорошими бесплатными, но мы использовали Aspose.Words для достижения чего-то похожего на то, что вы описываете. Мы сохраняем шаблоны Word со статическим текстом и полями слияния. Шаблоны могут быть обычными документами Word, они не обязательно должны быть шаблонами .dot. Поля слияния могут быть как отдельными полями, так и повторяемыми данными в таблицах, поэтому вы можете легко создавать довольно сложные документы без динамического редактирования документа. (Что всегда является опцией)

Использование Aspose для этого было настолько свободным от трения, что я предложил бы использовать Aspose, если стоимость (что значительна) является показательным стопором. Поддержка также хороша, что всегда является дополнительным бонусом.

Есть всегда несколько предостережений ...

  • Я хотел бы больше контроля над PDF совместимости генерируемых PDF-файлов. У нас были проблемы со старыми клиентами, читающими созданные PDF-файлы.
  • Mail-merge не является забавой. Сложные выражения слияния почты занимали много времени, чтобы получить право.
-3

Я только что нашел очень простое решение для преобразования любых файлов из командной строки с помощью LibreOffice:

soffice.exe --headless --convert к PDF-файл.XLS

(Google для остальных)

Смежные вопросы