0
私はボタンをクリックすると、pdfのフォームフィールドにテキストを挿入し、埋め込まれたpdfをディレクトリに保存します。私がpdfの編集を終えたら、私はブラウザーでpdfを開きたいが、Process.Start()は動いていない。生成された後すぐにpdfを表示するには良い方法はありますか?iTextSharpでPDFを作成した後にPDFを開こうとしましたが、動作させることができませんでしたか?
private void respondWithFile(string filePath, string remoteFileName)
{
if (!File.Exists(filePath))
throw new FileNotFoundException(
string.Format("Final PDF file '{0}' was not found on disk.",
filePath));
var fi = new FileInfo(filePath);
Response.Clear();
Response.AddHeader("Content-Disposition",
String.Format("attachment; filename=\"{0}\"",
remoteFileName));
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(fi.FullName);
Response.End();
}
:これはASP.NETのタグに従って、あなたはProcess.Start()が、このようなコード例については使用しないでくださいについてですので
protected void btnGenerateQuote_Click(object sender, EventArgs e)
{
string address = txtAddress.Text;
string company = txtCompany.Text;
string outputFilePath = @"C:\Quotes\Quote-" + company + "-.pdf";
PdfReader reader = null;
try
{
reader = new PdfReader(@"C:\Quotes\Quote_Template.pdf");
using (FileStream pdfOutputFile = new FileStream
(outputFilePath, FileMode.Create))
{
PdfStamper formFiller = null;
try
{
formFiller = new PdfStamper(reader, pdfOutputFile);
AcroFields quote_template = formFiller.AcroFields;
//Fill the form
quote_template.SetField("OldAddress", address);
//Flatten - make the text go directly onto the pdf
// and close the form.
//formFiller.FormFlattening = true;
}
finally
{
if (formFiller != null)
{
formFiller.Close();
}
}
}
}
finally
{
reader.Close();
}
//Process.Start(outputFilePath); // does not work
}
より正確なコンテンツタイプの 'application/pdf'は、ブラウザの検出を容易にします。 – devstuff
ありがとうございます。オープンセーブを表示せず、新しいウィンドウでPDFを表示する方法はありますか? – Xaisoft
添付ファイルではなくインラインでコンテンツ処理。 –