0

我正在拔头发。需要从远程服务器打印 html 生成的发票,使用

打印类,如果位图设置为 false 的事件,将呈现发票位图。至少文字模糊且不可用。alivepdf 可能是一个解决方案,但我需要直接打印,而不是在本地保存 pdf。我什至不明白,考虑到这个打印类很糟糕的事实,flex 不允许来自远程页面的简单 javascript 打印功能。

我在这里寻求帮助!

谢谢你

4

1 回答 1

1

为什么不用浏览器打印?

这是一个例子:

把它放在你的 index.html 模板中:

<script language="JavaScript">
    function printPage(htmlPage)
    {
        var w = window.open("about:blank");
        w.document.write(htmlPage);
        w.print();
        w.close();
    }
</script>

把它放在你的 Flex 项目中。您正在做的是检查您是否有权访问 ExternalInterface 以访问浏览器。然后你将使用“call”的 ExternalInterface 静态方法来调用 javascript:

    import mx.controls.Alert;
    import flash.external.ExternalInterface;   

    public static function PrintHtmlPage(pHtmlPage:String):void
    {
        if (ExternalInterface.available)
        {
            try  
            {
                  ExternalInterface.call("printPage",pHtmlPage);
            }
            catch (error:SecurityError) { Alert.show("Security Error"); }
            catch (error:Error) { Alert.show("Error");}
        }
        else { Alert.show("ExternalInterface not avalible");}
    }

现在用户可以从他们的浏览器打印干净的 html 了!

http://cookbooks.adobe.com/post_How_to_print_in_Flex_using_browser_capabilities-11468.html

编辑:

如果您正在使用 AIR 并且需要这样做,您可以尝试使用 AlivePDF 并按照本教程进行操作:

  1. 使用 alivepdf (http://alivepdf.bytearray.org/),并查看本教程以从 AIR 打印 (http://murrayhopkins.wordpress.com/2011/01/07/using-alivepdf-to-print-from -air-javascript-via-actionscript3-part-1/)
  2. 将 HTML 解析为 Spark 组件,然后将它们添加为 Sprite,然后在您的选项中使用 printAsBitmap = true 和 FlexPrintJob
于 2011-12-13T05:03:48.320 回答