C# 来自MemoryStream()的PdfReader

C# 来自MemoryStream()的PdfReader,c#,itext,memorystream,pdf-reader,C#,Itext,Memorystream,Pdf Reader,谁能给我举个例子,说明如何从内存流获取PDF阅读器?我可以看到,PdfReader类有两个方法,它们看起来很像候选方法(GetStreamBytes&GetStreamBytesRaw),但是这些方法似乎需要iText特定的流,我的只是一个常规的Byte[]或内存流 这是使用C#和.NET4 iTextSharp.text.pdf.PdfReader rdr = iTextSharp.text.pdf.PdfReader.GetStreamBytesRaw 如果只想在浏览器中使用字节打开pdf

谁能给我举个例子,说明如何从
内存流
获取
PDF阅读器
?我可以看到,
PdfReader
类有两个方法,它们看起来很像候选方法(
GetStreamBytes
&
GetStreamBytesRaw
),但是这些方法似乎需要
iText
特定的流,我的只是一个常规的
Byte[]
内存流

这是使用C#和.NET4

iTextSharp.text.pdf.PdfReader rdr = iTextSharp.text.pdf.PdfReader.GetStreamBytesRaw

如果只想在浏览器中使用字节打开pdf,请执行以下操作:

public void ReturnPDF(byte[] contents, string attachmentFilename)
        {
            var response = HttpContext.Current.Response;
            try
            {
                if (!string.IsNullOrEmpty(attachmentFilename))
                {
                    response.ContentType = "application/pdf";
                    response.AddHeader("Content-Disposition", "attachment; filename=" + attachmentFilename);
                }

                response.ContentType = "application/pdf";
                response.BinaryWrite(contents);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                response.End();
                response.Flush();
                response.Clear();
            }


        }

如果只想在浏览器中使用字节打开pdf,请执行以下操作:

public void ReturnPDF(byte[] contents, string attachmentFilename)
        {
            var response = HttpContext.Current.Response;
            try
            {
                if (!string.IsNullOrEmpty(attachmentFilename))
                {
                    response.ContentType = "application/pdf";
                    response.AddHeader("Content-Disposition", "attachment; filename=" + attachmentFilename);
                }

                response.ContentType = "application/pdf";
                response.BinaryWrite(contents);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                response.End();
                response.Flush();
                response.Clear();
            }


        }
也许有点晚了。 尝试将流位置设置为0

...
stream.Flush(); // Don't know if this is necessary
stream.Position = 0;
PdfReader reader = new PdfReader(stream.ToArray());
...
也许有点晚了。 尝试将流位置设置为0

...
stream.Flush(); // Don't know if this is necessary
stream.Position = 0;
PdfReader reader = new PdfReader(stream.ToArray());
...

只要MemoryStream是有效的PDF对象,就可以从MemoryStream创建PdfReader。如果MemoryStream是有效的PDF对象,则启动PdfReader的一种方法是:

PdfReader _reader = new PdfReader((byte[])_memoryStream.ToArray());
在下面的代码中,PdfReader是从.Net资源初始化的,当从Properties.Resources对象调用该资源时,该资源作为字节[]返回,因此该资源和MemoryStream将向PdfReader返回相同的类型,即字节[]。然后,我从PdfReader对象创建一个PdfStamper对象,并使用MemoryStream作为PdfStamper的结果容器

PdfReader _srcDoc = new PdfReader(Properties.Resources.Resource1);
MemoryStream _output = new MemoryStream();
PdfStamper _scratchDoc = new PdfStamper(_srcDoc, _output);

只要MemoryStream是有效的PDF对象,就可以从MemoryStream创建PdfReader。如果MemoryStream是有效的PDF对象,则启动PdfReader的一种方法是:

PdfReader _reader = new PdfReader((byte[])_memoryStream.ToArray());
在下面的代码中,PdfReader是从.Net资源初始化的,当从Properties.Resources对象调用该资源时,该资源作为字节[]返回,因此该资源和MemoryStream将向PdfReader返回相同的类型,即字节[]。然后,我从PdfReader对象创建一个PdfStamper对象,并使用MemoryStream作为PdfStamper的结果容器

PdfReader _srcDoc = new PdfReader(Properties.Resources.Resource1);
MemoryStream _output = new MemoryStream();
PdfStamper _scratchDoc = new PdfStamper(_srcDoc, _output);

什么是memorystream的PDF阅读器?您是否正在尝试从已有的bytesDave生成pdf,我也遇到了同样的问题。你找到解决方案了吗?什么是memorystream中的PDF阅读器?您是否正在尝试从已有的bytesDave生成pdf,我也遇到了同样的问题。你找到解决方案了吗?我在memorystream中有一个pdf文件,我需要用pdf阅读器阅读。PdfReader rdr=新PdfReader(pdfstream);抛出“未找到PDF标头签名”错误。这通常意味着PDF文件已损坏。不确定问题是否在以前的版本中不清楚,但此答案似乎根本不适用。我在memorystream中有一个PDF,需要使用PDF阅读器阅读。PdfReader rdr=新PdfReader(pdfstream);抛出“未找到PDF头签名”错误。这通常意味着PDF文件已损坏。不确定问题是否在以前的版本中不清楚,但此答案似乎根本不适用。PdfReader是一个静态类。它现在不是
newpdfreader(stream.ToArray)
而是
PdfReader.Open(stream)
PdfReader是一个静态类。它现在不再是新的PdfReader(stream.ToArray)而是
PdfReader.Open(stream)