我在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转换为字节数组?
答案 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();