从网站打印信封?

时间:2009-05-01 22:12:40

标签: c#

我想使用c#从网页打印标准大小的信封。有谁知道怎么做这样的事情?我会从系统加载地址的数据并传递它。我只需要这样做的基本步骤。

4 个答案:

答案 0 :(得分:2)

我最终得到的是PDF。我们使用PDFSharp,它是.NET的免费PDF创建工具。我使用此处的函数动态创建PDF,然后在页面上我将此页面作为新窗口加载。这是我最终为想要做类似事情的人创建的方法。

protected void DisplayPDFEnvelope()
    {
        try
        {
            PdfDocument document = new PdfDocument();
            PdfPage pdfpage = new PdfPage();

            XUnit pdfWidth = new XUnit(4.125, XGraphicsUnit.Inch);
            XUnit pdfHeight = new XUnit(9.5, XGraphicsUnit.Inch);
            pdfpage.Height = pdfHeight;
            pdfpage.Width = pdfWidth;

            pdfpage.Orientation = PageOrientation.Landscape;

            XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);

            document.AddPage(pdfpage);

            // Create a font
            XFont font = new XFont("ARIAL", 1, XFontStyle.Regular, options);

            // Get an XGraphics object for drawing beneath the existing content
            XGraphics gfx = XGraphics.FromPdfPage(pdfpage, XGraphicsPdfPageOptions.Append);

            // This method just returns a formatted address from the DB using \n to
            // do line breaks, i.e. 'Test Person\nAddress Line1\City, State Zip'
            string address = GetAddress();

            // Get the size (in point) of the text
            XSize size = gfx.MeasureString(address, font);

            // Create a graphical path
            XGraphicsPath path = new XGraphicsPath();

            path.AddString(address, font.FontFamily, XFontStyle.Regular, 10,
              new XPoint(345, 160), XStringFormats.Default);

            // Create a dimmed pen and brush
            XPen pen = new XPen(XColor.FromGrayScale(0), 0); // XColor.FromArgb(50, 75, 0, 130), 3);
            XBrush brush = new XSolidBrush();   // XColor.FromArgb(50, 106, 90, 205));

            // Stroke the outline of the path
            gfx.DrawPath(pen, brush, path);

            MemoryStream stream = new MemoryStream();
            document.Save(stream, false);

            Page.Response.Clear();
            Page.Response.ContentType = "application/pdf";
            Page.Response.AppendHeader("Content-Length", stream.Length.ToString());
            Page.Response.AppendHeader("Content-Type", "application/pdf");
            Page.Response.AppendHeader("Content-Disposition", "inline;filename=envelope.pdf");
            Page.Response.BinaryWrite(stream.ToArray());
            Page.Response.Flush();
            stream.Close();
            HttpContext.Current.ApplicationInstance.CompleteRequest();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

答案 1 :(得分:1)

理论上你可以使用css http://www.w3.org/TR/css-print/来做到这一点。根据您需要支持的浏览器数量,它可能是一条很大的痛苦之路,因为它们的工作方式略有不同。

您可能会遇到一些与页面大小和方向有关的问题,因为您的用户可能会使用许多不同的打印机。从flash,pdf或silverlight 3打印可能是最简单的选择。

答案 2 :(得分:0)

您必须使用activex才能这样做。

这可能会有所帮助 http://www.sharewareconnection.com/print-preview-activex-control.htm

答案 3 :(得分:0)

您可以从this site打印信封。

它添加条形码和一切。从网上打印。