dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

flashからのテキスト抽出(プログラム編)

2010-12-02 00:40:21 | linux
SWFファイルからテキストを抽出するプログラムです。
perlプログラムの標準入力にSWFファイルを入力すると、
標準出力にSWFから抽出されたテキストを出力します。


#!/usr/bin/perl
#
# SWF からテキストを抽出
#

use strict;
no encoding;
use warnings;
use SWF;
use SWF::Parser;
use SWF::Element;

sub header_callback
{
my($self, $signature, $version, $length,
$xmin, $ymin, $xmax, $ymax, $framerate, $framecount) = @_;
}

sub tag_callback_text
{
my($self, $tag_no, $length, $datastream) = @_;

# SWF::Element::Tag生成
my $e;
eval {
$e = SWF::Element::Tag->new(Tag => $tag_no, Length => $length);
$e->unpack($datastream);
};
if ($@) {
STDERR->print($@);
return;
}

# テキストを出力
if (eval { $e->isa('SWF::Element::Tag::DefineEditText') }) {
print($e->InitialText);
}
}


#
# メイン
#
my $parser = SWF::Parser->new('header-callback' => \&header_callback,
'tag-callback' => \&tag_callback_text);

# 読み込み
my $data = '';
while (my $line = <STDIN>) { $data .= $line; }

$parser->parse($data);