Re: [問題] printjob排版問題
// 垂直水平對其中心列印範例
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
推
09/19 22:28, , 1F
09/19 22:28, 1F
→
09/19 22:29, , 2F
09/19 22:29, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章