直接上例子吧,本来想用html布局生成pdf的,没成功。。。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:groe_org="org.groe.html.*"
minWidth="955"
minHeight="600">
<fx:Declarations>
</fx:Declarations>
<fx:Script>
<![CDATA[
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.*;
import mx.core.UIComponent;
import org.alivepdf.colors.RGBColor;
import org.alivepdf.data.Grid;
import org.alivepdf.data.GridColumn;
import org.alivepdf.display.Display;
import org.alivepdf.drawing.Joint;
import org.alivepdf.fonts.CoreFont;
import org.alivepdf.fonts.FontFamily;
import org.alivepdf.fonts.Style;
import org.alivepdf.layout.Layout;
import org.alivepdf.layout.Orientation;
import org.alivepdf.layout.Position;
import org.alivepdf.layout.Resize;
import org.alivepdf.layout.Size;
import org.alivepdf.layout.Unit;
import org.alivepdf.pdf.PDF;
import org.alivepdf.saving.Method;
import org.groe.html.FlashHtmlRenderer;
import org.groe.html.HtmlParser;
import spark.components.ResizeMode;
protected var frPDF:PDF;
[Bindable]
private var str:String = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><head><title>groe.org AS3 Html Parser Test</title><div style='border: 1px red solid;'>Hello</div></body></html>";
private function onSave(e:Event):void
{
var pdf:PDF=new PDF(Orientation.PORTRAIT, Unit.MM, Size.LETTER);
pdf.setDisplayMode(Display.FULL_WIDTH, Layout.SINGLE_PAGE);
pdf.addPage();
var gridColumnParcel:GridColumn=new GridColumn("Parcel ID", "Cls_Name", 100);
var gridColumnAcreage:GridColumn=new GridColumn("Parcel Acreage", "Area_Acre", 100);
var columns:Array=new Array(gridColumnParcel, gridColumnAcreage);
var arr:Array=[{Cls_Name: "Bob", Area_Acre: "Groove"}, {Cls_Name: "Bob", Area_Acre: "Wise", city: "Paris"}];
pdf.setMargins(10, 10, 10, 10);
pdf.textStyle(new RGBColor(0xCCCCCC), 1);
pdf.setFont(new CoreFont());
var grid:Grid=new Grid(arr, 500, 1200, new RGBColor(0x0038FF), new RGBColor(0x00CCFF), true, new RGBColor(0x0), .1);
grid.columns=columns;
pdf.addGrid(grid);
pdf.setFont( new CoreFont(FontFamily.COURIER),14 );
pdf.textStyle ( new RGBColor ( 0x990000 ) );
pdf.addMultiCell ( 70, 12, "AAAAAAAAAAAAAAAAAAAAAAAa multicell :)", 1);
pdf.addMultiCell ( 70, 12, "A multicell :)", 1,"J",1);
pdf.newLine(2);
pdf.addPage();
pdf.addCell(70, 12, "BBBBBBBBBBBBBBBBBBBBBBB cell :)", 1);
pdf.addCell(70, 12, "B cell :)", 1);
pdf.writeText ( 5, "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.");
var bytes:ByteArray=pdf.save(Method.LOCAL);
var f:FileReference=new FileReference();
f.save(bytes, "pdf.pdf");
}
private function printScreenShot(e:Event):void
{
var whatToPrint:UIComponent=this;
var printPDF:PDF=new PDF(Orientation.LANDSCAPE, Unit.MM, Size.A4);
printPDF.setDisplayMode(Display.FULL_WIDTH, Layout.SINGLE_PAGE);
printPDF.addPage();
printPDF.addImage(whatToPrint, new Resize(ResizeMode.SCALE, Position.CENTERED), 0, 0, 100, 100);
// printPDF.save(Method.REMOTE, serverScript, howToOutput, "alivePDFExample.pdf");
var bytes:ByteArray=printPDF.save(Method.LOCAL);
var f:FileReference=new FileReference();
f.save(bytes, "screenshot.pdf");
}
private function htmlForPDF(e:Event):void
{
var whatToPrint:UIComponent=this;
var printPDF:PDF=new PDF(Orientation.LANDSCAPE, Unit.MM, Size.A4);
printPDF.setDisplayMode(Display.FULL_PAGE, Layout.SINGLE_PAGE);
printPDF.addPage();
//printPDF.writeFlashHtmlText(20, "<div style='border: 1px silver solid;'>Hello</div>");
//whatToPrint = FlashHtmlRenderer.render(HtmlParser.parse("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><head><title>groe.org AS3 Html Parser Test</title><div style='border: 1px red solid;'>Hello</div></body></html>"));
printPDF.addImage(whatToPrint);
var bytes:ByteArray=printPDF.save(Method.LOCAL);
var f:FileReference=new FileReference();
f.save(bytes, "html.pdf");
}
]]>
</fx:Script>
<s:layout>
<s:HorizontalLayout verticalAlign="middle" horizontalAlign="center"/>
</s:layout>
<s:Button label="pdf" click="onSave(event)"/>
<s:Button label="html" click="htmlForPDF(event)"/>
<s:Button label="printScreenShot" click="printScreenShot(event)"/>
</s:Application>
如果你想用一张图片做背景,你可以这样做:
[Embed( source="/assets/images/pdf/option3.jpg", mimeType="application/octet-stream" )]
private var jpg3Bytes:Class;
var resize:Resize = new Resize(Mode.RESIZE_PAGE, Position.CENTERED);
pdf.addImageStream( new jpg3Bytes() as ByteArray, ColorSpace.DEVICE_RGB, resize);