Конвертировать PDF в памяти в байты [] - PullRequest
1 голос
/ 12 апреля 2010

Я пишу веб-сервис на C #, который будет генерировать pdf-файлы и отправлять их вызывающей стороне в виде байта []. PDF-файл создается с использованием стороннего компонента, но я борюсь с преобразованием. PDF - это просто объект в памяти в веб-сервисе, и я не могу найти какой-либо хороший способ преобразования сгенерированного PDF в байт [] перед возвратом его вызывающей стороне. Любой совет по этому поводу?

Отредактировано для уточнения:

Я работаю с pdf-объектом в памяти (точнее, pdf-объектом Aspose.pdf), который создается в веб-сервисе с использованием данных, отправляемых в веб-сервис. Он никогда не сохраняется веб-службой, вызывающий должен преобразовать байт [] обратно в pdf-файл и сохранить его на своем конце.

Ответы [ 3 ]

6 голосов
/ 12 апреля 2010

Если библиотека PDF позволяет сохранять в поток, вы можете передать ее в MemoryStream - из этого вы можете получить byte[], позвонив GetBuffer .

2 голосов
/ 12 апреля 2010

Вы можете, очевидно, сохранить () документ в объект потока:

http://www.aspose.com/documentation/.net-components/aspose.pdf-for-.net/aspose.pdf.pdf.save_overload_3.html

Возможно, вы могли бы создать объект MemoryStream и отправить его в метод Save () для извлечения двоичных данных.

1 голос
/ 12 апреля 2010

Я помню, что делал нечто подобное с 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;

    }
...