以下一個簡單範例, 介紹內建的FileReference 與外掛的ALIVEPDF 結合使用.
範例功能:
- 用戶瀏覽一個影像檔案
- 將影像檔案嵌入PDF 文件給用戶下載
使用類別:
- FileReference - 提供一個可以在使用者電腦與伺服器之間上傳和下載檔案的工具
- ByteArray - 位元組的封裝陣列, 瀏覽檔案的內容
- org.alivepdf.pdf.PDF - 外掛程式庫, 可生產PDF 文件
範例說明:
- 用戶瀏覽一個影像檔案
定義一個FileReference 物件var _file:FileReference = new FileReference();
當用戶按下"Select a Image", 利用FileReference 打開瀏覽檔案視窗
function selectClickHandler(event:MouseEvent):void{ // <----- open file browser _file.addEventListener(Event.SELECT, fileSelectHandler); _file.browse(getTypes()); } selectBtn.addEventListener(MouseEvent.CLICK, selectClickHandler);
載入已瀏覽檔案
function fileSelectHandler(event:Event):void{ // <----- load image raw data _file.addEventListener(Event.COMPLETE, loadCompleteHandler); _file.load(); }
檔案內容儲存為ByteArray 物件, 然後跳至下一版面function loadCompleteHandler(event:Event):void{ // <----- cache image raw data _data = _file.data as ByteArray; // <----- goto save scene gotoAndPlay("save"); }
- 將影像檔案嵌入PDF 文件給用戶下載
當用戶按下"Save as PDF", 建立PDF 物件, 把檔案嵌入, 最後利用FileReference 給用戶下載
function saveClickHandler(event:MouseEvent):void{ // <----- define variable var file:FileReference = new FileReference(); var pdf:PDF = new PDF(Orientation.PORTRAIT, Unit.MM, Size.A4); var resize:Resize = new Resize(Mode.FIT_TO_PAGE,Position.CENTERED); // <----- create page pdf.addPage(); pdf.addImageStream(_data, ColorSpace.DEVICE_RGB, resize); // <----- output PDF file file.save(pdf.save(Method.LOCAL), "output.pdf"); } saveBtn.addEventListener(MouseEvent.CLICK, saveClickHandler);
大家可以 [下載], 然後一齊看看.
當然這個PDF 類別, 還可以嵌入文字和Flash 內的任何MovieCLip.
參考資料: http://alivepdf.bytearray.org/?p=20
注意事項: 透過FileReference.save 給用戶下載檔案, 函數內必須包含由Flash Player 產生的MouseEvent. 若在一段情況下, 程式不能任意呼叫FileReference.save.
沒有留言:
張貼留言