NReco.PdfConverterを使用してフォームのHTMLコードから解析されたPDFをダウンロードしようとしています。 AJAXが動作しないことを知った後、私は数多くの投稿で提案ごとにフォームアクションを実行しました。ASP.NET MVCのビューからHTML文字列からPDFをダウンロード
- どのように私は私のコントローラで醜い
[ValidateResponse(false)]
を置き換えるためにモデルを使用することができます。しかし、これは私が自分で把握することはできません新たな問題を提起しますか? -
ファイルが実際に開かれていることを確認するにはどうすればよいですか? -
正しい方法でHTML文字列を書式設定して、PdfGeneratorで正しく動作するようにします。 PDFへのCSSを追加する
EDIT: 私はコントローラーのコードを更新し[OK]を、私は今、正常にPDFファイルを作成することができます。私は次のコード行を追加しました:
Response.ContentType = "application/pdf";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("Content-Disposition", "inline; filename=test.pdf");
Response.BinaryWrite(pdfBytes);
しかし、内容は私が期待しているものではありません。 JSON.stringifyが文字列を正しくフォーマットしていないと思われます。私は間違ったjQueryセレクタを使用していて、実際に印刷ボタンを含むフォームを選択していたことがわかります。それが修正されたので、私は今CSSに欠けていることを除いて、HTML文字列をPDFにロードすることができます。どのように私はPDFファイルは、Webページとまったく同じように見えることができますか?
HTML:
<form action="User/Template/Print" method="POST" id="print-form" enctype="multipart/form-data">
<input type="text" hidden ng-model="strHtml" name="strHtml" ng-init="printToPdf()" />
<button class="btn btn-success" type="submit">@Html.Raw(new Icon("print").Html) Print</button>
</form>
AngularJS:
angular.module("app").controller("FormController", function ($scope) {
$scope.printToPdf = function() {
var strHtml = $('#werkorderFormulier form').html();
$scope.strHtml = JSON.stringify(strHtml);
}
});
TemplateControllerでプリントアクション:
public FileResult Print(FormCollection fC)
{
var pdfConverter = new HtmlToPdfConverter();
var strHtml = fC.GetValue("strHtml").AttemptedValue;
var pdfBytes = pdfConverter.GeneratePdf(strHtml);
Response.ContentType = "application/pdf";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("Content-Disposition", "inline; filename=test.pdf");
Response.BinaryWrite(pdfBytes);
return File(pdfBytes, "application/pdf");
}
私は[NReco.PdfGenerator](http://www.nrecosite.com/pdf_generator_net.aspx)を使用してPDFを生成しています –