mvc アプリケーションで PDF ビューア機能を実行しようとしています。ユーザーが「pdf を読む」リンクをクリックすると、新しいタブ/ウィンドウが開き、ユーザーは pdf ファイルを表示できるはずです。そのため、例を確認しましたが、見つかりませんでした。記事や例を教えてください。
2 に答える
最初のビューでアンカー タグを表示し、ID を渡します (表示する PDF を識別するため)
@Html.ActionLink("read the pdf","view","doc",new { @id=123},null)
ドキュメントコントローラーで、呼び出されたパラメーターを持つアクションメソッドを持ち、メソッドをid
使用してそこにpdfを返しますFile
。
public ActionResult View(int id)
{
byte[] byteArrayOfFile=GetFieInByteArrayFormatFromId(id);
return File(byteArrayOfFile,"application/pdf");
}
仮定GetFileInByteArrayFormatFromId
はPDFファイルのバイト配列形式を返すメソッドです。
このオーバーロードを使用して、物理的に保存されている PDF ファイルへのフル パスがわかっている場合は、PDF を返すこともできます。
public ActionResult Show()
{
string path="FullPAthTosomePDFfile.pdf";
return File(path, "application/pdf","someFriendlyName.pdf");
}
PDF をダウンロードせずにブラウザーで表示する
上記のソリューションでは、エンド ユーザーのブラウザ設定に基づいて、ファイルをダウンロードまたは開くか、単にファイルをダウンロードして開くかをユーザーに尋ねます。ファイルの内容をユーザーのコンピューターにダウンロードせずにブラウザーに直接表示したい場合は、ファイルストリームをブラウザーに送信できます。
public ActionResult Show(int id)
{
// to do : Using the id passed in,build the path to your pdf file
var pathToTheFile=Server.MapPath("~/Content/Downloads/sampleFile.pdf");
var fileStream = new FileStream(pathToTheFile,
FileMode.Open,
FileAccess.Read
);
return new FileStreamResult(fileStream, "application/pdf");
}
上記のコードではsampleFile.pdf
、~/Content/Downloads/
場所に という名前の pdf ファイルがあることを想定しています。別の名前/命名規則でファイルを保存する場合は、渡された Id から一意のファイル名/パスを作成するようにコードを更新できます。
PDF コンテンツをブラウザで表示する場合は、iTextShare dll を使用できます。
リンクhttp://www.codeproject.com/Tips/387327/Convert-PDF-file-content-into-string-using-Csharpを参照してください。