代码之家  ›  专栏  ›  技术社区  ›  Henric

将内存中的pdf转换为字节[]

  •  1
  • Henric  · 技术社区  · 16 年前

    编辑澄清:

    我正在使用内存中的pdf对象(准确地说是Aspose.pdf pdf对象),它是在webservice中使用发送到web服务的数据构造的。它永远不会被webservice保存,调用者应该将byte[]转换回pdf文件并保存在其端。

    3 回复  |  直到 16 年前
        1
  •  6
  •   Oded    16 年前

    MemoryStream -从这里你可以得到你的 byte[] 通过呼叫 GetBuffer

        3
  •  1
  •   Lee Smith    16 年前

    我记得不久前用Aspose.pdf做过类似的事情。下面是我写的一些POC代码,它打开了一个PDF页面,并将其返回。希望有帮助。。

       public ActionResult Index(int pageNumber)
        {
    
    
            ActionResult result = null;
            var path = Server.MapPath("~/Content/BigPdf.pdf");
    
            if (pageNumber == 0)
            {
    
                result = new FilePathResult(path, "application/pdf");
            }
    
            else
            {
                string inFile = path;
    
                string outFile = ".\\ExtractStream.pdf";
    
    
    
                //Creating stream objects holding the PDF files in Open Mode
    
                var inStream = new FileStream(inFile, FileMode.Open);
    
    
                //Creating output stream object that will store the extracted pages as a PDF file
    
                var outputStream = new MemoryStream();
    
    
    
                //Instantiating PdfFileEditor object
    
                var editor = new PdfFileEditor();
    
    
    
                //Creating an array of integers having numbers of the pages to be extracted from PDF file
    
                var pages = new int[] { pageNumber };
    
    
    
                //Calling Extract method
    
                editor.Extract(inStream, pages, outputStream);
                inStream.Close();
    
    
                //Closing output stream
                outputStream.Seek(0, SeekOrigin.Begin);//rewind stream
    
    
                var converter = new PdfConverter();
    
                converter.BindPdf(outputStream);
    
                converter.DoConvert();
    
    
                var imageStream = new MemoryStream();
    
                while (converter.HasNextImage())
                {
    
                    converter.GetNextImage(imageStream, ImageFormat.Jpeg );
    
    
    
                }
    
    
    
                imageStream.Seek(0, SeekOrigin.Begin);//rewind stream
    
                result = new FileStreamResult(imageStream, "image/Jpeg");
    
    
            }
    
            return result;
    
        }