如何将 PdfContentBytes 转换为字节数组

本文关键字:字节 字节数 数组 转换 PdfContentBytes | 更新日期: 2023-09-27 18:30:27

我正在使用iTextSharp DLLin asp.net。

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

如何将 PdfContentBytes 转换为字节数组

我认为你的计划不会奏效。并非所有看起来像它存在于"页面"上的东西实际上都存在于页面上,有些东西存在于全局共享位置。因此,提取页面的字节会给您一个损坏的文档。您可以将PDF中的每个页面提取到单独的文件中,这些文件将带来这些共享资源,但仍然是PDF格式。如果你已经写了一个PDF到JPEG的例程,那么也许你没问题。如果您还没有,那么iTextSharp将无法为您提供帮助。

iTextSharp(目前)不知道PDF的"外观"是什么样子,它只知道PDF的内容。它"知道"存在一系列文本,但它并不"知道"应该如何直观地呈现。它"知道"一个PDF可能有两个图像,但并不"知道"甚至不在乎它们是否重叠,这又是渲染器的问题。

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

现在,如果您只想从PDF中提取图像,那么iTextSharp可以帮助您。

试试这个:

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

您可以按如下方式获取PdfContentBytebyte[]

pdfPageContents.getInternalBuffer().toByteArray();