2013-09-06 3 views
1

Я использую iTextSharp DLLin asp.net.Как преобразовать PdfContentBytes в массив байтов

PdfReader reader = new PdfReader(path); 
     //create footer 
     MemoryStream outStream = new MemoryStream(); 
     PdfStamper textStamp = new PdfStamper(reader, outStream); 
     BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, Encoding.ASCII.EncodingName, false); 
     for (int i = 1; i <= reader.NumberOfPages; i++) 
     { 
      PdfContentByte pdfPageContents = textStamp.GetOverContent(i);    
//How to convert the PdfContentByte to array of bytes here? 
} 

Я хочу преобразовать каждую страницу PDF в JPEG. Как преобразовать PdfContentByte в массив байтов здесь?

ответ

2

Я не думаю, что ваш план будет работать. Не все, что похоже на жизнь на «странице», на самом деле живет на странице, некоторые вещи живут в глобальном общем месте. Таким образом, извлечение байтов страницы даст вам поврежденный документ. Вы могли бы extract every page in a PDF разделить файлы, которые будут использовать эти общие ресурсы, но которые все еще находятся в формате PDF. Если вы уже писали подпрограмму PDF-to-JPEG, возможно, вы в порядке. Если вы этого не сделали, iTextSharp не сможет вам помочь.

iTextSharp не (в настоящее время) «знает», что «выглядит» в формате PDF, он знает только содержание PDF. Он «знает», что существует пробел, но он не «знает», как это визуально визуализировать. Он «знает», что PDF может иметь два изображения, но не «знает» или даже не заботится, если они перекрываются, что еще раз является проблемой рендеринга.

Еще раз, если вы написали программу PDF-to-JPEG, не обращайте внимания на все, что я говорю. Но байты PDF не имеют ничего общего с байтами JPEG. Хотя PDF может содержать JPEG, он может также содержать много других типов двоичных данных. И эти данные, вероятно, также сжаты внутри потока.

Теперь, если вы looking to just extract images from a PDF, это то, что iTextSharp может вам помочь.

2

Попробуйте это:

PdfReader reader = new PdfReader(path); 
MemoryStream outStream = new MemoryStream(); 
PdfStamper textStamp = new PdfStamper(reader, outStream); 
byte[] content = outStream.ToArray(); 
+0

Я хочу массив байтов для каждой страницы PDF ...? – Pearl

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