Hi there!
I implemented a printing function which is working nice even for multiple pages.
Problem is as follows…
Say we have a text 100 lines long.
Each page can hold 80 lines.
We should have:
Page 1 = from line 1 to line 80
Page 2 = from line 81 to line 100
Instead, I get:
Page 1 = from line 1 to line 80
Page 2 = from line 20 to line 100 !!!
i.e. lines 20 to 80 are printed twice!
I think problem is in maxScroll but can’t find the mistake…
Could you help me find it?
Many thanks in advance.
Best regards,
Gerry
import mx.controls.TextArea;
var printStyles = new TextField.StyleSheet();
printStyles.setStyle("html", {fontFamily:"verdana,sans-serif", fontSize:"12", color:"#336699"});
printing = function () {
myPrintStr = _root.printFld.htmlText;
this.createEmptyMovieClip("mc2", this.getNextHighestDepth());
mc2.createClassObject(TextArea, "text2", mc2.getNextHighestDepth());
mc2._x = 910;
mc2.text2.move(1000, 0);
mc2.text2.setSize(525, 700);
mc2.text2.html = true;
mc2.text2.wordWrap = true;
mc2.text2.styleSheet = printStyles;
mc2.text2.antiAliasType = "advanced";
mc2.text2.text = myPrintStr;
PrintText(mc2.text2);
};
function PrintText(theTextarea:Object) {
theTextarea.depthChild0._alpha = 0;
var visibleRows:Number = theTextarea.viewableRows;
var maxScroll:Number = theTextarea.maxVPosition + visibleRows;
theTextarea.vSB.visible = false;
var the_pj:PrintJob = new PrintJob();
if (the_pj.start()) {
var counter:Number = 0;
if (!isNaN(maxScroll)) {
while (counter < maxScroll) {
theTextarea.vPosition = counter;
counter += visibleRows;
the_pj.addPage(theTextarea, {xMin:-25, xMax:600, yMin:-30, yMax:800}, {printAsBitmap:false});
}
}
else {
the_pj.addPage(theTextarea, {xMin:-25, xMax:600, yMin:-30, yMax:800}, {printAsBitmap:false});
}
the_pj.send();
delete the_pj;
}
theTextarea.vSB.visible = true;
}