AlivePDF本地生成PDF

本文介绍了一种使用ActionScript 3 (AS3) 生成PDF文件的方法,包括页面布局、文字样式设置、表格绘制及HTML内容转换等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上例子吧,本来想用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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值