作者ticore ({id:"Ticore"};//)
看板Flash
标题Re: [问题] printjob排版问题
时间Wed Sep 19 14:09:59 2012
// 垂直水平对其中心列印范例
package {
import flash.display.Sprite;
import flash.geom.Rectangle;
import flash.printing.PrintJob;
import flash.text.TextField;
[SWF(width="300", height="200")]
public class AS3PrintJob extends Sprite {
public function AS3PrintJob() {
var printJob:PrintJob = new PrintJob();
if (printJob.start()) {
trace(printJob.orientation);
trace("page size:", printJob.pageWidth, printJob.pageHeight);
trace("paper size:", printJob.paperWidth, printJob.paperHeight);
try {
// 准备 Page 内容
var pageContainer:Sprite = new Sprite();
var pageSp:Sprite = new Sprite();
var txt:TextField = new TextField();
pageSp.addChild(txt);
pageContainer.addChild(pageSp);
txt.autoSize = "left";
txt.text = "TextField";
txt.x = (400 - txt.width) / 2;
txt.y = (400 - txt.height) / 2;
pageSp.graphics.lineStyle(3, 0x0);
pageSp.graphics.drawRect(0, 0, 400, 400);
// 缩放 Page 内容
pageSp.scaleX = pageSp.scaleY = 0.5;
// 计算 Print Page 与 Page 内容尺寸
var area:Rectangle = pageContainer.getRect(pageContainer);
var marginV:Number = (printJob.pageHeight - area.height) / 2;
var marginH:Number = (printJob.pageWidth - area.width) / 2;
// Page 内容垂直水平对其中心
area.x = -marginH;
area.y = -marginV;
area.width = printJob.pageWidth;
area.height = printJob.pageHeight;
trace("page size:", printJob.pageWidth, printJob.pageHeight);
trace("paper size:", printJob.paperWidth, printJob.paperHeight);
trace(area);
printJob.addPage(pageContainer, area);
} catch (e:Error) {
trace(e.getStackTrace());
}
printJob.send();
}
}
}
}
※ 引述《hurst05 ()》之铭言:
: 请问大家~
: 用 flash 的printjob,或是flex的flexprintjob
: 都可以做到缩放、设定列印范围等的功能
: 但那一页总是从(0,0)这位置开始算,也就是他的排版方式
: 假设我要写一行字,印在整张A4的中间
: 这样有办法能做到吗? 因为我用addPage或是addObject的物件
: 如果是呈现在画面上是可以排版,但一放进去就是从左上方计算
: 请各位帮帮忙,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.147.239.66
1F:推 hurst05:感谢! 明天回到家再来试试,看来重点在rectrangle 09/19 22:28
2F:→ hurst05:不过那不是列印范围吗? 我的理解错了? 09/19 22:29