http://hi.baidu.com/surfhits/blog/item/95b956825b4199a20df4d2e0.html

解决方案 »

  1.   


    FastReport Studio 3--------------------------------------------------------
    TABLE OF CONTENTS1. Introduction
    2. Capabilities
    3. Related documents
    4. Developers’ contact information--------------------------------------------------------1. INTRODUCTIONFastReport Studio is an powerful, compact and flexible environment for giving your application the ability to generate reports quickly and efficiently. FastReport Studio provides all the tools you need to develop reports. It includes report engine, report designer, preview, dialog window designer, and four macro interpreters - Basic (VB) style, C++ style, JS style and Pascal style. The package contains the FastReport COM-server, standalone designer and source code examples for Microsoft Visual C++, Microsoft Visual C# .NET, Microsoft Visual Basic .NET, Microsoft ASP.NET, Microsoft FoxPro.Set of the product pack:• COM server;
    • Designer;
    • Configuration utility;
    • Scheduler service;
    • Demo reports;
    • Demo database;
    • Documentation pack;
    • Sources of the demo examples for following development environments:
    1. Microsoft Visual C++;
    2. Microsoft Visual C# .NET;
    3. Microsoft Visual Basic .NET;
    4. Microsoft Visual FoxPro;
    5. Microsoft Access;
    6. Microsoft Excel.FastReport Studio constantly develops and regularly finds new features. --------------------------------------------------------
    2. CAPABILITIESCommon features
    • Powerful, compact and flexible environment for creating reports;
    • Compatible with various development environments, which supports COM model (Microsoft Visual C++, Microsoft CSharp.NET, Microsoft Visual Fox Pro, Microsoft Access, Microsoft Visual Basic, Borland Delphi, and so on);
    • Includes set of resources for 27 languages.Data sources
    • Microsoft ADO engine;
    • Data supplied by application;
    • Data generated by built-in script.Supported report types and data processing
    • Free-form;
    • Simple list;
    • Multilevel groups;
    • Multilevel master-detail;
    • Multicolumn;
    • Cross-tabs;
    • Charts;
    • Labels;
    • Nested reports (sub-reports);
    • Special dot-matrix reports to print on dot-matrix printers;
    • Interactive (dialogs, hyperlinks, etc);
    • All of above in any combination.Preview, print, and export
    • Friendly WYSIWYG interface;
    • Multi-page, continuous, side-by-side previews;
    • Outline support;
    • Search text in preview window;
    • Edit report in preview window;
    • Print on any local and network printers, including dot-matrix printers;
    • Export in PDF, RTF, Microsoft Excel, XML, HTML, JPEG, BMP, TIFF, plain text, and CSV formats;
    • Sending the report by e-mail in any supported format. 
    Report design
    • Built-in report designer with customizable interface;
    • In-place editing, zooming, rulers, guides and undo/redo;
    • Three types of grid: centimeters, inches, pixels;
    • Script editor with syntax highlight;
    • Script debugger;
    • Wizards for base type reports;Advanced features
    • Rich set of add-in objects: text, image, barcode, shape, line, chart, rich text, OLE object,
    • gradient, checkbox;
    • Full-featured Text object (paragraphs, text alignment, char spacing, line spacing, text
    • rotation, Unicode, HTML tags);
    • Various fill types and shadow;
    • Build-in dialog designer allows you to create dialogs with standard set of wincontrols:
    • label, edit, memo, button, checkbox, radiobutton, listbox, combobox, dateedit, etc;
    • Built-in script languages: PascalScript, C++Script, BasicScript and JScript;
    • Access to base classes, report objects, controls and forms from a script;
    • Storing reports in XML or compressed XML formats;
    • Possible to perform FastReport engine from the command line;
    • Scheduler service (you can schedule your report and receive it by e-mail);
    • Advanced configuration utility.
    --------------------------------------------------------3. DEVELOPERS’ CONTACT INFORMATIONFast Reports Inc. 
    e-mail:     <[email protected]>
    web site:  <http://www.fast-report.com>
      

  2.   

    打印api???lz是不是以前搞java刚学.net?
    参考PrintDocumentl类
      

  3.   

    PrintDocument怎样获取打印页数以及打印失败后的报错信息
      

  4.   

    可能晚了点。
    调用PrintDocument方法的Print方法后,每打印一页都回触发PrintPage事件,这个事件的参数是PrintPageEventArgs,该参数的HasMorePages设置为false可以结束打印,设置为true将继续触发PrintPage事件。
    下边是msdn中的例子:下面的代码示例将文档的页面方向设置为横向,并打印该文档。在此示例中使用 System.Drawing、System.Drawing.Printing 和 System.IO 命名空间。Visual Basic  复制代码 
    Public Class PrintingExample
        Inherits System.Windows.Forms.Form
        Private components As System.ComponentModel.Container
        Private printButton As System.Windows.Forms.Button
        Private printFont As Font
        Private streamToPrint As StreamReader
        
        Public Sub New()
            ' The Windows Forms Designer requires the following call.
            InitializeComponent()
        End Sub    
        
        ' The Click event is raised when the user clicks the Print button.
        Private Sub printButton_Click(sender As Object, e As EventArgs)
            Try
                streamToPrint = New StreamReader("C:\My Documents\MyFile.txt")
                Try
                    printFont = New Font("Arial", 10)
                    Dim pd As New PrintDocument()
                    AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
                    pd.Print()
                Finally
                    streamToPrint.Close()
                End Try
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub    
        
        ' The PrintPage event is raised for each page to be printed.
        Private Sub pd_PrintPage(sender As Object, ev As PrintPageEventArgs)
            Dim linesPerPage As Single = 0
            Dim yPos As Single = 0
            Dim count As Integer = 0
            Dim leftMargin As Single = ev.MarginBounds.Left
            Dim topMargin As Single = ev.MarginBounds.Top
            Dim line As String = Nothing
            
            ' Calculate the number of lines per page.
            linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)
            
            ' Print each line of the file.
            While count < linesPerPage
                line = streamToPrint.ReadLine()
                If line Is Nothing Then
                    Exit While
                End If      
                yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
                ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat())
                count += 1
            End While
            
            ' If more lines exist, print another page.
            If Not (line Is Nothing) Then
                ev.HasMorePages = True
            Else
                ev.HasMorePages = False
            End If
        End Sub
         
        
        ' The Windows Forms Designer requires the following procedure.
        Private Sub InitializeComponent()
            Me.components = New System.ComponentModel.Container()
            Me.printButton = New System.Windows.Forms.Button()
            
            Me.ClientSize = New System.Drawing.Size(504, 381)
            Me.Text = "Print Example"
            
            printButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
            printButton.Location = New System.Drawing.Point(32, 110)
            printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
            printButton.TabIndex = 0
            printButton.Text = "Print the file."
            printButton.Size = New System.Drawing.Size(136, 40)
            AddHandler printButton.Click, AddressOf printButton_Click
            
            Me.Controls.Add(printButton)
        End Sub     ' This is the main entry point for the application.    
        Public Shared Sub Main()
            Application.Run(New PrintingExample())
        End SubEnd Class
     
    C#  复制代码 
    public class PrintingExample : System.Windows.Forms.Form 
    {
        private System.ComponentModel.Container components;
        private System.Windows.Forms.Button printButton;
        private Font printFont;
        private StreamReader streamToPrint;   public PrintingExample() : base() 
       {
          // The Windows Forms Designer requires the following call.
          InitializeComponent();
       }   // The Click event is raised when the user clicks the Print button.
       private void printButton_Click(object sender, EventArgs e) 
       {
          try 
          {
              streamToPrint = new StreamReader
                 ("C:\\My Documents\\MyFile.txt");
              try 
              {
                 printFont = new Font("Arial", 10);
                 PrintDocument pd = new PrintDocument();
                 pd.PrintPage += new PrintPageEventHandler
                    (this.pd_PrintPage);
                 pd.Print();
              }  
              finally 
              {
                 streamToPrint.Close();
              }
          }  
          catch(Exception ex) 
          {
              MessageBox.Show(ex.Message);
          }
       }   // The PrintPage event is raised for each page to be printed.
       private void pd_PrintPage(object sender, PrintPageEventArgs ev) 
       {
          float linesPerPage = 0;
          float yPos = 0;
          int count = 0;
          float leftMargin = ev.MarginBounds.Left;
          float topMargin = ev.MarginBounds.Top;
          string line = null;      // Calculate the number of lines per page.
          linesPerPage = ev.MarginBounds.Height / 
             printFont.GetHeight(ev.Graphics);      // Print each line of the file.
          while(count < linesPerPage && 
             ((line=streamToPrint.ReadLine()) != null)) 
          {
             yPos = topMargin + (count * 
                printFont.GetHeight(ev.Graphics));
             ev.Graphics.DrawString(line, printFont, Brushes.Black, 
                leftMargin, yPos, new StringFormat());
             count++;
          }      // If more lines exist, print another page.
          if(line != null)
             ev.HasMorePages = true;
          else
             ev.HasMorePages = false;
       }
       // The Windows Forms Designer requires the following procedure.
       private void InitializeComponent() 
       {
          this.components = new System.ComponentModel.Container();
          this.printButton = new System.Windows.Forms.Button();      this.ClientSize = new System.Drawing.Size(504, 381);
          this.Text = "Print Example";      printButton.ImageAlign = 
             System.Drawing.ContentAlignment.MiddleLeft;
          printButton.Location = new System.Drawing.Point(32, 110);
          printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
          printButton.TabIndex = 0;
          printButton.Text = "Print the file.";
          printButton.Size = new System.Drawing.Size(136, 40);
          printButton.Click += new System.EventHandler(printButton_Click);      this.Controls.Add(printButton);
       }   // This is the main entry point for the application.
       public static void Main(string[] args) 
       {
          Application.Run(new PrintingExample());
       }