`

alive 生成pdf

    博客分类:
  • flex
阅读更多
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Button click="generate(event)" label="Generate" horizontalCenter="0" verticalCenter="0">
</mx:Button>
	
<mx:Script>
	<![CDATA[
		import org.alivepdf.events.ProcessingEvent;
		import org.alivepdf.layout.Format;
		import org.alivepdf.events.PageEvent;
		import org.alivepdf.metrics.FontMetrics;
		import mx.rpc.remoting.RemoteObject;

		import org.alivepdf.annotations.StampStyle;
		import org.alivepdf.annotations.AnnotationHighlight;
		import org.alivepdf.encoding.JPEGEncoder;
		import org.alivepdf.display.PageMode;
		import org.alivepdf.viewing.WindowUI;
		import org.alivepdf.viewing.MenuBar;
		import org.alivepdf.viewing.ToolBar;
		import mx.effects.MaskEffect;
		import org.alivepdf.drawing.DashedLine;
		import org.alivepdf.colors.RGBColor;
		import org.alivepdf.colors.Color;
		import org.alivepdf.layout.Layout;
		import org.alivepdf.display.Display;
		import org.alivepdf.layout.Size;
		import org.alivepdf.layout.Unit;
		import org.alivepdf.layout.Orientation;
		import org.alivepdf.pdf.PDF;
		import org.alivepdf.drawing.Caps;
		import org.alivepdf.drawing.Joint;
		import flash.geom.Rectangle;
		import org.alivepdf.saving.Method;
		import org.alivepdf.drawing.Blend;
		import org.alivepdf.fonts.FontFamily;
		import org.alivepdf.fonts.Style;
		import org.alivepdf.images.ImageFormat;
		import org.alivepdf.images.ResizeMode;
		import org.alivepdf.transitions.Transition;
		import org.alivepdf.transitions.TransitionDirection;
		import org.alivepdf.transitions.Dimension;
		import org.alivepdf.transitions.MotionDirection;
		import org.alivepdf.annotations.StampStyle;
		import org.alivepdf.layout.Size;
		import org.alivepdf.pages.Page;
		import org.alivepdf.saving.Download;
		private var myPDF:PDF;
		
		
        [Embed( source="/assets/cover_300dpi.jpg", mimeType="application/octet-stream" )]
        private var jpgBytes:Class;
        
        [Embed( source="/assets/o-png24.png", mimeType="application/octet-stream" )]
        private var pngBytes:Class;
		
		public function generate ( pEvt:MouseEvent ):void 
		{
			
			var myPDF:PDF = new PDF( Orientation.PORTRAIT, Unit.MM, Size.A4 );
						
			myPDF.addEventListener( PageEvent.ADDED, pageAdded );
			myPDF.addEventListener( ProcessingEvent.STARTED, generationStarted );
			myPDF.addEventListener( ProcessingEvent.PAGE_TREE, pageTreeGeneration );
			myPDF.addEventListener( ProcessingEvent.RESOURCES, resourcesEmbedding );
			myPDF.addEventListener( ProcessingEvent.COMPLETE, generationComplete );
					
			myPDF.setDisplayMode( Display.FULL_PAGE, Layout.SINGLE_PAGE );
			
			var newPage:Page = new Page ( Orientation.PORTRAIT, Unit.MM, Size.A4 );
			
			myPDF.addPage( newPage );
			
			myPDF.setFont(FontFamily.ARIAL , Style.NORMAL, 12);
			
			myPDF.addMultiCell ( 50, 8, "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam bibendum nibh quis magna. Fusce auctor porta velit. Nullam posuere nibh non tortor. Pellentesque non magna. Quisque tempus euismod libero. Curabitur consequat sagittis turpis. Donec elementum, ante vel volutpat pharetra, augue nisl dictum nisi, porttitor dapibus pede velit vitae turpis. Pellentesque gravida dictum urna. Suspendisse eget risus. Proin vitae nibh. Proin pharetra urna id augue. Nunc et neque. Mauris vulputate lacus non lorem. Aliquam non augue. Integer ut turpis. Vivamus metus.");
			var clonedPage:Page = newPage.clone();
		    
		    myPDF.addPage();
		    
		    myPDF.addImageStream( new jpgBytes() as ByteArray, 0, 0, 0, 0, 1, ResizeMode.RESIZE_PAGE );
		    
		    myPDF.addPage();
		    
		    myPDF.addImage( this, 0, 0, 0, 0, ImageFormat.PNG );
		    
		    myPDF.addPage();
		    
		    myPDF.addImageStream( new pngBytes() as ByteArray );
		    
		    myPDF.addPage();
		    
		    myPDF.addImage( this, 0, 0, 0, 0, ImageFormat.JPG, 20 );
			//交给javaServlet去处理,并返回,保存到本地。
			myPDF.save(Method.REMOTE,"http://localhost:8080/DWRTest/pdf.do","generated.pdf");
			
			//如果用air的话,用下边的
//			var f:FileStream = new FileStream();
//  			file = File.desktopDirectory.resolvePath("pdf/generate.pdf");
//  			
//  			f.open( file, FileMode.WRITE);
//  			var bytes:ByteArray = myPDF.save(Method.LOCAL);
//  			f.writeBytes(bytes);
//  			trace(file.nativePath);
//  			f.close();
			
		}
		
		private function generationStarted ( pEvt:ProcessingEvent ):void 
		
		{
			
			trace("pdf generation initiated : " + pEvt.duration / 1000 + " seconds");
			
		}
		
		private function pageTreeGeneration ( pEvt:ProcessingEvent ):void 
		
		{
			
			trace("page tree generated in : " + pEvt.duration / 1000 + " seconds");
			
		}
		
		private function resourcesEmbedding ( pEvt:ProcessingEvent ):void 
		
		{
			
			trace("resources embedded : " + pEvt.duration / 1000 + " seconds");
			
		}
		
		private function generationComplete ( pEvt:ProcessingEvent ):void 
		
		{
			
			trace("pdf generated in : " + pEvt.duration / 1000 + " seconds");
			
		}
		
		private function pageAdded ( pEvt:PageEvent ):void 
		
		{
			
			trace( pEvt.page );
			
		}
		
	]]>
</mx:Script>
</mx:Application>

 

package pdf;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class CreatePDFServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7614302935045138172L;

	public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}

	public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		int i = 0;
		int k = 0;
		int maxLength = req.getContentLength();
		byte[] bytes = new byte[maxLength];
		String method = req.getParameter("method");
		String name = req.getParameter("name");
		ServletInputStream si = req.getInputStream();
		while (true) {
			k = si.read(bytes, i, maxLength);
			i += k;
			if (k <= 0)
				break;
		}
		if (bytes != null) {
			ServletOutputStream stream = resp.getOutputStream();
			resp.setContentType("application/pdf");
			resp.setContentLength(bytes.length);
			resp.setHeader("Content-Disposition", method + ";filename=" + name);
			stream.write(bytes);
			stream.flush();
			stream.close();
			writeToFile(bytes);
		} else {
			resp.setContentType("text");
			resp.getWriter().write("bytes is null");
		}
	}

	private void writeToFile(byte[] bytes) {
		File file=new File("hello.pdf");
		try {
			file.createNewFile();
			FileOutputStream ps=new FileOutputStream(file);
			ps.write(bytes);
			ps.flush();
			ps.close();
			System.out.println(file.getAbsolutePath());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

 

分享到:
评论

相关推荐

    FLEX alive pdf 打印pdf

    标题中的"FLEX alive pdf 打印pdf"指的是使用Adobe Flex技术来实现PDF文档的打印功能。Flex是一种基于ActionScript 3.0的开源框架,用于构建富互联网应用程序(RIA)。AlivePDF是Flex的一个库,它允许开发人员在...

    高性能网站建设指南.pdf

    请注意,以上知识点是根据文件标题《高性能网站建设指南.pdf》推断的可能内容,并未直接基于文件提供的部分内容生成,因为这些内容主要是链接列表,而不是具体的指南或教程。在实际情况下,要准确生成知识点,我们...

    人工智能行业从CHAT-GPT到生成式AI(Generative AI):人工智能新范式,重新定义生产力-中信建投

    均指向人工智能模型的新范式“生成式AI模型(Generative Model)” 。 此前的决策式AI模型(Discriminant Model)是根据已有数据进行分析、判断、预测,典 型应用为内容的智能推荐(短视频)、自动驾驶等;而生成式...

    WebKit和Chromium源码及原理剖析.pdf

    - 配置SSL证书:生成自签名证书或者购买第三方证书。 - 启用HTTPS服务:编辑Apache配置文件,设置HTTPS相关的参数。 - 安装SPDY支持:安装必要的扩展库并配置Apache以支持SPDY协议。 #### 第8篇 网页在Safari...

    UPnP-arch-DeviceArchitecture-v1.1.pdf

    这包括了通告协议和标准,以及如何使用SSDP协议中的NOTIFY消息,如ssdp:alive表示设备可用,ssdp:byebye表示设备不可用,以及ssdp:update表示设备信息有更新。 搜索部分则描述了设备如何在UPnP网络中搜索其它设备。...

    腾讯+华为前端岗面试题(第一期).pdf

    6. &lt;keep-alive&gt;用于保持组件状态,防止每次切换路由时重新渲染。 7. axios是一个基于Promise的HTTP客户端,用于浏览器和node.js中的promise风格异步HTTP请求。 8. vue-loader用于解析.vue文件,是Vue单文件组件的...

    构建高性能web站点摘记.pdf

    开启HTTP的长连接(Connection: Keep-Alive)可以减少连接建立的开销,降低系统调用次数。此外,理解进程、内核级线程和用户级线程的优劣,以及各种IO模型(如mmap、sendfile、异步IO和多路IO复用等)也是优化并发...

    07-vue-router详解.pdf

    当用户请求一个URL时,服务器会使用正则表达式匹配并处理该请求,最后将生成的HTML或数据返回给前端。这种模式下,页面的各个模块需要后端人员编写和维护,而且前端开发人员需要使用服务器端语言来实现页面代码。...

    Nginx 中文官方文档.pdf

    1. 处理静态文件:Nginx能够高效地处理静态文件,包括索引文件的生成以及自动索引功能。 2. 反向代理加速:作为反向代理,Nginx可以对请求进行无缓存的加速,并实现简单的负载均衡与容错功能。 3. FastCGI支持:...

    linux下批量并行telnet对端端口的实现方法-电脑资料.pdf

    cat telnet_result.txt | grep -B 1 \| | grep [1-9] | awk '{print $3}' | cut -d ' ' -f1,2,3,4 &gt; telnet_alive.txt ``` 这将从telnet_result.txt文件中提取有效的IP地址,并将其记录到telnet_alive.txt文件中。 ...

    httpWatch使用教程.pdf

    例如,Accept-Encoding报头表明浏览器支持gzip或deflate压缩内容,而Connection报头则可能设置为Keep-Alive以保持TCP连接的持续性。 在"Header"部分,用户可以深入研究从Web服务器发送和接收的报头信息,这有助于...

    BT协议英文版pdf格式

    - **消息类型**:非心跳消息(keep-alive message)都以一个字节开始,指示消息类型,如Handshake、Choke、Unchoke等。 #### 六、BitTorrent的优势 - **高效的带宽利用**:由于下载者之间也可以相互上传数据,因此...

    Build Your SSRF Exploit Framework.pdf

    这个框架可能包括自动化的payload生成、多样的请求方法、对不同服务的探测以及结果收集和分析等功能,以最大化利用潜在的SSRF漏洞。 总的来说,理解SSRF的原理和利用技巧对于进行安全测试和防御这类攻击至关重要。...

    vue面试题-vue常见面试题和答案.pdf

    - **v-if**:根据条件动态地生成或移除DOM元素,首次渲染时若条件为假,元素不编译,节省了初始化开销,但频繁切换时性能消耗大。 4. **CSS作用域**: - 在组件的`style`标签上加上`scoped`,CSS样式将只对当前...

    银行备考英语高频词汇.pdf

    这份资料是针对应届计算机专业毕业生的银行备考...以上即为根据给定文件信息所生成的详细知识点,涵盖了词汇来源、选取原则、背诵方式、高频词汇内容等多个方面,旨在帮助应届计算机专业毕业生更好地备考银行英语考试。

    04-微医-Vue SSR 性能优化实践-齐云雷.pdf

    SSR(Server-Side Rendering)即服务器端渲染,是一种通过服务器端来生成HTML内容的技术。与传统的前端JavaScript框架渲染方式不同,SSR可以在服务器端完成页面内容的拼接和渲染工作,然后将渲染好的HTML发送给...

    HTTP头(HTTPheader)详解.pdf

    - `Connection`:指定连接选项,如`keep-alive`保持连接开放。 - `Date`:记录消息生成的日期和时间。 - `Pragma`:与Cache-Control类似,用于旧版HTTP的缓存控制。 - `Trailer`:指示chunked编码消息尾部的头部...

    前端笔试题-欢聚集团-YY直播.pdf

    `Keep-Alive`是保持TCP连接持续开放的机制,以减少网络开销,而`multiRequest`函数示例展示了如何并发发送多个请求,同时注意控制并发数量以避免服务器压力过大。 数据格式和解析方面,`base64`和`UTF-8`是两种常见...

Global site tag (gtag.js) - Google Analytics