`

[转]這是一個多分頁打印的類

阅读更多
http://bbs.9ria.com/viewthread.php?tid=101119&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000

package org
{ 
    import flash.display.MovieClip; 
    import flash.printing.PrintJob; 
    import flash.printing.PrintJobOrientation; 
    import flash.display.Stage; 
    import flash.display.Sprite; 
    import flash.text.TextField; 
    import flash.geom.Rectangle; 
        import flash.text.TextFormat;
        /**
         * ...
         * @author vinson
         * 這是一個多分頁打印的類,只有一個公用方法setPrint
         * 以A4紙,12號字體每頁60行字來計算,這樣如果是170行字就會自動打印成三頁內容
         */
    public class PrintMultiplePages extends MovieClip 
    { 
                private var sheetBox:Array;
                private var sheet:Sprite;
        public function PrintMultiplePages():void 
        {
                        init();
        } 
                private function init():void
                {
                        sheetBox=new Array;
                }
                public function setPrint(allStr:String):void
                {
                        var txt:TextField = createText();
            txt.text = allStr;
                        trace(txt.numLines)
                        var limitLine:int = 60;//限制每頁60行
                        var allPages:int= Math.ceil(txt.numLines / limitLine)//總的有幾頁
                        var remainder:int = txt.numLines % limitLine;//最後一頁不是60行而是餘下的行數
                        for (var i:int = 0; i < allPages; i++)
                        {
                                var sheet:Sprite = new Sprite();
                                var tempStr:String="";
                                var tempLine:int = limitLine * i
                                if (i != allPages-1)
                                {
                                        for (var j:int = tempLine; j < tempLine + limitLine;j++)
                                        {
                                                tempStr+= txt.getLineText(j);
                                        }
                                }
                                else
                                {
                                        for (j = tempLine; j < tempLine + remainder-1;j++)
                                        {
                                                tempStr+= txt.getLineText(j);
                                        }
                                        
                                }
                                trace(i,tempStr)
                                createSheet(sheet, tempStr);
                                sheetBox.push(sheet)
                        }
                        
                        printPages();
                }
         private function createSheet(sheet:Sprite, str:String):void 
        { 
            sheet.graphics.beginFill(0xFFFFFF); 
            sheet.graphics.lineStyle(1, 0xFFFFFF); 
            sheet.graphics.drawRect(0, 0, 787, 1092); 
            sheet.graphics.endFill(); 
                        var txt:TextField = createText();
            txt.text = str;
            sheet.addChild(txt);
                        //this.addChild(sheet)
        } 
                private function createText():TextField
                {
                        var txtFormat:TextFormat = new TextFormat;
                        txtFormat.leftMargin = 2;
                        txtFormat.rightMargin = 60;
                        
            var txt:TextField = new TextField();
                        txt.defaultTextFormat = txtFormat;
                        txt.wordWrap = true; 
                        txt.multiline = true;
            txt.height = 1090; 
            txt.width = 650;
                        return txt;
                }
        private function printPages():void 
        { 
            var pj:PrintJob = new PrintJob(); 
            var pagesToPrint:uint = 0; 
            if (pj.start()) 
            { 
                if (pj.orientation == PrintJobOrientation.LANDSCAPE) 
                { 
                    throw new Error("Page is not set to an orientation of portrait."); 
                } 
                                for (var i:int = 0; i < sheetBox.length; i++)
                                {
                                        var sheet:Sprite=sheetBox[i]
                                        try 
                                        { 
                                                pj.addPage(sheet); 
                                                pagesToPrint++; 
                                        } 
                                        catch (error:Error) 
                                        { 
                                                // Respond to error. 
                                        }
                                }
                if (pagesToPrint > 0) 
                { 
                    pj.send(); 
                } 
            } 
        } 
    } 
}
分享到:
评论

相关推荐

    Qt表格分页打印

    在实现表格分页打印之前,需要创建一个数据模型,通常是QStandardItemModel或QAbstractTableModel的子类,来存储表格数据。这些模型类提供了与视图(如QTableView)交互的方法,并且可以支持表格的分页显示。 分页...

    分页打印gridview

    分页打印的核心在于将大量数据切割成多个部分(页面),然后逐个打印。在C#中,这通常通过以下步骤实现: 1. **数据准备**:确保数据源已经加载到DataGridView中,可以是数据库查询结果、CSV文件或任何其他数据结构...

    vc分页多页打印

    在实际项目中,尤其是涉及到报表、文档或者数据展示时,分页打印是一个重要的需求,它能让用户将大量内容有序地输出到纸上。 分页打印通常涉及到以下几个关键知识点: 1. **图形设备接口(GDI)**:VC++中,GDI是...

    jqprint可分页打印页面内容

    "jqPrint" 是一个基于jQuery的插件,它允许开发者方便地实现页面内容的分页打印功能,无需复杂的CSS调整或JavaScript编程。在本篇中,我们将深入探讨如何使用jqPrint实现这一目标,以及涉及到的相关技术。 首先,...

    VUE打印demo,自动分页

    在这个项目中,我们可能会看到一个专门用于打印的Vue组件,它负责处理打印相关的逻辑。 自动分页通常涉及到页面布局和CSS。CSS的`@media print`规则可以用来定义打印样式,例如隐藏不必要的元素,调整页面边距,...

    C#打印操作实例--实现分页打印操作源码

    以下是一个简单的Windows Forms分页打印的代码示例: ```csharp public class CustomPrintDocument : PrintDocument { protected override void OnPrintPage(PrintPageEventArgs e) { // 在这里计算并绘制当前...

    lodop 批量分页打印插件

    lodop批量分页打印实现,方便省事快速,解决bs系统难题。

    C#打印操作实例--实现分页打印操作源码(十分经典)

    本文将深入讲解C#中的打印API,以及如何利用这些API来创建一个能够进行分页打印的源码实例。 C#提供了一个名为`System.Drawing.Printing`的命名空间,其中包含了许多用于控制打印机的类和方法。主要涉及的类有`...

    C# Winform Datagridview 分页和打印功能.pdf

    PrintDocument类具有一个PrintPage事件,开发者可以在这个事件中定义打印页的具体内容,实现自定义打印。例如,可以编写一个方法,根据DataGridView的当前页数据生成打印内容,然后在PrintPage事件处理器中调用此...

    包括打印预览和分页打印

    在“PreviewDemo”这个项目中,我们可以推测它包含了一个C++源代码示例,展示了如何实现打印预览和分页打印。可能包含的文件有头文件(.h)、源文件(.cpp)、资源文件(.rc)以及可能的配置文件。通过阅读和分析...

    C++打印PDF文件分页打印等功能 具体请看博客

    分页打印是PDF打印的一个重要特性,特别是在处理大型文档时。在C++中,可以通过遍历PDF文件的每一页,并分别发送到打印机进行单独打印。这通常需要对PDF页面的索引有深入的理解,以及正确使用API函数来指定打印的...

    Excel表格如何分页打印、自动分页、取消分页等技巧

    但是,许多用户在使用Excel表格时,仍然存在一些难题,例如如何将多个表格分页打印到每一张纸上面,每张纸上面只打印一个表格。下面我们将为大家详细介绍Excel表格如何分页打印、自动分页、取消分页等技巧。 手动...

    VC++实现分页打印_liehsp_Vc_VC打印_

    本资源“VC++实现分页打印”提供了一个简单的源代码示例,帮助开发者理解如何在VC++中利用MFC(Microsoft Foundation Classes)框架进行分页打印。 首先,我们要了解MFC中的CView类,它是视图类的基类,通常与...

    JS 实现web分页打印功能

    本篇将详细介绍如何利用JS的`Window`对象的`print()`方法来实现一个具有强大兼容性的分页打印功能。 首先,`Window.print()`方法是JavaScript中用于调用浏览器内置的打印对话框的函数,用户可以在该对话框中选择...

    QuickReport 分页打印演示

    总的来说,这个“QuickReport 分页打印演示”提供了一个实践教程,涵盖了 Delphi 中使用 QuickReport 设计、连接数据库、处理数据分页以及生成打印输出的关键步骤。开发者可以通过分析和运行这个示例,学习如何在...

    网页报表表格自动分页打印 超好

    网页报表表格自动分页打印是网页设计中一个重要的技术环节,尤其在处理大量数据时,确保表格内容在A4纸上整洁、美观地呈现是至关重要的。网页表格默认的打印方式可能会导致内容在不同页面间断开,这不仅影响阅读体验...

    wpf分页打印打印(使用printDialog.PrintDocument打印flowDocument文档)第一版本

    wpf分页打印打印(使用printDialog.PrintDocument打印flowDocument流文档)第一版本。以后功能完善了更新第二版本。 使用此方法打印:printDialog.PrintDocument(((IDocumentPaginatorSource)flowDocument)....

    asp完美打印组件 支持打印预览 打印分页等许多强大功能

    所有这些特性使得ASP完美打印组件不仅仅是一个简单的打印工具,而是一个功能全面的解决方案。 为了使用这个组件,开发者通常需要将jatoolsPrinter.cab文件上传到服务器,并在ASP代码中引用。readme.txt文件则包含了...

    Winform分页打印

    在Windows桌面应用开发中,`Winform`是一个常用的框架,用于构建用户界面。当你需要处理大量数据并希望在用户界面上...通过以上步骤,你可以为新手提供一个基础的分页打印解决方案,帮助他们理解和实践这一常见功能。

    js控制分页打印、打印分页示例

    代码如下: &lt;&#37;... charset=UTF-8″ pageEncoding=”UTF-8″%&gt; &lt;!... &lt;HEAD&gt;...javascript打印-打印页面设置-打印预览代码&lt;/TITLE&gt; &lt;META http-equiv=Content-Type content=”text/html

Global site tag (gtag.js) - Google Analytics