我有一個Web應用程序,當用戶單擊某個按鈕時,它將打印一個.rdlc直接打印到打印機而不打印對話框。當我在本地運行它時工作正常,但是當我將其上傳到Intranet時根本無法工作。有人可以解釋如何在內部網上做這項工作嗎?如何在ASP.net中打印.rdlc時點擊按鈕
UPDATE
private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
{
Stream stream = new MemoryStream();
m_streams.Add(stream);
return stream;
}
private void Export(LocalReport report)
{
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>EMF</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>11in</PageHeight>" +
" <MarginTop>0.25in</MarginTop>" +
" <MarginLeft>0.25in</MarginLeft>" +
" <MarginRight>0.25in</MarginRight>" +
" <MarginBottom>0.25in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("Image", deviceInfo, CreateStream, out warnings);
foreach (Stream stream in m_streams)
{
stream.Position = 0;
}
}
private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new Metafile(m_streams[currentPageIndex]);
ev.Graphics.DrawImage(pageImage,ev.PageBounds);
currentPageIndex++;
ev.HasMorePages = (currentPageIndex < m_streams.Count);
}
private void Print_Ticket()
{
const string printerName = "HPLaser"
if (m_streams == null || m_streams.Count == 0)
return;
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings.PrinterName = printerName;
if (!printDoc.PrinterSettings.IsValid)
{
string msg = String.Format("Can't find printer \"{0}\".", printerName);
Console.WriteLine(msg);
return;
}
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
printDoc.Print(); //Prints Document
}
public void WriteTicket(string ticket_number, string queue)
{
LocalReport report = new LocalReport();
//Displays ticket letter and number in ticket
report.ReportPath = "PrintTicket.rdlc";
ReportParameter ticket_parameter = new ReportParameter();
ticket_parameter.Name = "Ticket";
ticket_parameter.Values.Add(ticket_number);
report.SetParameters(new ReportParameter[] { ticket_parameter });
//Displays date and time in ticket
ReportParameter date = new ReportParameter();
date.Name = "Date_Time";
date.Values.Add(System.DateTime.Now.ToString());
report.SetParameters(new ReportParameter[] { date });
//Displays branch location in ticket
ReportParameter location_parameter = new ReportParameter();
location_parameter.Name = "Location";
location_parameter.Values.Add(queue);
report.SetParameters(new ReportParameter[] { location_parameter });
Export(report);
currentPageIndex = 0;
Print_Ticket();
}
//Clears stream
public new void Dispose()
{
if (m_streams != null)
{
foreach (Stream stream in m_streams)
stream.Close();
}
}
這是「ReportViewer」控件或其他按鈕的打印按鈕嗎?看起來像它的自定義打印權? – MisterIsaak
yes是自定義打印。它是我在頁面上創建的一個按鈕。 – Apollo
@ bastos.sergio代碼已發佈。就像我說的這個代碼工作正常,打印罰款時,它在本地啓動。當我上傳到服務器時,它不打印。 – Apollo