0

私が試みているのは、テーブルの上部にある画面にボタンを配置することです。これをクリックすると、ユーザーが表示するテーブルのコンテンツを含む pdf がダウンロードされます。

これは私がPDFを作成する方法であり、アクションメソッドはどのように見えるか...

public ActionResult DownloadPdf(string content)
{
    MemoryStream outputStream = new MemoryStream();
    MemoryStream workStream = new MemoryStream();
    Document document = new Document();
    PdfWriter.GetInstance(document, workStream);
    document.Open();
    document.Add(new Paragraph(content));
    document.Close();

    byte[] byteInfo = workStream.ToArray();
    outputStream.Write(byteInfo, 0, byteInfo.Length);
    outputStream.Position = 0;

    //Response.AddHeader("Content-Disposition", "attachment; filename=test.pdf"); 
    //return File(byteInfo, "application/pdf", "test.pdf");
    return File(outputStream, "application/pdf", "test.pdf");
}

これは印刷しようとしているテーブルです...

<table class="donationTable statementTable">
  <tr>
     <th>Month</th> <th>Fees</th> 
   </tr>
   <tr>
     <td>
         Jan
     </td>
     <td>
         $5
     </td>
   </tr>    
</table>

<a href = "@Url.Action("DownloadPdf", "Home", new { content = "" })">Download</a>  
4

1 に答える 1

0

iTextsharpを使用して Razor ビューを PDF に変換する優れた方法を示すCodeProjectに関する次の記事をご覧ください。アイデアは、このテーブルを部分的に配置してから、次のようにすることです。

public ActionResult DownloadPdf()
{
    MyViewModel model = ...
    return this.ViewPdf("My table", "_SomePartial", model);
}

ViewPdfRazor ビューを実行し、レンダリングされた出力を文字列で取得し、iTextsharp に渡して PDF に変換する拡張メソッドです。

これで、ユーザーが PDF をダウンロードできるようにするこのアクションを指すアンカーをページに配置できます。

@Html.ActionLink("Export table as Pdf", "DownloadPdf", null, new { target = "_blank" })

ただし、iTextsharp は HTML を PDF に変換するように設計されておらず、サポートが非常に限られていることに注意してください。HTML テーブルに派手な CSS ルールがある場合、それらは翻訳されません。

于 2012-07-19T08:38:52.847 に答える