簡體   English   中英

在HTML上打印靜態SWF

[英]Print static SWF on HTML

我一直在努力嘗試,但沒有結果,希望有人可以幫助我。

我所擁有的是一個嵌入了ActionScript2 SWF對象的HTML頁面。 SWF是一種靜態精靈,可從javascript獲取動態文本。 所以基本上看起來像一個圖像。

我想打印出包含HTML + SWF的整個頁面,但是正如預期的那樣,SWF對象的位置上出現了一個空白方塊。

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

無論如何,是否要為SWF拍攝快照或將其渲染為圖像? 在打印預覽和打印文檔上顯示它? Flash對象的大小為600x381px;

謝謝!

抱歉,伙計們,但我終於想出了一個解決方案。

仍然感謝您的關注。

我首先要做的是將Flash文件從ActionScript2轉換為ActionScript3,以便能夠使用Mike Chambers的as3corelib https://github.com/mikechambers/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隱藏Embedded 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上​​還很陌生,因此請接受對此代碼的任何改進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM