ASP.Net Преобразование и объединение документов в один PDF - PullRequest
3 голосов
/ 19 февраля 2009

Мне нужно иметь возможность конвертировать и объединять различные документы в один файл PDF.

Документы могут быть разных типов, например Word, Open Office, Изображения, Текст, Веб-страницы (по URL), и PDF обычно состоит из 2-3 документов.

В настоящее время мы используем BCL Technologies easyPDF с Microsoft Office, установленным на сервере. Это обрабатывает большинство документов, но у нас еще не было документов Open Office.

В настоящее время мы производим около 100-1000 таких PDF-файлов в день.

Причина, по которой я задаю вопрос, заключается в том, что производительность является ключевым вопросом. PDF создается для пользователей на лету, и поэтому время ожидания, которое мы в настоящее время получаем от 30 до 60 секунд, становится неприемлемым.

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

Есть ли у кого-нибудь еще инструменты, которые они использовали, которые надежно работают с наиболее распространенными типами документов и, прежде всего, быстро? Когда это так, кажется, я спрашиваю много!

Edit: Спасибо за все замечательные советы, я рассмотрю некоторые из них и сравню производительность.

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

Ответы [ 5 ]

3 голосов
/ 19 февраля 2009

Слияние нескольких документов PDF обычно достаточно просто (если их не нужно объединять на одной странице) - вы можете сравнить производительность слияния с чем-то вроде iTextSharp (.NET-версия iText), чтобы убедиться в этом не является узким местом - в противном случае преобразование из других форматов в PDF, скорее всего, является узким местом.

Почти во всех случаях метод, используемый для преобразования X в PDF, заключается в выполнении команды печати приложений, предназначенной для программного принтера PDF, для создания временного файла PDF.

Это означает:

  • Целевое приложение (например, Office) открывается и закрывается
  • Документ должен пройти через службу печати

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

2 голосов
/ 20 февраля 2009

Вы говорите, что используете Microsoft Office для открытия этих файлов, я бы предположил, что это узкое место, а не фактическое создание PDF.

Можно ли перевести эти документы в более доступный формат (html / xml / database), чтобы не приходилось открывать офис каждый раз, когда необходимо создать PDF-файл?

2 голосов
/ 19 февраля 2009

У меня была очень похожая проблема, когда у нас были документы, которые уже существовали в формате PDF и должны были позволить пользователю увидеть их все вместе. Мы приобрели продукт PDF4NET, который, как я помню, стоил около 500 долларов. Использовать его было чрезвычайно просто, и они дают потрясающие примеры использования инструментов.

O2 Solutions - PDF4NET

Вот пример кода, который они предоставляют для слияния. Верхняя строка выглядит так, как будто он просто выводит файл, вторые 2 строки позволяют передавать содержимое обратно пользователю.

        PDFFile.MergeFilesToDisk( "append.pdf", "unicode.pdf", "multicolumntextandimages.pdf" );
        PDFDocument doc =  PDFFile.MergeFilesToDoc( "append.pdf", "unicode.pdf", "multicolumntextandimages.pdf" );
        doc.SaveToStream( stream );
2 голосов
/ 19 февраля 2009

Мы используем ABC Pdf. Я не знаю, будет ли это достаточно быстро для ваших нужд, но, похоже, это работает для нашего использования.

0 голосов
/ 19 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...