« PreviousNext »

Entry

ActionScript備忘録(AS2):
mcを複数ページに分けて印刷するには?

C社案件にてFlashで印刷機能を使ったコンテンツをやることになったので、ちょっと調べてみました。

画面上に"printBtn"というインスタンス名のボタンを配置し、そいつをクリックすることにより、"printoutSheet"というインスタンス名のmcを3ページに分けて印刷するとします。

そのような場合、下のような感じでできるようです。相変わらずas2ですが、as3でも一部をちょこっと変えるだけで、使えちゃうと思います。多分。

印刷に関するメソッドには、print()というのと、printAsBitmap() があるそうで、前者がベクター情報として印刷する場合、後者がビットマップ情報として印刷する場合に使うのだそうです。印刷するmcがどんなものかで使い分ける必要がありそうです。

また、A4縦で1ページに収まる範囲は、おおよそ縦:840pixel×横:600pixelのようですが、下記のままだと余白なしで、しかも横方向に関しては600pixelを超えた場合、印刷範囲に含まれません。余白の設定などもきちんとしたいのですが、その辺はまだ勉強中。

printBtn.onRelease = function() {
  var my_pj:PrintJob = new PrintJob();
  if (my_pj.start()) {
  //各印刷範囲の矩形を設定
    var p1:Object = {
      xMin:0,
      xMax:printoutSheet._width,
      yMin:0,
      yMax:840
    };
    var p2:Object = {
      xMin:0,
      xMax:printoutSheet._width,
      yMin:840*1,
      yMax:840*2
    };
    var p3:Object = {
      xMin:0,
      xMax:printoutSheet._width,
      yMin:840*3,
      yMax:840*4
    };
    
    //プリントされるページのカウント
    var pagesToPrint:Number = 0;
    
    if (my_pj.orientation == PrintJobOrientation.LANDSCAPE) {
      throw new Error("プリントジョブが作成されませんでした。");
    }
    
    try {
      my_pj.addPage(printoutSheet, p1, {print: true});
      pagesToPrint++;
    } catch (error:Error) {
      trace(" " + error.message);
    }
    try {
      my_pj.addPage(printoutSheet, p2, {print: true});
      pagesToPrint++;
    } catch (error:Error) {
      trace(" " + error.message);
    }
    try {
      my_pj.addPage(printoutSheet, p3, {print: true});
      pagesToPrint++;
    } catch (error:Error) {
      trace(" " + error.message);
    }
    
    if (pagesToPrint > 0) {
      my_pj.send();
    }
  }
  delete my_pj;
}

Page Top

« PreviousNext »