2010-04-12 3 views
1

저는 pdf 파일을 생성하고 바이트 []로 호출자에게 다시 보낼 C#으로 websercive를 작성하고 있습니다. pdf 파일은 타사 구성 요소를 사용하여 생성되지만 변환에 어려움을 겪고 있습니다. pdf는 웹 서비스의 메모리 내 객체 일 뿐이며 생성 된 pdf를 호출자에게 반환하기 전에 byte []로 변환하는 좋은 방법을 찾을 수 없습니다. 이것에 대한 조언? 설명에 대한인 메모리 pdf를 바이트 []로 변환하십시오.

편집 : 나는 PDF 메모리 개체 함께 일하고 있어요

(Aspose.pdf PDF 파일 객체가 정확하게하는) 웹 서비스에서 전송 된 데이터를 사용하여 웹 서비스로 구성되어있다. 그것은 webservice에 의해 절대로 저장되지 않으며, 호출자는 바이트 []를 pdf 파일로 다시 변환하여 끝에 저장해야합니다. PDF 파일의 라이브러리가 스트림에 저장할 수 있습니다 경우

+2

그렇다면 그것은 무엇입니까? 하천을 얻을 수 있습니까? 아니면 실제 파일에 저장할 수 있습니까? –

+0

죄송합니다. 웹 서비스로 전송 된 데이터에 따라 생성되는 메모리 개체의 PDF (Aspose.pdf PDF 개체)입니다. – Henric

답변

6

, 당신은이 MemoryStream로 스트리밍 할 수 있습니다 -이 당신이 GetBuffer를 호출하여 byte[]를 얻을 수 있습니다에서.

+0

감사합니다. 나는 lib에서 찾을 수있는 것을 보게 될 것이다. – Henric

+0

그것은 매력처럼 작동했습니다! 신속한 답변을 보내 주셔서 감사합니다. 나는 당신의 대답을 받아 들일 것입니다. – Henric

2

당신은 분명히 저장 할 수 있습니다() 스트림 객체 문서 :

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

당신은 아마 MemoryStream을 객체를 생성하고 바이너리 데이터를 가져 오기 위해 저장() 메소드로 그를 보낼 수 있습니다.

+0

사실, 그건 내 문제에 대한 해결책이었습니다. 나는 Oded의 대답을 받아 들일 것입니다. 왜냐하면 그는 더 빠르며 자신의 제안을 사용하여 문제를 해결할 수 있었기 때문입니다. 나를 올바른 문서로 연결해 주시려면 +1하십시오. 고맙습니다. – Henric

+0

게시 버튼을 누른 후 그의 대답을 보았습니다. –

+0

Aspose는 정크 조각입니다. 적어도 Cells 라이브러리는 있습니다. Workbook.SaveToStream()을 호출 한 후 시작 부분으로 스트림을 되 감아 야합니다. – Matt

1

저는 Aspose.pdf와 비슷한 것을하고 있습니다. 여기에 PDF 페이지를 열고 다시 열어 쓴 몇 가지 POC 코드가 있습니다. 희망이 도움이 ..

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; 

    } 
관련 문제