2016-04-01 32 views
1

おはようございます、私は現在のページをPDFに保存して、itextsharpライブラリを使用してそれを一時フォルダに保存するサンプルコードを見つけました。サイトは自動的に。しかし、それが続けてきたことの1つは、ファイルをダウンロードまたは保存するようにブラウザを起動させ続けることでした。ファイルはすでに一時フォルダに保存されています。そのブラウザのダイアログを何とか無効にしたいだけです。お知らせ下さい。どんな助けでも本当に感謝しています。 ありがとうitextsharp - ページをPDFに変換し、ダウンロードダイアログを開かずに一時フォルダに自動保存する

HttpContext.Current.Response.Clear(); 
    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=RequestSummaryReport.pdf"); 
    HttpContext.Current.Response.Charset = ""; 
    HttpContext.Current.Response.ContentType = "application/pdf"; 

    StringWriter sw = new StringWriter(); 
    HtmlTextWriter htw = new HtmlTextWriter(sw); 

    iTextSharp.text.Document pdfDocument = new iTextSharp.text.Document(PageSize.A3, 45, 5, 5, 5); 
    //PdfWriter writer = PdfWriter.GetInstance(pdfDocument, Response.OutputStream); 
    PdfWriter writer = PdfWriter.GetInstance(pdfDocument, new FileStream(Server.MapPath("~/temps/") + "mypdf.pdf", FileMode.CreateNew)); 

    pdfDocument.Open(); 

    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); 
    htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); 
    ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); 

    IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(pdfDocument, writer))); 

    XMLWorker worker = new XMLWorker(pipeline, true); 
    XMLParser xmlParse = new XMLParser(true, worker); 

    this.Page.RenderControl(htw); 
    StringReader sr = new StringReader(sw.ToString()); 
    xmlParse.Parse(sr); 
    xmlParse.Flush(); 
    pdfDocument.Close(); 
    //Response.Write(pdfDocument); 
    Response.End(); 
+0

を?返す内容に応じて、Response.ContentTypeを "application/json"または "application/html"ではなく "application/pdf"に変更したい場合があります。また、ヘッダーを変更する必要があります。最初にHttpContextで始まるものすべてを削除してください(最初の4行)。 –

+0

私は@JorgeZuverzaに完全なメソッドの署名があなたの意図を判断するのに役立つことに同意します。 – iCode

+0

より良い質問を書くためのヒント:「おはようございます」(あなたは午後遅くに書きました)、「助言してください」、「どんな助けもありがとう」などを削除してください。テクニカルQ&Aサイトでは、それは実際には逆です。ふわふわした言葉は、雑音を増やして読者の時間を無駄にするため、あまり丁寧ではありません。 –

答えて

1

サーバーに保存しますか?ユーザーに保存を促さずにPDFをブラウザに表示しますか?おそらく、thisの前の投稿からの回答が役に立ちます。ブラウザ(IE、Chrome、Firefox、Safari)によって動作が異なることがあります。使用する場合:

Response.AddHeader("Content-Disposition", "inline;filename=somefile.ext") 

ブラウザはpdfをブラウザに表示しようとします。

次のコード行を削除すると、ブラウザがファイルを保存するプロンプトを表示しないでください。あなたが(署名付き)あなたの完全なメソッドを投稿できる

HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=RequestSummaryReport.pdf"); 
+0

pdfは既にサーバーに保存されています。ページをポップアップしたり、PDFを開こうとはしません。現在、ブラウザに送信して開きます。それは私がしたくないことです。ありがとうございますiCode – user3731575

+0

ブラウザでPDFをレンダリングしたくない場合は、保存プロンプトの原因となっているHttpContext.Response.AddHeaderのコード行を用意する必要はありません。また、コンテンツタイプをapplication/pdfからPDFでないものに変更してください。 – iCode

+0

私はそれをpdfとして保存したいのですが、ブラウザで試してみたいのですが – user3731575

関連する問題