WEAVE 05.09 – Flash-Seiten zum Mitnehmen
Flash zum Mitnehmen
Das Online-Portfolio von Christian Bartsch ist nicht nur online schick – besuchte Seiten kann man sich auch zu einem individuellen PDF zusammenstellen und herunterladen. Martin Anderle programmierte die Funktion mit Hilfe der alivePDF-API und stellt hier eine abgespeckte Version des Quellcodes zur Verfügung.
package
-
{
-
import br.com.stimuli.loading.*;
-
-
import org.alivepdf.colors.CMYKColor;
-
import org.alivepdf.fonts.*;
-
import org.alivepdf.layout.*;
-
import org.alivepdf.pdf.PDF;
-
import org.alivepdf.saving.Method;
-
-
import flash.display.Sprite;
-
import flash.events.*;
-
import flash.geom.Rectangle;
-
import flash.net.FileReference;
-
import flash.text.TextField;
-
public class AlivePdfExamle extends Sprite
-
{
-
private var _pdf : PDF;
-
private var _loader : BulkLoader;
-
private var _header : String = "http://www.martinanderle.de/article/weavepdf/header.jpg
-
";
-
private var _img1 : String = "http://www.martinanderle.de/article/weavepdf/christian_bartsch.jpg
-
";
-
private var _img2 : String = "http://www.martinanderle.de/article/weavepdf/martin_anderle.jpg
-
";
-
-
public function AlivePdfExamle()
-
{
-
loadImages();
-
}
-
-
/**
-
* Da wir mehrere Bilder laden ist der Einsatz des Bulkloaders sinnvoll,
-
* weil dieser mehrere Dateien gleichzeitig laden kann, desweiteren
-
* ist der Code übersichtlicher.
-
* Die Bilder werden als ByteArray geladen, da wir beim Header
-
* welcher aus Vektoren besteht 1200dpi und bei den Bildern 300dpi verwenden.
-
*/
-
-
private function loadImages() : void
-
{
-
_loader = new BulkLoader("ImageLoader");
-
_loader.addEventListener(BulkLoader.ERROR, loadError);
-
_loader.addEventListener(BulkProgressEvent.PROGRESS, loadProgress);
-
_loader.addEventListener(BulkLoader.COMPLETE, loadComplete);
-
-
// Hinzufügen der Bilder zur Loading-Liste des BulkLoaders
-
_loader.add(_header, {type:BulkLoader.TYPE_BINARY});
-
_loader.add(_img1, {type:BulkLoader.TYPE_BINARY});
-
_loader.add(_img2, {type:BulkLoader.TYPE_BINARY});
-
-
// Starten des Loaders
-
_loader.start();
-
}
-
-
private function loadError(event : Event) : void
-
{
-
trace("Wenn die Datei lokal ausgeführt wird, muss diese im Adobe Settings Manager zur Kommunikation mit dem Internet freigeschaltet werden.");
-
}
-
-
private function loadProgress(event : BulkProgressEvent) : void
-
{
-
trace("LOADING: ", Math.round(event.percentLoaded * 100));
-
}
-
-
private function loadComplete(event : Event) : void
-
{
-
trace("LOAD_COMPLETE");
-
-
// PDF Objekt erzeugen und Seitenformat definieren, es ist auch möglich eigene Formate anzugeben.
-
_pdf = new PDF(Orientation.LANDSCAPE, Unit.MM, Size.A4);
-
-
firstPage();
-
secondPage();
-
-
// end() schließt das PDF-Dokument.
-
_pdf.end();
-
-
// Fügt einen Button auf der Bühne hinzu, dieser ist nötig, da aus Sichheitsgründen nur erlaubt ist den Flash Save-File Dialog innerhalb eines MouseEvents aufzurufen.
-
addButton();
-
}
-
-
private function firstPage() : void
-
{
-
// PDF Seite hinzufügen
-
_pdf.addPage();
-
-
// Geladenes Bild hinzufügen, positionieren und Breite festlegen
-
_pdf.addImageStream(_loader.getBinary(_header), 0, 0, 297);
-
-
// Schrift Familie, Stil und Größe festlegen
-
_pdf.setFont(FontFamily.ARIAL, Style.ITALIC, 123);
-
-
// Text angeben sowie Position bestimmen
-
_pdf.addText("weave", 20, 140);
-
-
// Um beim nächsten Element die Schrift zu ändern, nochmals setFont() aufrufen und die Parameter ändern.
-
_pdf.setFont(FontFamily.TIMES, Style.ITALIC, 26);
-
_pdf.addText("pdf lookbook book example", 26, 151);
-
-
// Wie bei der graphics Klasse von AS3 kann man hier Vektoren erzeugen, wir zeichnen hier ein einfaches Rechteck.
-
_pdf.lineStyle(new CMYKColor(0, 0, 0, 0), 0);
-
_pdf.beginFill(new CMYKColor(70, 1, 35, 0));
-
-
_pdf.drawRect(new Rectangle(25, 158, 60, 10));
-
-
// Mit textStyle() kann die Farbe des Textes geändert werden.
-
_pdf.textStyle(new CMYKColor(0, 0, 0, 0));
-
_pdf.setFont(FontFamily.ARIAL, Style.ITALIC, 18);
-
_pdf.addText("www.gsenpod.com", 27, 165);
-
-
// Um einen Link-Bereich zu definieren, Koordinaten, Höhe, Breite und den Link angeben.
-
_pdf.addLink(25, 158, 60, 10, "http://www.gsenpod.com");
-
}
-
-
private function secondPage() : void
-
{
-
// PDF Seite hinzufügen
-
_pdf.addPage();
-
-
// Geladenes Bild hinzufügen, positionieren und Breite festlegen
-
_pdf.addImageStream(_loader.getBinary(_header), 0, 0, 297);
-
-
// Bilder hinzufügen, positionieren und Breite und Höhe angeben
-
_pdf.addImageStream(_loader.getBinary(_img1), 12, 40, 135, 135);
-
_pdf.addImageStream(_loader.getBinary(_img2), 150, 40, 135, 135);
-
-
_pdf.textStyle(new CMYKColor(0, 0, 0, 100));
-
-
_pdf.setFont(FontFamily.ARIAL, Style.ITALIC, 26);
-
_pdf.addText("christian bartsch // martin anderle", 12, 192);
-
}
-
-
/**
-
* Speichern des PDF mittels der in Flash10 eingeführten FileReference Klasse.
-
* Um Missbrauch zu verhindern, muss der Aufruf innerhalb eines MouseEvents erfolgen.
-
*/
-
private function downloadPDF(event : MouseEvent) : void
-
{
-
new FileReference().save(_pdf.save(Method.LOCAL), "weave – pdf lookbook book example.pdf");
-
}
-
-
private function addButton() : void
-
{
-
var sprite : Sprite = new Sprite();
-
sprite.addEventListener(MouseEvent.MOUSE_UP, downloadPDF);
-
sprite.buttonMode = true;
-
-
var textField : TextField = new TextField();
-
textField.mouseEnabled = false;
-
textField.text = "Get PDF";
-
sprite.x = stage.stageWidth / 2;
-
sprite.y = stage.stageHeight / 2;
-
-
sprite.addChild(textField);
-
addChild(sprite);
-
}
-
}
-
}









