Come leggere il testo da SWF in Java

April 11

Per impostazione predefinita, Java è in grado di lavorare con i file Flash SWF. I file SWF sono file di Adobe Flash che contengono multimediali, grafica vettoriale e ActionScript. Tuttavia, un pacchetto di funzioni è disponibile sul Web che estende le funzionalità di Java e vi permette di lavorare con i file Flash. Ad esempio, può aiutare a analizzare il file SWF e leggere tutto il testo. È quindi possibile utilizzare il testo nelle altre funzioni Java. Tutto quello che dovete fare è scaricare i file di origine e link a loro nella vostra applicazione Java.

istruzione

1 Aprire il browser Web e passare a Softpedia per scaricare il codice sorgente JavaSWF2.

2 Fare clic sul pulsante blu "Download" e salvare l'archivio sul disco rigido.

3 Destro del mouse archiviare il javaswf-CVS-SNAPSHOT-1.zip appena scaricato e selezionare Estrai qui per estrarne il contenuto nella stessa cartella. Viene creata una cartella denominata javaswf.

4 Creare un nuovo file di testo in qualsiasi punto sul disco rigido, il nome ReadText.java e premere "Invio".

5 Copiare la cartella com trovata all'interno della cartella bin javaswf \ nella cartella contenente il nuovo file Java.

6 Aprire il file Java in qualsiasi editor di testo.

7 Inserire queste righe per importare le risorse necessarie:

import

java.io.;
import java.util.;
com.anotherbigidea.flash.interfaces importazione.;
com.anotherbigidea.flash.writers importazione.;
com.anotherbigidea.flash.readers importazione.;
com.anotherbigidea.flash.structs importazione.;

8 Inserire questo codice per leggere il testo dal file SWF:

public class ExtractText estende SWFTagTypesImpl
{

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

public void tagDefineFontInfo (int fontid, String fontName, int bandiere, codici 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 Salvare e chiudere il file Java.

10 Compilare il sorgente Java, inserire il file SWF all'interno della stessa cartella ed eseguire il programma Java. Si chiederà il nome del file SWF. Digitare e premere "Invio" per leggere il testo dal file SWF.

Consigli e avvertenze

  • È possibile aggiungere più funzioni per l'applicazione per utilizzare il testo.