gpt4 book ai didi

javascript - 在 HTML 上打印静态 SWF

转载 作者:行者123 更新时间:2023-11-28 00:58:56 24 4
gpt4 key购买 nike

我一直在努力尝试,但没有结果,希望有人能帮助我。

我拥有的是一个嵌入了 ActionScript2 SWF 对象的 HTML 页面。 SWF 是一个静态 Sprite ,它从 javascript 获取动态文本。所以基本上看起来就像一个图像。

我想打印包含 HTML + SWF 的整个页面,但正如预期的那样,SWF 对象的位置出现了一个空白方 block 。

我使用 javascript window.print(); 打印页面;

有没有办法拍摄 SWF 快照或将其渲染为图像?在打印预览和打印文档上显示它?Flash对象的大小为600x381px;

谢谢!

最佳答案

对不起大家、但我终于想出了一个解决方案。

无论如何,感谢您的浏览。

我首先做的是将 Flash 文件从 ActionScript2 转换为 ActionScript3,以便能够使用 Mike Chambers https://github.com/mikechambers/as3corelib 的 as3corelib 。在这个库中,我使用了 JGPEncoder,如下所示

import flash.external.ExternalInterface;
import flash.display.JPEGEncoderOptions;
import com.adobe.images.JPGEncoder;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.display.Bitmap;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;

function snapShot(){

var imgBM:Bitmap;
var myBitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
myBitmapData.draw(stage);
imgBM=new Bitmap(myBitmapData);
addChild(imgBM);

var imgBA:ByteArray;
var jpgEncoder:JPGEncoder = new JPGEncoder(90);
//-------Send image to php

imgBA = jpgEncoder.encode(myBitmapData);

var sendHeader:URLRequestHeader = new URLRequestHeader('Content-type', 'application/octet-stream');

var sendReq:URLRequest = new URLRequest("parseimg.php");
sendReq.requestHeaders.push(sendHeader);
sendReq.method = URLRequestMethod.POST;
sendReq.data = imgBA;

var sendLoader:URLLoader = new URLLoader;
sendLoader.addEventListener(Event.COMPLETE, imageSentHandler);
sendLoader.load(sendReq);
}

var imagePath:String;

function imageSentHandler(event:Event):void {
var dataStr:String = event.currentTarget.data.toString();
var resultVars:URLVariables = new URLVariables();
resultVars.decode(dataStr);

imagePath = "http://" + resultVars.base + resultVars.filename;
}

下一步是创建接收 ByteArray 的 php 并在服务器上创建图像文件。

<?php

if ( isset ( $GLOBALS["HTTP_RAW_POST_DATA"] )) {
$filename = "your_image_name.jpg";
$fp = fopen( $filename,"wb");
fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
fclose( $fp );

echo "filename=".$filename."&base=".$_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"]); } ?>

最后,由于图像已位于服务器上的文件夹中,我只需使用 CSS 隐藏嵌入式 Flash 对象,然后显示图像即可。

我在 document.ready 上使用 jquery 得到了这个

var d = new Date();
setTimeout(function(){
$("#imgflash").attr("src", "your_image_name.jpg?"+d.getTime());
setTimeout("window.print();", 200);
},1000);

由于我对 ActionScript 和 Flash 还很陌生,因此我们欢迎对此代码的任何改进。

关于javascript - 在 HTML 上打印静态 SWF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com