0
我正在研究一個Web應用程序,該程序要求用戶能夠運行報告並自動在客戶機上顯示打印對話框以進行打印。在IFrame內打印PDF後的自動關閉窗口
我得到了所有工作正常。
當用戶點擊一個RDLC LocalReport被生成並返回與iTextSharp的在一個新的窗口/形式的協助和顯示打印對話框的PDF文檔的打印按鈕。
我希望能夠給用戶或者打印後自動關閉窗體或從打印對話框中取消。
的ASPX目前如下(略有精簡版):
<body>
<form id="form1" runat="server">
<div>
<iframe id="frmPrint" name="IframeName" width="500" height="200" runat="server"> </iframe>
</div>
</form>
</body>
在aspx.cs中的代碼:
FileStream LFileStream = new FileStream(HttpContext.Current.Server.MapPath(Session[LReportNameSrcString].ToString()), FileMode.Create);
LFileStream.Write(LResult, 0, LResult.Length);
LFileStream.Close();
//Open existing PDF
Document LDocument = new Document(PageSize.A4);
PdfReader LPdfReader = new PdfReader(HttpContext.Current.Server.MapPath(Session[LReportNameSrcString].ToString()));
//Getting a instance of new PDF writer
PdfWriter LPdfWriter = PdfWriter.GetInstance(LDocument, new FileStream(HttpContext.Current.Server.MapPath(Session[LReportNameString].ToString()), FileMode.Create));
LDocument.Open();
PdfContentByte LPdfContentByte = LPdfWriter.DirectContent;
int LPageNumber = 0;
int LNumberOfPages = LPdfReader.NumberOfPages;
//Add Page to new document
while (LPageNumber < LNumberOfPages)
{
LDocument.NewPage();
LPageNumber++;
PdfImportedPage LPdfImportedPage = LPdfWriter.GetImportedPage(LPdfReader, LPageNumber);
LPdfContentByte.AddTemplate(LPdfImportedPage, LLocalReport.GetDefaultPageSettings().Margins.Left, LLocalReport.GetDefaultPageSettings().Margins.Top);
}
//Attach javascript to the document
//PdfAction LPdfAction = PdfAction.JavaScript("alert('loaded');parent.beginPrint();\r", LPdfWriter);
PdfAction LPdfAction = PdfAction.JavaScript("this.print();\r", LPdfWriter);
LPdfWriter.AddJavaScript(LPdfAction);
LDocument.Close();
//Attach pdf to the iframe
frmPrint.Attributes["src"] = Session[LReportNameString].ToString();
我一直在使用JavaScript來關閉該窗口嘗試了各種方法但迄今爲止不成功。
任何想法將不勝感激。