私はSharePoint 2013サイトで作業しており、ページをPDFに保存する機能を追加しました。 PDF変換はサードパーティのライブラリSelectPdfによって処理されます。 ページ上にある「PDFダウンロード」ボタンが1回しか働かないことを除けば、私はすべての作業(レンダリングとファイルダウンロード)を手に入れました。つまり、ボタンをクリックした回数に関係なく、コードビハインドのclickイベントは1回だけ発生します(10秒以上の間隔でクリックすることに注意してください)。 PDFファイルをもう一度ダウンロードしたい場合は、ページを更新する必要があります。 私は一緒に「Hello World」の例(下記参照)問題を特定するために置く:私はそれが(ThreadAbortExceptionのを投げることによって)問題を引き起こしたことResponse.End()
だと思ったが、私が交換開始時ASP.NET "application/pdf":コードは一度だけ実行されます
protected void lnkPdfDownload_Click(object sender, EventArgs e)
{
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=test.pdf");
/************************************ Create PDF File ************************************/
string html = @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"">
<html dir=""ltr"" lang=""en-US"">
<body><h1>Hello World</h1></body>
</html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(html);
byte[] bytes = doc.Save();
Response.OutputStream.Write(bytes, 0, bytes.Length); // ALTERNATIVE: doc.Save(Response.OutputStream);
/************************************ Create PDF File ************************************/
//Response.End(); // This throw a ThreadAbortException, therefore I'm using the alternative code below
Response.Flush();
Response.SuppressContent = true;
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
をそれは他のコードと同じ問題を抱えています(今は例外がスローされません)。
SelectPdfライブラリに問題があるとは思わない:ブロック全体(「Create PDF File」コメントの間)をコメントアウトすることができますが、同じことが起こります(明らかにPDFは生成されません)。
ほとんどの場合、「ダウンロード」ボタンを2回までクリックすることができます(これはまれであり、一貫性がありません)。3回目は何も起こりません。
これは大きな問題ではありませんが、私は見ていないことが起こっていることが間違っていると思います。理由は次のとおりです。「ダウンロード」ボタンをクリックした後(自分のPDFファイルを取得した後)、自分のSharePointページで編集モードに入ることができません。 「読み込み中」のメッセージは回転し続けますが、何も起こりません(ページを更新しない限り)。
誰でもこの問題がありましたか?私はオンラインで見ましたが、それについて何も見つかりませんでした。 私はInternet Explorer 11とChrome 51を使用しています。詳細が必要な場合はお知らせください。ありがとうございました。
IEですべての例外を解除するオプションを有効にしましたが、JavaScriptのエラーは表示されません。私は、すべてのレスポンスコードを削除すると、イベントが常に発生することに気付きました。 – Frederic