2016-11-11 6 views
0

imageData를 서버 디렉토리에 pdf 파일로 저장하려고합니다. Html5Canvas imageData가 서버로 전송되었고 변환 후 바이트 배열로 PDF 파일로 저장하려고했습니다. 지정된 경로에서 파일이 성공적으로 생성되었지만 생성 된 파일이 대부분의 PDF 리더 (예 : Adobe Reader, Foxit 판독기 등)에서 제대로 열리지 않으며 파일이 손상되었거나 손상되었지만 MS Edge 브라우저에서 제대로 열리는 오류를 표시합니다. 나는 그들에게 공통의 PDF 리더로 보여주기를 바란다. 해결책을 제안 해 주시겠습니까? 여기 내 서버 측 코드가 있습니다.C#으로 생성 된 PDF 파일이 PDF 판독기에서 열리지 않습니다. 오류로 인해 파일이 손상되었거나 손상된 것으로 나타납니다.

public static string SaveImage(string imageData, string userEmail, int quantity) 
    { 
     string completePath = @"~\user-images\"; 
     string imageName = "sample_file2.pdf"; 
     string fileNameWitPath = completePath + imageName; 
     byte[] bytes = Convert.FromBase64String(imageData); 
     File.WriteAllBytes(HttpContext.Current.Server.MapPath(fileNameWitPath), bytes); 
    } 

같은 출력이 코드

 FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(fileNameWitPath), FileMode.OpenOrCreate); 
     fs.Write(bytes, 0, bytes.Length); 
     fs.Close(); 

과도이 생성. 당신은 단지 .PDF 파일 확장자 (PNG 또는 JPG 같은) 래스터 이미지 형식으로 파일을 저장하면

using (FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(fileNameWitPath), FileMode.Create)) 
     { 

      using (BinaryWriter bw = new BinaryWriter(fs)) 
      { 

       byte[] data = Convert.FromBase64String(imageData); 

       bw.Write(data); 

       bw.Close(); 
      } 

     } 
+0

? 당신이 여기에서 어떤 변환도하지 않기 때문에 –

답변

1

는 그것이 PDF 파일을하지 않는다; 여전히 다른 확장자가있는 이미지 파일로 남아 있습니다. 따라서 일부 브라우저에서만 확장 기능을 기반으로하지 않는 파일 형식 검색을 수행 할 수 있기 때문에 작동합니다.

실제 PDF 파일을 생성하려면 일부 변환을 사용해야합니다. 이를 위해 다음 라이브러리 중 하나를 고려하십시오

+1

iText와 iTextSharp는 무료/오픈 소스 소프트웨어로 공개됩니다. 무료/오픈 소스 소프트웨어 * 라이센스 *입니다. iText (Sharp)의 경우 라이센스는 AGPL입니다. AGPL을 사용하면 동일한 라이센스 하에서 자신의 소프트웨어를 배포하는 동안 무료로 소프트웨어를 사용할 수 있습니다. 이것은 스택 오버 플로우에서 발견 된 코드를 사용할 때의 라이센스와 유사합니다. https://www.eurostaffgroup.com/media-hub/how-can-i-use-code-snippets-found-on-stack -overflow-65809/ –

+1

@ BrunoLowagie 편집 해 주셔서 감사합니다. 실제로 무언가를 사용하기 전에 특별한 경우에'자유 '가 무엇을 의미하는지 확인하는 것이 중요합니다. 나는 또한''PDFSharp''가 훨씬 덜 엄격한'MIT License'에서 라이선스가 허여되었다는 정보를 추가했습니다. –

+1

사실 : 라이센스에 대해 많은 이야기를 나누었습니다. 경험상 개발자는 자유/오픈 소스 소프트웨어의 사용에 대해 항상 알고있는 것은 아닙니다. 예를 들면 : [IP와 Legal에 대한 소개] (http://www.slideshare.net/blowagie/open-source-an-introduction-to-ip-and-legal)와 [큰 오픈 소스 프로젝트는 어떻게 될 수 있습니까? 유료화?] (http://www.slideshare.net/blowagie/how-can-large-open-source-projects-be-monetized) –