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);
}
}
}











