Это не способ linux, но я больше ничего не могу себе представить.
Мое решение - написать приложение AIR, которое загружает SWF-файл, добавляет его на экран, делает «экранный экран» и сохраняетэкран печати в png.
1) каждый экранный объект может быть нарисован на BitmapData
с дополнительным контролем преобразования (вам необходимо масштабирование), например:
var btn:Button = new Button;
var bitmap:BitmapData = new BitmapData(width, height);
var m:Matrix = new Matrix;
m.scale(2, 2);
bitmap.draw(btn, m);
Подробнее об этом: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#draw%28%29
2) BitmapData
можно преобразовать в png и сохранить.Для конвертации вы можете использовать встроенный PNGEncoder
.Выходные данные BiteArray
могут быть сохранены в указанном файле:
var bitmap:BitmapData = makeScreenShot();
var encoder:PNGEncoder = new PNGEncoder();
var bytes:ByteArray = encoder.encode(bitmap);
var imgStream:FileStream = new FileStream();
var img:File = new File(path);
imgStream.open(img, FileMode.WRITE);
imgStream.writeBytes(bytes);
imgStream.close();
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/FileStream.html
Дополнительно, поскольку PNGEncoder работает медленно, вы можете написать свой собственный текст, используя Alchemy , поскольку pnglib портирован (это в примерах sdk).
3) Вы можете передавать патенты в swfs приложению AIR в аргументах командной строки:
<mx:WindowedApplication
xmlns:mx="http://www.adobe.com/2006/mxml"
invoke="onInvoke(event)">
...
private function onInvoke(event:InvokeEvent):void
{
for each (str:String in event.arguments)
//do something
}
http://cookbooks.adobe.com/post_How_do_I_use_command_line_arguments_with_my_AIR_ap-8003.html