怎么样把一个复杂jsp页面转换成pdf

怎么样把一个复杂jsp页面转换成pdf,第1张

最简单而且实用的使用虚桥腔衫拟打印机pdf factory即可,可以把任意只要能够打印的格式文件都可以做成PDF文件,并且可以把多个文件通过打印之后合成一个PDF文件。

pdfFactory Pro(虚拟打印机)是一个无须 Acrobat 创建 Adobe PDF 文件的打印机驱动程序。pdfFactory Pro(虚拟打印机)提供的创建 PDF 文件的方法比其他方法更方便和高效。 功能包括: 多个文档整合到一个 PDF 文件中内嵌字体通过 E-mail 发送预览自动压缩优化。圆配

PDF Factory是pdf虚拟打印机软件,下载安装好PDF Factory后,我们在打印机控制面板中就可以找到一台由pdf Factory虚拟出来的打印机,可以把任何可以打印的文件转换成pdf文件。用任何可以支持打印输出的软件,把需要处理的文件逐个打印到这个虚拟打印机,全部打印完成后可把结果保存成一个pdf文件。甚至可以把不同软件格式的文件,如word、excel、photoshop等任何可以支持打印的文件,打印到同一个pdf文件。

在打印之前,在PDF Factory Pro里面设置一下PDF的打开、打印等权限即可实现加密等目的;

在打印之前,在设置里面,就把加载所有的系统字体选中。

在打印界面出来后,可以在左侧设置水印。然后再保存PDF文件。

打印完毕后,下载一个Adobe Reader,然后安装,可以很流畅的阅读PDF文件。敏腔

1. 装acrobat专斗改业版,然后打开图片,送Adobe PDF打印机,可以保存成空前判PDF文件。

2. 找一个支持PDF文件格悔衡式的第三方控件,因为PDF文件格式是专有的。

先在服务器上生成PDF文件,然后用户通过点击指向PDF文件的超链接选择下载或打开。这是一个思路,或者说是思路之一。本文实现了这个思路,又给出另外一个思路并通过两种途径实现之。

1)直接在服务器上生成PDF文件。

<%@ page import ="com.lowagie.text.*

,com.lowagie.text.pdf.*, java.io.*"%>

<%

String filename =

"PDF"+(new Random()).nextInt()+".pdf"

Document document =

new Document(PageSize.A4)

ServletOutputStream out1

= response.getOutputStream()

try{

PdfWriter writer =

PdfWriter.getInstance(document,

new FileOutputStream(filename) )

document.open()

document.add(new Paragraph("Hello World"))

document.close()

}

catch(Exception e){}

%>

上面的程早和序在服务器上生成了一个静态的PDF文件。显然,每次运行所得的PDF文件的名高芦称应该是独一无二不能有重的。本程序通过随机函数来命名生成的PDF文件。本程序的缺点就是,每次运行都会在服务器上产生一个PDF文件,如果不及时删除,数量戚睁带会越来越大,这显然是站点维护者所不愿意看到的。

2)将PDF文件通过流的形式输送到客户端的缓存。这样做的好处是不会在服务器上留下任何“遗迹”。

i)直接通过JSP页面生成

<%@

page import="java.io.*,

java.awt.Color,com.lowagie.text.*,

com.lowagie.text.pdf.*"%>

<%

response.setContentType

( "application/pdf" )

Document document = new Document()

ByteArrayOutputStream buffer

= new ByteArrayOutputStream()

PdfWriter writer=

PdfWriter.getInstance( document, buffer )

document.open()

document.add(new Paragraph("Hello World"))

document.close()

DataOutput output =

new DataOutputStream

( response.getOutputStream() )

byte[] bytes = buffer.toByteArray()

response.setContentLength(bytes.length)

for( int i = 0

i <bytes.length

i++ )

{

output.writeByte( bytes[i] )

}

%>

ii)通过Servlet生成

import java.io.*

import javax.servlet.*

import javax.servlet.http.*

import com.lowagie.text.*

import com.lowagie.text.pdf.*

public void doGet

(HttpServletRequest request,

HttpServletResponse response)

throws IOException,ServletException

{

Document document =

new Document(PageSize.A4, 36,36,36,36)

ByteArrayOutputStream ba

= new ByteArrayOutputStream()

try

{

PdfWriter writer =

PdfWriter.getInstance(document, ba)

document.open()

document.add(new

Paragraph("Hello World"))

}

catch(DocumentException de)

{

de.printStackTrace()

System.err.println

("A Document error:" +de.getMessage())

}

document.close()

response.setContentType

("application/pdf")

response.setContentLength(ba.size())

ServletOutputStream out

= response.getOutputStream()

ba.writeTo(out)

out.flush()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12214066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存