2014-01-16 4 views
2

Моя задача - получить количество страниц в формате pdf. Я использовал инструменты SSRS для генерации массива PDF-байтов. Как только я получаю массив байтов, мне нужно получить количество страниц этого массива байтов. C# - используемый язык программирования.Как получить количество страниц массива байтов PDF, сгенерированных через SSRS

В настоящее время я создаю файл PDF физически, используя сгенерированный массив байтов PDF. Позже я открываю pdf-файл в памяти и получаю счет страницы. Наконец, я удаляю файл, созданный для временного назначения.

Есть ли способ получить количество страниц сгенерированного массива PDF-байтов без создания физического файла? Или я могу создать файл pdf в памяти?

Для создания PDF требуется дополнительные разрешения безопасности, и мы не используем pdf-файл для каких-либо других целей.

+0

Каков способ, с помощью которого вы создаете PDF-файл? Можете ли вы рассказать о том, что вы подразумеваете под «созданием файла физически»? –

+0

Запись файла на физическое местоположение – user3169103

+0

API-интерфейс некоторого класса, который занимается обработкой PDF, может сделать трюк здесь. Но я не знаю ваших ограничений в использовании того же, хотя .. Посмотрите на http://www.pdfsharp.com/PDFsharp/ или iText Api –

ответ

5

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

Благодарим за помощь.

int pageCount; 
MemoryStream stream = new MemoryStream(pdfContent); 
using (var r = new StreamReader(stream)) 
{ 
    string pdfText = r.ReadToEnd(); 
    System.Text.RegularExpressions.Regex regx = new Regex(@"/Type\s*/Page[^s]"); 
    System.Text.RegularExpressions.MatchCollection matches = regx.Matches(pdfText); 
    pageCount = matches.Count; 
} 
+0

Хороший и красивый ответ, простой и без внешних зависимостей. – Joseph

0

Сохраните поток в формате PDF. Используйте ссылку iTextSharp для открытия PDF-файла на сервере и подсчета страниц.

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