如何将PdfContentBytes转换为字节数组

时间:2013-09-06 07:18:43

标签: c# asp.net pdf itextsharp jpeg

我在asp.net中使用iTextSharp DLL。

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转换为字节数组?

3 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:2)

我认为你的计划不会起作用。并非所有看起来像生活在“页面”上的东西都存在于页面上,有些东西生活在一个全球共享位置。因此,提取页面的字节会给你一个损坏的文档。您可以extract every page in a PDF分隔文件,这些文件会带来这些共享资源,但仍然是PDF格式。如果你已经编写了一个PDF到JPEG的例行程序,那么也许你没问题。如果还没有,那么iTextSharp将无法为您提供帮助。

iTextSharp(目前)不“知道”PDF“看起来”的样子,它只知道PDF的内容。它“知道”存在一段文本,但它不“知道”应该如何在视觉上呈现。它“知道”PDF可能有两个图像,但不会“知道”,甚至不关心它们是否重叠,再一次是渲染器的问题。

再一次,如果你已经写了一个PDF到JPEG的例行程序,那么就不要理会我所说的一切。但是PDF的字节与JPEG的字节没有任何共同之处。虽然PDF可能包含JPEG,但它也可以包含许多其他类型的二进制数据。而且这些数据也可能在流内压缩。

现在,如果您是looking to just extract images from a PDF,这就是iTextSharp可以为您提供的帮助。

答案 2 :(得分:0)

您可以从byte[]中获得PdfContentByte,如下所示:

pdfPageContents.getInternalBuffer().toByteArray();