看板 Flash 關於我們 聯絡資訊
// 垂直水平對其中心列印範例 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
hurst05:感謝! 明天回到家再來試試,看來重點在rectrangle 09/19 22:28
hurst05:不過那不是列印範圍嗎? 我的理解錯了? 09/19 22:29