2016-11-11 31 views
0

imageDataをサーバーディレクトリにpdfファイルとして保存しようとしています。 Html5Canvas imageDataがサーバーに送信され、バイト配列の変換後にPDFファイルとして保存しようとしました。ファイルが指定されたパスで正常に生成されましたが、生成されたファイルがほとんどのPDFリーダー(Adobe Reader、Foxit readerなど)で正しく開かれず、ファイルが破損または破損していてもMSエッジブラウザで正しく表示されます。私は彼らにも共通のPDFリーダーで表示したい。解決策をお聞かせください。ここに私のサーバー側のコードです。このコードC#で生成されたPDFファイルはPDFリーダーで開けません。エラーによってファイルが破損または破損しています

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

、あまりにもこのためにのために生成

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); 
    } 

同じ出力。

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

だからあなたは、ブラウザ上でPDFを作成していますか?あなたはここで何の変換も行っていないので、 –

答えて

1

あなたはそれがPDFファイル作成しません.PDFファイル拡張子を持つ(PNGまたはJPGのような)ラスター画像形式のファイルを保存した場合、それはまだ別の拡張子を持つ画像ファイルのままです。したがって、拡張子だけに基づいていないファイル形式の検出を行う可能性があるため、おそらく一部のブラウザでは機能します。

実際のPDFファイルを生成するには、何らかの変換を行う必要があります。考えてみましょう。このため、次のライブラリの1:

+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) –

関連する問題