Tecnología

Inicio

Cómo leer el texto de SWF en Java

Por defecto, Java no es capaz de trabajar con archivos SWF de Flash. Los archivos SWF son archivos de Adobe Flash que contienen multimedia, gráficos vectoriales y ActionScript. Sin embargo, un paquete de funciones está disponible en la Web que amplía la funcionalidad de Java y le permite trabajar con archivos Flash. Por ejemplo, se le puede ayudar a analizar el archivo SWF y leer todo el texto. A continuación, puede utilizar el texto en sus otras funciones de Java. Todo lo que tiene que hacer es descargar los archivos de origen y enlace a ellos en la aplicación Java.

Instrucciones

1 Abra el navegador Web y vaya a Softpedia descargar el código fuente JavaSWF2.

2 Haga clic en el botón azul "Descargar" y guarda el archivo en el disco duro.

3 Haga clic en el javaswf-CVS-SNAPSHOT-1.zip archivo se acaba de descargar y seleccione Extraer aquí para extraer su contenido en la misma carpeta. Se crea una carpeta con el nombre javaswf.

4 Crear un nuevo archivo de texto en cualquier lugar de su disco duro, nombrarlo ReadText.java y presionar "Enter".

5 Copia la carpeta com se encuentra dentro de la carpeta javaswf \ bin en la carpeta que contiene el nuevo archivo Java.

6 Abra el archivo de Java en cualquier editor de texto.

7 Insertar estas líneas para importar los recursos necesarios:

import

java.io.;
importar java.util.;
com.anotherbigidea.flash.interfaces de importación.;
com.anotherbigidea.flash.writers de importación.;
com.anotherbigidea.flash.readers de importación.;
com.anotherbigidea.flash.structs de importación.;

8 Inserte el código para leer el texto del archivo SWF:

ExtractText clase pública se extiende SWFTagTypesImpl
{

protected HashMap fontCodes = new HashMap();
public ExtractText( )
{
super( null );
}

public void tagDefineFontInfo (int fontid, Cadena fontName, int banderas, códigos int [])

throws IOException
{
fontCodes.put( new Integer(fontId), codes );
}
public SWFVectors tagDefineFont2( int id, int flags, String name, int numGlyphs,
int ascent, int descent, int leading,
int[] codes, int[] advances, Rect[] bounds,
int[] kernCodes1, int[] kernCodes2,
int[] kernAdjustments ) throws IOException
{
fontCodes.put( new Integer(id), (codes!=null) ? codes : new int[0] );
return null;
}
public void tagDefineTextField( int fieldId, String fieldName,
String initialText, Rect boundary, int flags,
AlphaColor textColor, int alignment, int fontId, int fontSize,
int charLimit, int leftMargin, int rightMargin, int indentation,
int lineSpacing )
throws IOException
{
if( initialText != null )
{
System.out.println( initialText );
}
}
public SWFText tagDefineText( int id, Rect bounds, Matrix matrix )
throws IOException
{
return new TextDumper();
}
public SWFText tagDefineText2( int id, Rect bounds, Matrix matrix ) throws IOException
{
return new TextDumper();
}
public class TextDumper implements SWFText
{
protected Integer fontId;
protected boolean firstY = true;
public void font( int fontId, int textHeight )
{
this.fontId = new Integer( fontId );
}
public void setY( int y )
{
if( firstY ) firstY = false;
else System.out.println();
}
public void text( int[] glyphIndices, int[] glyphAdvances )
{
int[] codes = (int[])fontCodes.get( fontId );
if( codes == null )
{
System.out.println( "\n**** COULD NOT FIND FONT INFO FOR TEXT ****\n" );
return;
}
char[] chars = new char[ glyphIndices.length ];
for( int i = 0; i < chars.length; i++ )
{
int index = glyphIndices[i];
if( index >= codes.length ) //System Font ?
{
chars[i] = (char)index;
}
else
{
chars[i] = (char)(codes[index]);
}
}
System.out.print( chars );
}
public void color( Color color ) {}
public void setX( int x ) {}
public void done()
{
System.out.println();
}
}
public static void main( String[] args ) throws IOException
{
FileInputStream in = new FileInputStream( args[0] );
ExtractText extractor = new ExtractText();
TagParser parser = new TagParser( extractor );
SWFReader reader = new SWFReader( parser, in );
reader.readFile();
in.close();
}

}

9 Guarde y cierre el archivo Java.

10 Compilar el código fuente de Java, colocar el archivo SWF dentro de la misma carpeta y ejecutar el programa Java. Se le pedirá el nombre del archivo SWF. Escríbalo y presione "Enter" para leer el texto de la SWF.

Consejos y advertencias

  • Se puede añadir más funciones a la aplicación para utilizar el texto.