代码之家  ›  专栏  ›  技术社区  ›  WillDonohoe

PrintJob仅打印背景色

  •  0
  • WillDonohoe  · 技术社区  · 14 年前

    基本上,我已经创建了一个print类,其中包含了打印sprite的所有打印作业代码,但是当我打印它时,我创建的sprite就像一个遮罩,sprite图形应该填充的区域是我的背景色。

    例如,我的100x100黑色雪碧在预览中如下所示: http://www.willdonohoe.com/examples/print_job_fail.png

    当我将图像缩放到打印宽度和高度的宽度和高度时,很明显,我的页面充满了紫色。

    总之,这是我的密码:

    public function print():void {
    
     //bitmap_to_print.smoothing = true;
    
     var print_page:Sprite = new Sprite();
     var sp:Sprite = new Sprite();
     sp.graphics.beginFill(0x000000, 1);
     sp.graphics.drawRect(0, 0, 100, 100);
     sp.graphics.endFill();
     print_page.addChild(sp);
    
     var print_job:PrintJob = new PrintJob();
     addChild(print_page);
    
     if (print_job.start()) {
    
       trace(">> pj.orientation: " + print_job.orientation);
       trace(">> pj.pageWidth: " + print_job.pageWidth);
              trace(">> pj.pageHeight: " + print_job.pageHeight);
              trace(">> pj.paperWidth: " + print_job.paperWidth);
              trace(">> pj.paperHeight: " + print_job.paperHeight);
    
       print_page.height = print_job.pageHeight;
       print_page.scaleX = print_page.scaleY;
    
       print_job.addPage(print_page);
       print_job.send();
    
       print_job = null;
    
     } else {
    
      //User does not have printer or user cancelled print action
     }
     removeChild(print_page);
    }
    

    如果任何人有任何想法,或有这个问题之前,那么任何帮助将非常感谢。
    非常感谢,
    威尔

    1 回复  |  直到 14 年前
        1
  •  0
  •   WillDonohoe    14 年前

    我只是注意到这个线程没有应答,我忘了说我找到了一个补丁。例如,出于某种原因,我需要将要打印的对象直接添加到舞台上stage.addChild阶段(movieclip),奇怪的是,如果我在舞台上给一个孩子加上它,它似乎不起作用,它必须直接加在舞台上。

    好的方面是,如果您不想在打印时显示movieclip/bitmap/sprite,如果您将visiblity设置为false,它仍然会为您打印。

    有点奇怪,但似乎管用。

    干杯,