在浏览器中打印SWF时出现问题

时间:2010-02-10 12:14:32

标签: flex actionscript-3

我正在尝试打印SWF并遇到了一些问题。 在浏览器中使用“打印”功能时,SWF将失真,并且无法正确缩放。所以我尝试使用Actionscript来实现Print函数。

我采取的不同方法是:

  • 使用Flash Player的右键单击上下文菜单进行打印,然后选择“打印”。这几乎按预期工作,但它会使透明PNG变平并且无法正确缩放。
  • 创建FlexPrintJob并将该组件添加到作业中。即使我在打印作业上设置了FlexPrintJobScaleType.SHOW_ALL,也不会缩放组件以适合页面。
  • 创建包含图像的PrintView。然后获取组件的屏幕截图并将其设置为PrintView中的图像。完成后,我创建一个新的FlexPrintJob并发送它。这似乎在大多数时候都有效,但缩放会扭曲并使小元素(如文本)看起来非常糟糕。

打印代码如下所示:

var pj:FlexPrintJob = new FlexPrintJob();
if (pj.start())
{
 pj.addObject(componentToBePrinted, FlexPrintJobScaleType.SHOW_ALL);
    pj.send(); 
}

我想要做的是让右键单击上下文菜单起作用,我的意思是设置SWF的缩放。这可能吗?打印SWF时还有其他选择吗?我做错了什么?

测试时,我正在打印PDF,但我认为这不会改变结果。

1 个答案:

答案 0 :(得分:0)

您需要在FlexPrintJobScaleType中缩放打印作业:

  

MATCH_WIDTH

     

(默认)缩放要填充的对象   可用的页面宽度。如果   结果物体高度超过   页面高度,输出跨越多个   页。

     

MATCH_HEIGHT

     

缩放对象以填充   可用的页面高度。如果   结果对象宽度超过   页面宽度,输出跨越多个   页。

     

SHOW_ALL

     

缩放对象以适合单个对象   页面,填写一个维度;那是,   它选择较小的   MATCH_WIDTH或MATCH_HEIGHT比例   类型。

     

FILL_PAGE

     

缩放对象以填充至少一个   页面完全;也就是说,它选择   MATCH_WIDTH中的较大者或   MATCH_HEIGHT比例类型。

     

     

不缩放输出。印刷的   页面的尺寸与   屏幕上的对象。如果是对象   高度,宽度或两个尺寸   超过页面宽度或高度,   输出跨越多个页面。

参见http://livedocs.adobe.com/flex/3/html/help.html?content=printing_3.html 有关这方面的更多信息。