Flex端使用alivepdf直接导出PDF文件:测试中文有乱码

本文介绍了如何在Flex环境中利用AlivePDF库解决中文乱码问题,通过实例展示了创建PDF、设置字体和布局,最终实现正确导出包含中文的PDF文件。

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

Flex端使用alivepdf直接导出PDF文件:测试中文有乱码

 

 

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.FontFamily;
import org.alivepdf.fonts.Style;
import org.alivepdf.layout.Align;
import org.alivepdf.layout.Orientation;
import org.alivepdf.layout.Size;
import org.alivepdf.layout.Unit;
import org.alivepdf.pages.Page;
import org.alivepdf.pdf.PDF;
import org.alivepdf.saving.Download;
import org.alivepdf.saving.Method;
			
protected var claimPDF:PDF;
			
protected function exportPdf():void 
{
				claimPDF = new PDF(Orientation.LANDSCAPE, Unit.MM, Size.A4);//创建PDF实例
				
				claimPDF.setDisplayMode (Display.FULL_WIDTH);//设置整个页面
				claimPDF.setTitle("这是一个标题");
				claimPDF.addPage();//添加一页(默认第一页)
				//添加图片流
				claimPDF.textStyle(new RGBColor(0x0),1);
				//				claimPDF.setFont(FontFamily.ARIAL , 13);//设置字体样式、大小
				
				var idCol:GridColumn=new GridColumn("碳排放","percent",20,Align.CENTER,Align.CENTER);
				var nameCol:GridColumn=new GridColumn("NAME","name",50,Align.CENTER,Align.CENTER);
				var ageCol:GridColumn=new GridColumn("AGE","data",40,Align.CENTER,Align.CENTER);
				var columns:Array=new Array(idCol,nameCol,ageCol);
				var grid:Grid = new Grid(treeSource.children.toArray(), 300, 300,
					new RGBColor (0xCCCCCC), new RGBColor (0xCCCCCC), 
					false, new RGBColor ( 0x0 ),1, Joint.MITER);
				grid.columns=columns;
				
				claimPDF.addGrid(grid,10,160);
				
				claimPDF.save(Method.REMOTE,"PDFServlet",Download.ATTACHMENT,"aaa.pdf");
			}
 

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		int i = 0;
		int k = 0;
		int maxLength = request.getContentLength();// 获取请求的内容
		byte[] bytes = new byte[maxLength];// 转换byte数组
		String method = request.getParameter("method");
		String name = request.getParameter("name");// 请求的文件名,aaa.pdf
		ServletInputStream si = request.getInputStream();
		while (true) {// 循环读取文件流
			k = si.read(bytes, i, maxLength);
			i += k;
			if (k <= 0)
				break;
		}
		if (bytes != null) {
			ServletOutputStream stream = response.getOutputStream();// 实例化
			response.setContentType("application/pdf");// 内容类型
			response.setCharacterEncoding("UTF-8");// 编码方式
			response.setContentLength(bytes.length);// 设置内容长度
			response.setHeader("Content-Disposition", method + ";filename="
					+ name);
			stream.write(bytes);// 写入
			stream.flush();
			stream.close();// 关闭流
		} else {
			response.setContentType("text");
			response.getWriter().write("bytes is null");
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值