Экспорт из HTML в PDF (С#)

Возможный дубликат:
Преобразование HTML в PDF в .NET

В наших приложениях мы делаем html-документы как отчеты и экспорт. Но теперь наш клиент хочет кнопку, которая сохраняет этот документ на своем ПК. Проблема в том, что документ содержит изображения. Вы можете создать текстовый документ со следующим кодом:

private void WriteWordDoc(string docName)
{
    Response.Buffer = true;
    Response.ContentType = "application/msword";
    Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.doc", docName.Replace(" ", "_")));
    Response.Charset = "utf-8";
}

Но проблема в том, что изображения - это просто ссылки а, не встроенные в документ слова.

Поэтому я ищу альтернативу PDF кажется хорошей альтернативой, знает ли кто-нибудь хорошего автора PDF для С#? Тот, у кого есть хорошие ссылки и был проверен правильно?

Ответ 1

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

  • Компьютерные ресурсы, необходимые для создания PDF файла. Если это сложный документ, это может занять слишком много времени и замедлить ответ другим пользователям.
  • Число одновременных пользователей, которым потребуется эта же функция
  • Стоимость (есть бесплатные решения, а также тяжелые коммерческие продукты).

Я бы не стал полагаться на формат Word, поскольку PDF предоставит вам еще одну гарантию того, что он будет читабель в будущем.

Кроме того, возможность встраивания жестких ссылок на изображения не кажется мне хорошей идеей. Что делать, если пользователь хочет открыть документ, а сервер недоступен?

Ответ 2

У вас большая проблема... сохранение созданного файла является прерогативой браузера. Как браузер имеет дело с каким-либо конкретным файловым потоком, даже если вы задаете тип контента, полностью зависит от браузера. Лучше всего, вероятно, использовать что-то вроде ABCpdf для преобразования HTML/изображений в PDF. Мне очень повезло с их программным обеспечением, и у них есть достойная поддержка. Конечно, это инструмент третьей стороны, который вам нужно будет установить. Не делая этого, ваш следующий лучший вариант, вероятно, для создания zip-кода с изображениями и другими файлами (CSS, javascript?)... но это займет довольно много логики.

В некоторых браузерах эта функция встроена. Вы можете попросить своих пользователей использовать это.:)

Ответ 3

сборка потока в формате pdf с открытым исходным кодом .net: http://sourceforge.net/projects/itextsharp/

как только вы его повесите, вы никогда не будете использовать стороннего участника #% $^ # или засорите свой сервер, выполняющий IO, и снова занять место для временного файла.

Ответ 4

Вам нужно будет предоставить абсолютную ссылку на изображение в любое доступное место в Интернете.

Как только документ был загружен в Word, сохранение документа "HTML" в качестве MSWord, должно включать изображения (или, возможно, вариант?).

Ответ 5

ExpertPDF делает достойную работу по преобразованию HTML в PDF (включая изображения). Внутри он использует размещенную копию IE для рендеринга HTML перед его преобразованием, а это означает, что этот компонент не будет работать с Mono в Linux, а это означает, что причуды IE - ваши собственные приемы PDF. Тем не менее, он неплохо выполняет рендеринг умеренно сложных макетов, и вы можете управлять разбиением на страницы с помощью CSS-break-before и т.д.

Ответ 6

Мне нравится DocRaptor.com для создания pdf файлов. Это веб-приложение, которое работает на любом языке, и использует Prince XML, поэтому результаты являются высококачественными.

Ответ 7

У меня была та же проблема, но у меня не было возможности ее решить, поскольку мы решили экспортировать документ без изображения, поскольку он не имеют какие-либо изображения в первую очередь.

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

Ответ 8

MS имеет новый формат описания страницы "XPS", который может быть создан просто из WPF модели программирования, будь то на сервере или на клиенте. Там приложение XPS Reader, такое как PDF Reader, позволяет пользователям просматривать и распечатывать документы XPS. Там есть простой API для создания документа XPS.

Ответ 9

Попробуйте компонент PDF Duo.Net, который преобразует HTML в PDF в/из строки | файл | URL | поток. Это небольшая, но очень эффективная библиотека, которую вы можете использовать в своем приложении ASP.NET.

Найдите пример ASP.NET С# на своей странице.