前回エントリのサンプルでも一部使用していますが、AlivePDFにはページ要素を追加するための
メソッドが色々用意されています。今回はその一部を紹介したいと思います。
テキスト関係(今のところ日本語対応には対応していないようです ※埋め込みフォントの対応は実装予定にある模様)
addText() - テキストの追加
addTextNote() - 注釈の追加
addMultiCell() - マルチセルの追加 ※マルチセルって日本語でいうとなんだろ...
setFont() - fontの指定 ※今のところ使えるフォントが数種類に制限されています
図形関係(Graphicsの各種メソッドと似ているものも多いです)
beginFill() - 塗りの色指定
drawCircle() - 円描画
drawPolygone() - 多角形描画
etc...
色指定
RGBColor, CMYKColor
画像addImageStream() - 画像描画 ※引数でbyteArrayを指定します
画面効果(フルスクリーン時の画面効果)
addTransition() - 画面効果の追加
効果の種類の指定
Transition.WIPE, Transition.DISSOLVE, Transition.BOX, などなど
適当にページ・ページの要素が確認できるようなサンプルを作ってみました。
前回と同様AIRプロジェクトとして作成しています。
今回のサンプル
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Text id="txt" x="10" y="10" width="200"/>
<mx:Button label="Generate PDF" click="generatePDF(event)" x="10" y="30"/>
<mx:Script>
<![CDATA[
import org.alivepdf.fonts.Style;
import org.alivepdf.transitions.MotionDirection;
import org.alivepdf.transitions.TransitionDirection;
import org.alivepdf.transitions.Dimension;
import org.alivepdf.transitions.Transition;
import org.alivepdf.colors.RGBColor;
import org.alivepdf.images.ImageFormat;
import org.alivepdf.pages.Page;
import org.alivepdf.events.ProcessingEvent;
import org.alivepdf.fonts.FontFamily;
import org.alivepdf.saving.Method;
import org.alivepdf.layout.Size;
import org.alivepdf.layout.Unit;
import org.alivepdf.layout.Orientation;
import org.alivepdf.pdf.PDF;
[Embed( source="01.jpg", mimeType="application/octet-stream" )]
private var Jpg01:Class;
private var myPDF:PDF;
public function generatePDF(event:MouseEvent):void {
myPDF = new PDF(Orientation.PORTRAIT, Unit.MM, Size.A4);
myPDF.addEventListener(ProcessingEvent.COMPLETE, completeHandler);
myPDF.setFont(FontFamily.ARIAL, Style.BOLD, 18);
myPDF.addPage();
myPDF.addText("page 1", 20, 20);
myPDF.addText("PDF generation test!", 20, 40);
myPDF.addTextNote(170, 20, 50, 30, "Note!");
myPDF.addTransition(Transition.FLY, 1, Dimension.HORIZONTAL);
myPDF.addPage();
myPDF.addText("page 2", 20, 20);
myPDF.setFont(FontFamily.COURIER);
myPDF.addMultiCell(100, 80, "multicell", 1);
myPDF.addImageStream(new Jpg01() as ByteArray, 20, 160);
myPDF.addTransition(Transition.GLITTER, 1, Dimension.HORIZONTAL);
myPDF.addPage();
myPDF.setFont(FontFamily.ARIAL, Style.BOLD, 18);
myPDF.addText("page 3", 20, 20);
myPDF.beginFill(new RGBColor(0xffcc00));
myPDF.drawRect(new Rectangle(50, 50, 60, 110));
myPDF.endFill();
myPDF.addTransition(Transition.COVER, 1, Dimension.HORIZONTAL);
myPDF.addPage();
myPDF.addText("page 4", 20, 20);
myPDF.beginFill(new RGBColor(0xccff00));
myPDF.drawCircle(105, 148, 85);
myPDF.endFill();
myPDF.addTransition(Transition.SPLIT, 1, Dimension.HORIZONTAL);
try {
var stream:FileStream = new FileStream();
var file:File = File.desktopDirectory.resolvePath("pdf/generate3.pdf");
stream.open(file, FileMode.WRITE);
var bytes:ByteArray = myPDF.save(Method.LOCAL);
stream.writeBytes(bytes);
} catch(e:Error) {
txt.text = "ファイルをオープン出来ません"
} finally {
stream.close();
}
}
private function completeHandler(event:ProcessingEvent):void {
txt.text = "PDF生成終了";
}
]]>
</mx:Script>
</mx:WindowedApplication>
こちらが実際に生成されたPDFファイルです。Adobe Readerで全画面再生すると、画面効果も確認できるかと思います。