Tinkoff.ru corporate blog
Programming
.NET
PDF
C#
Comments 9
+2
Скачиваем и устанавливаем подходящую версию Download. Для удобной работы из среды .NET разработана обертка GhostScriptNet, которую также придется скачать. Архив распаковываем неподалеку от проекта. В архиве нас интересует сборка Ghostscript.NET.dll, которую незамедлительно подключаем к проекту

Как много действий.

Правильный путь — Install-Package iTextSharp
+1
Разве iTextSharp позволяет рендерить PDF в картинку? Впрочем GhostScript тоже есть на nuget.org
0
Next is to convert the PDF document generated by ItextSharp to an image with Spire.Pdf.

Всё же "нет". Поскольку для рендеринга используется другая библиотека (Spire.Pdf). Но спасибо за ссылку.
+1
Я не знаю, какую версию .NET вы используете и что подвигло вас использовать тот или иной подход к релазиации многопоточности в 2016 году но пару моментов бросились в гласа сразу:

lock (PageStore) {
   PageStore[pageNumber] = mem;
}

Зачем использовать Dictionary<int, MemoryStream>, если у Вас используется доступ по индексу, когда есть MemoryStream[] и неблокирующий доступ по индексу, а количество можно определять использую атомарный инкремент?
Ну и еще, т. к. процесс печати так же занимает определенное время стоит посмотреть в сторону блокирующих очередей (BlockingCollection в .NET 4+), Reactive Extensions и Dataflow.
0
Не понимаю связь между годом и многопоточностью.
Согласен, конкретно в данном примере вполне можно использовать MemoryStream[].
0
Про год, это я к тому, что уже есть TPL, PLINQ, async/await, различные потокобезопасные структуры данных и т. д., поэтому код, который использует ThreadPool.QueueUserWorkItem напрямую вызывает некоторые вопросы сам собой, не говоря уже о конкретном способе его использования и блокировок.
-1
Есть, и что теперь ThreadPool.QueueUserWorkItem забыть как тупиковую ветвь эволюции?)

image
Only those users with full accounts are able to leave comments. , please.