<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Weave &#187; PDF</title>
	<atom:link href="http://www.weave.de/tag/pdf/feed" rel="self" type="application/rss+xml" />
	<link>http://www.weave.de</link>
	<description>Webdesign, Konzeption &#38; Development</description>
	<lastBuildDate>Fri, 03 Feb 2012 10:38:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>WEAVE 05.09 – Flash-Seiten zum Mitnehmen</title>
		<link>http://www.weave.de/code/flashpdf0509</link>
		<comments>http://www.weave.de/code/flashpdf0509#comments</comments>
		<pubDate>Tue, 25 Aug 2009 05:00:32 +0000</pubDate>
		<dc:creator>fwolf</dc:creator>
				<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[alivePDF-API]]></category>
		<category><![CDATA[Christian Bartsch]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[gsenpod]]></category>
		<category><![CDATA[Imbert Thibault]]></category>
		<category><![CDATA[Martin Anderle]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://www.weave.de/?p=1505</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<h2><span style="color: #808000;">Flash zum Mitnehmen</span></h2>
<p><a href="http://www.gsenpod.com/"><img class="size-full wp-image-1511" src="http://www.weave.de/wp-content/uploads/2009/08/flashpdf0509_550w.jpg" alt="flashpdf0509_550w" width="550" height="345" /></a></p>
<p><a href="http://www.gsenpod.com/">Das Online-Portfolio von Christian Bartsch</a> ist nicht nur online schick – besuchte Seiten kann man sich auch zu einem individuellen PDF zusammenstellen und herunterladen. <a href="http://www.martinanderle.de/">Martin Anderle</a> programmierte die Funktion mit Hilfe der <a href="http://alivepdf.bytearray.org/">alivePDF-API</a> und stellt hier eine abgespeckte Version des Quellcodes zur Verfügung.</p>
<pre lang="actionscript">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);
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.weave.de/code/flashpdf0509/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

