ASP.Net MVC 3
我有一个Action,它在导入PDF文档并用水印标记后返回FileStreamResult。由于可能有文件未找到错误,如何返回视图而不是文件流?
使我使用Philip Hutchison的jQuery PDFObject(http://pdfobject.com)调用动作并在DIV中呈现它以使我无法在服务器端重定向。
重申一下:它是页面上的一个jQuery链接,它使用PDF文件流的结果填充DIV。我能想到的唯一“黑客”事情就是发送一个Error.pdf文件。
你的想法?
答案 0 :(得分:0)
我最终创建了一个错误的PDF内存流。
MemoryStream ms = new MemoryStream();
try
{
PdfReader reader = new PdfReader(readerURL);
StampWatermark(WO, ms, reader);
}
catch (Exception ex)
{
RenderErrorPDF(WO, ms, ex);
}
byte[] byteinfo = ms.ToArray();
ms.Write(byteinfo, 0, byteinfo.Length);
ms.Position = 0;
ms.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(ms, "application/pdf");
RenderErrorPDF方法
private static void RenderErrorPDF(WorkOrder WO, MemoryStream ms, Exception ex)
{
BaseFont bfTimes = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1250, false);
var doc = new Document(new Rectangle(792f, 540f));
var wr = PdfWriter.GetInstance(doc, ms);
doc.Open();
doc.Add(new Paragraph("There was an error rendering the file that you requested...", new Font(bfTimes, 24f)));
doc.Add(new Paragraph(string.Format("\r\rFile: {0}", WO.DRAWING_FILE)));
doc.Add(new Paragraph(string.Format("\r\rError: {0}", ex.Message)));
wr.CloseStream = false;
doc.Close();
}