Gewusst wie: Lesen von Text aus SWF in Java

March 20

Java ist standardmäßig nicht in der Lage, mit Flash SWF-Dateien zu arbeiten. SWF-Dateien sind Adobe Flash-Dateien, die enthalten multimedia, Vektorgrafik und ActionScript. Allerdings ist ein Satz von Funktionen im Web, das erweitert die Funktionalität von Java und ermöglicht das Arbeiten mit Flash-Dateien zur Verfügung. Beispielsweise kann es helfen, Sie analysieren die SWF-Datei und lesen Sie alle Text. Dann können Sie den Text in Ihre anderen Java-Funktionen. Alles, was Sie tun müssen, ist download der Dateien und Verknüpfungen zu ihnen in Ihre Java-Anwendung.

Anweisungen

1 Öffnen Sie den Webbrowser und navigieren Sie zu Softpedia, den Quellcode von JavaSWF2 herunterladen.

2 Klicken Sie auf die blaue Schaltfläche "Download" und speichern Sie das Archiv auf Ihrer Festplatte.

3 Maustaste auf das Javaswf-CVS-SNAPSHOT-1.zip-Archiv, die, das Sie gerade heruntergeladen, und Extract Here, um dessen Inhalt im gleichen Ordner zu extrahieren wählen. Ein Ordner mit dem Namen Javaswf wird erstellt.

4 Erstellen Sie eine neue Textdatei an einer beliebigen Stelle auf Ihrer Festplatte, nennen Sie sie ReadText.java und drücken Sie "Enter."

5 Kopieren Sie den com-Ordner innerhalb des Javaswf\bin-Ordners in den Ordner mit der neuen Java-Datei gefunden.

6 Öffnen Sie die Java-Datei in einem beliebigen Texteditor.

7 Fügen Sie diese Zeilen, um die erforderlichen Ressourcen zu importieren:

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

8 Fügen Sie diesen Code um den Text aus der SWF-Datei zu lesen:

öffentliche Klasse ExtractText erweitert SWFTagTypesImpl{

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

öffentliche void TagDefineFontInfo (Int FontId, String FontName, Int Flaggen, Int [] Codes)

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 Speichern Sie und schließen Sie die Java-Datei.

10 Kompilieren Sie der Java-Quellcode zu, platzieren Sie die SWF-Datei in demselben Ordner und führen Sie das Java-Programm. Es fragt nach den Namen der SWF-Datei. Geben Sie es und drücken Sie "Enter", um den Text aus der SWF-Datei zu lesen.

Tipps & Warnungen

  • Sie können weitere Funktionen für Ihre Anwendung den Text anfügen.