i m using C#.
with this syntax Response.AppendHeader("REFRESH", "2;URL=../Ordres.aspx"); work on Firefox and Chrome
using (MemoryStream ms = new MemoryStream())
{
try
{
PdfExportOptions opts = new PdfExportOptions();
opts.ShowPrintDialogOnOpen = true;
xtraReport_Pricipal.ExportToPdf(ms, opts);
ms.Seek(0, SeekOrigin.Begin);
byte[] report = ms.ToArray();
Page.Response.ContentType = "application/pdf";
Page.Response.Clear();
Page.Response.OutputStream.Write(report, 0, report.Length);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
finally
{
ms.Close();
}
}
Response.AppendHeader("REFRESH", "2;URL=../Ordres.aspx");
but not on Internet explorer. how can i redirect the page after 2 sec on IE ?
Thanks in advance
use
response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}", fileName));
Related
I am working on export functionality using PDFsharp in .Net MVC I am not getting any error in my code but not getting PDF file in response.
I have tried doing it manually writing it to specific path with the help of : System.IO.File.WriteAllBytes(path1, bytes); and it's working perfectly, but I am not getting PDF in Response with the help of
Response.BinaryWrite(bytes);
Response.OutputStream.Write(bytes, 0, bytes.Length);
Anyone have faced this type of issue or someone from community please help
Here is my code :
public bool ExportPdf(string htmlcontenttbl)
{
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition",
"attachment;filename=Myfile.pdf");
Response.ContentType = "application/pdf";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
PdfDocument document =
PdfGenerator.GeneratePdf(htmlcontenttbl.ToString(), PdfSharp.PageSize.A4,
30);
var config = new PdfGenerateConfig();
config.PageOrientation = PageOrientation.Landscape;
config.PageSize = PageSize.A4;
config.MarginBottom = 30;
config.MarginTop = 30;
byte[] bytes = null;
using (MemoryStream stream = new MemoryStream())
{
document.Save(stream, true);
bytes = stream.ToArray();
}
var path1 = Server.MapPath("~/Images/" +
DateTime.Now.TimeOfDay.Ticks + "result.pdf");
//System.IO.File.WriteAllBytes(path1, bytes);
//Response.BinaryWrite(bytes);
//Response.OutputStream.Write(bytes, 0, bytes.Length);
Response.Flush();
Response.End();
return true;
}
thank you,
I have a aspx page in window. Now i want to close it from cs code:
string result = #"<script type='text/javascript'>
window.returnValue = true;
window.close();
</script>";
Response.Write(result);
It's work fine.
Now i want to save a file and then close a window. And my code from above not work. I get a save file dialog, save a fine, but my window not close.
What i should do in this case?
SAVE FILE CODE
File.WriteAllBytes(docFileName, documentStream.ToArray());
fi = new FileInfo(docFileName);
if (fi.Exists)
{
byte[] buffer;
using (FileStream fileStream = new FileStream(docFileName, FileMode.Open))
{
int fileSize = (int)fileStream.Length;
buffer = new byte[fileSize];
// Read file into buffer
fileStream.Read(buffer, 0, fileSize);
fileStream.Close();
fi.Delete();
}
Response.Clear();
Response.Buffer = true;
Response.BufferOutput = true;
Response.ContentType = "application/x-download";
Response.AddHeader("Content-Disposition", "attachment; filename=" + docFileName);
Response.CacheControl = "public";
// writes buffer to OutputStream
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.End();
You cannot close the window like that.
You can only close the windows that was created by the script.
Note: I have solved the problem myself. See the below answer.
I'm using ZipStorer to zip files in ASP.NET C# 4.0 WebForm.
After I created the Zip in MemoryStream and transmitted it using httpResponse, the client user was unable to open the file as a Zip File.
Any tips? Thanks.
Below is my code:
string text = GetLongText();
byte[] ba = Encoding.UTF8.GetBytes(text);
using (MemoryStream ms = new MemoryStream())
{
using (ZipStorer zip = ZipStorer.Create(ms, "My Zip File"))
{
zip.AddStream(ZipStorer.Compression.Deflate, "MyText.txt", new MemoryStream(ba), DateTime.Now, "My Text");
Response.Clear();
Response.AppendHeader("content-disposition", "attachment; filename=MyZip.zip");
Response.ContentType = "application/zip";
ms.WriteTo(Response.OutputStream);
Response.End();
}
}
I have solve the problem myself. Below is the codes:
string text = GetLongText();
byte[] ba = Encoding.UTF8.GetBytes(text);
using (MemoryStream ms = new MemoryStream())
{
using (ZipStorer zip = ZipStorer.Create(ms, "My Zip"))
{
zip.AddStream(ZipStorer.Compression.Deflate, "text.txt", new MemoryStream(ba), DateTime.Now, "My Text");
}
Response.AppendHeader("content-disposition", "attachment; filename=MyZip.zip");
Response.ContentType = "application/zip";
Response.BinaryWrite(ms.ToArray());
Response.End();
}
}
I want to edit and existing pdf and to send the result to the broswer
Here is my methode:
public static byte[] Generate()
{
var templatePath = HttpContext.Current.Server.MapPath("~/my_template.pdf");
// Based on:
// http://www.johnnycode.com/blog/2010/03/05/using-a-template-to-programmatically-create-pdfs-with-c-and-itextsharp/
var reader = new PdfReader(templatePath);
var outStream = new MemoryStream();
var stamper = new PdfStamper(reader, outStream);
var form = stamper.AcroFields;
var fieldKeys = form.Fields.Keys;
foreach (string fieldKey in fieldKeys)
{
if (form.GetField(fieldKey) == "MyTemplatesOriginalTextFieldA")
form.SetField(fieldKey, "1234");
if (form.GetField(fieldKey) == "MyTemplatesOriginalTextFieldB")
form.SetField(fieldKey, "5678");
}
// "Flatten" the form so it wont be editable/usable anymore
stamper.FormFlattening = true;
stamper.Close();
reader.Close();
return outStream.ToArray();
}
and
The method call
byte[] buffer = Generate();
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", buffer.Length.ToString());
Response.BinaryWrite(buffer);
Can someone help me in this case ?
Add this line
byte[] buffer = Generate();
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", buffer.Length.ToString());
Response.AppendHeader("Content-Disposition", "attachment; filename=youPDFName.pdf");
Response.BinaryWrite(buffer);
Response.End();
I have added Content-Disposition and response.end in code.
tested above code , work fine. let me know if it works you.
Hei guys I have this byte array i want to convert to pdf and make it available for download. Anybody has any idea how this is done?
here is my Action Controller
public ActionResult DownloadLabTestResult(string labTestResultID)
{
PdfReader pdfReader = new PdfReader("Xue_Tang.pdf");
MemoryStream stream = new MemoryStream();
PdfStamper stamper = new PdfStamper(pdfReader, stream);
pdfReader.Close();
stamper.Close();
stream.Flush();
stream.Close();
byte[] pdfByte = stream.ToArray();
// So i got the byte array of the original pdf at this point. Now how do i convert this
// byte array to a downloadable pdf? i tried the method below but to no avail.
MemoryStream ms = new MemoryStream(pdfByte);
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=labtest.pdf");
Response.Buffer = true;
Response.Clear();
Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
Response.OutputStream.Flush();
Response.End();
return new FileStreamResult(Response.OutputStream, "application/pdf");
}
I am using similar code with a few differences:
Response.Clear();
MemoryStream ms = new MemoryStream(pdfByte);
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=labtest.pdf");
Response.Buffer = true;
ms.WriteTo(Response.OutputStream);
Response.End();
Call Reponse.Clear() earlier.
Use MemoryStream.WriteTo to write to Response.OutputStream.
Edit: sorry, I didn't see that you are using ASP.NET MVC, the above code is in a WebForms aspx page.
For ASP.NET MVC, couldn't you just do
return new FileStreamResult(ms, "application/pdf");
?