社区
Web 开发
帖子详情
用jsp写WEB与PDF档的应用??
ahwhmou
2002-03-15 09:29:39
请问有谁可以知道:在WEB的系统用jsp写WEB与PDF档的应用,这方面资料也行,给高分,在这先谢谢了!!!
...全文
178
3
打赏
收藏
用jsp写WEB与PDF档的应用??
请问有谁可以知道:在WEB的系统用jsp写WEB与PDF档的应用,这方面资料也行,给高分,在这先谢谢了!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rjcludy
2002-03-15
打赏
举报
回复
JAVA PDF解决方案
(邢雅莉 2001年07月17日 18:01)
概述 Java Servlet 编程可以很方便地将 HTML 文件发送到客户端的 Web 浏览器。然而许多站点还允许访问非 HTML 格式的文档,包括 Adobe PDF、Microsoft Word 和 Micorsoft Excel 等。事实上这些非 HTML 格式只要能用 MIME 类型表示,就可以利用 servlet 来发送。本文将以 PDF为例,向你介绍如何使用 servlet 传送非 HTML 格式文件及该文件是如何在服务器端用Java生成的。
你只要将文件写到servlet 的输出流中,就可以利用 servlet 在浏览器中打开一个文件。首先从获得 servlet 的输出流开始:
ServletOutputStream out = res.getOutputStream();
互联网上使用 MIME (multipurpos Internet mail extension 多目的互联网邮件扩展协议)来传送混合格式、多媒体和二进制数据文件。如果要在 servlet 的 response 对象中打开某个文档,就必须设置该文档的 MIME 类型。
向Web客户端发送PDF文档
(一)MIME类型
Web 浏览器使用 MIME 类型来识别非 HTML 文档,并决定如何显示该文档内的数据。将插件 (plug-in) 与 MIME 类型结合使用,则当 Web 浏览器下载 MIME 类型指示的文档时,就能够启动相应插件处理此文档。某些 MIME 类型还可以与外部程序结合使用,浏览器下载文档后会启动相应的外部程序。
MIME 类型非常有用。它们允许 Web 浏览器处理不同格式的文档,却不需要事先嵌入相关知识。Java Servlets 可以使用 MIME 类型来向浏览器传送非 HTML 文件,比如 Adobe PDF 和 Micorsoft Word。使用正确的 MIME 类型能够保证这些非 HTML 文件被正确的插件或外部程序显示。
PDF 文件的 MIME 类型是 "application/pdf"。要用servlet 来打开一个 PDF 文档,需要将 response 对象中 header 的 content 类型设置成 "application/pdf":
// PDF 文件的 MIME 类型
res.setContentType( "application/pdf" );
(二)Content disposition
HTTP response header中的content-disposition 允许 servlet 指定文档表示的信息。使用这种header ,你就可以将文档指定成单独打开(而不是在浏览器中打开),还可以根据用户的操作来显示。如果用户要保存文档,你还可以为该文档建议一个文件名。这个建议名称会出现在 Save As 对话框的“文件名”栏中。如果没有指定,则对话框中就会出现 servlet 的名字。在 servlet 中,你需要将 header 设置成下面这样:
res.setHeader("Content-disposition",
"attachment; filename=" +
"Example.pdf" );
// attachment -因为不希望在浏览器中直接打开它,而是利用Adobe Acrobat。
// 可以通过设置default file name来确定保存文当时的建议名称。
(三)封装非 HTML 文档
完成上述工作后,剩下的就非常简单了。你需要根据待传送文件的名字,创建一个 java.net.URL 对象。交给 URL 构造器的字符串必须是指向该文件的一个有效 URL 地址。在这里,我要打开本地的PDF文档:
String fileURL = "http://localhost/aboutadobe/careeropp/pdfs/tables.pdf;
URL 字符串也可以类似于 http://www.gr.com/pub/somefile.doc 或 http://www.gr.com/pub/somefile.xls。但必须确保待传送文件类型与先前在 HTTP response 对象中设置的 MIME 类型一致。
(四)其他
开始阅读传送的文档之前,首先要从 URL 对象中获得输入流 InputStream,用 BufferedInputStream 将 InputStream 封装起来。
BufferedInputStreambis = newBufferedInputStream(url.openStream());
一旦你完成上述操作,就只要简单地将 InputStream 中的字节,写入到 servlet 的输出流 OutputStream 中:
BufferedOutputStreambos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
intbytesRead;
// 一个简单的读写循环
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
在最后的代码块中,关闭这些流 ,如:bos.close();
PDF文档在服务器端的生成
利用iText040工具包可以很方便的输出一个十分漂亮的PDF文档。
1.Document的创建
Document document=new Document(p0, p1, p2, p3, p4)
其中,p0为页面的大小,如 PageSize.A4; p1—p4分别描述上下左右页边空白。
2. 构造复写器
PdfWriter.getInstance(document, new FileOutputStream("tables.pdf"))
执行程序后,将在当前目录下生成一个名为tables.pdf的文件。
接着打开Document:document.open()
3. 根据需要定义一个Table
//一个拥有十列的Table
Table datatable = new Table(10);
//定义Cell与Cell之间的距离为零
datatable.setCellpadding(0);
//定义Cell的间隔
datatable.setCellspacing(3);
//使Table没有边框
datatable.setBorder(Rectangle.NO_BORDER);
//定义每一列的宽度
intheaderwidths[] = {10, 30, 15, 15, 5, 5, 5, 5, 5, 5};
datatable.setWidths(headerwidths);
datatable.setWidth(100);
4.字体的定义:
BaseFont bf = BaseFont.createFont(String name, String encoding, boolean embedded)
“name”为字体名,“encoding”为编码名称。
5. Cell的定义
Cell cell = new Cell(new Phrase("String string",f));
String为Cell中要显示的内容。另外有很多方法来控制Cell,其中比较常用的几个方法如下:
cell.setBorder(int value)
根据经验,value值对应的边框形状见下图:
图例 Value 整数值
Rectangle.ALIGN_BOTTOM 6
Rectangle.ALIGN_BASELINE 7
Rectangle.ALIGN_CENTER 1
Rectangle.ALIGN_JUSTIFIED 3
Rectangle.ALIGN_MIDDLE 5
Rectangle.ALIGN_RIGHT 2
Rectangle.ALIGN_TOP 4
cell.setColspan(int value)和 cell.setRowspan(int value)分别定义了cell所占的列和行。
值得注意的是:一行中各cell所占列的总和一定要严格符合构造table时定义的列数。
cell.setHorizontalAlignment(int value)和cell.setVerticalAlignment(int value)分别确定该cell将处在水平及竖直方向上的位置。
最后,将cell加入到table中去:table.addCell(Cell cell)
6.table加到document中去,并关闭document:
document.add(table);
document.close();
小结
正如你所读到的,利用iText040编写一个可以输出PDF文档的JavaBean。接着,再通过sevlet将它输出到客户端,相当简单。只要你使用适当的方法,设置正确的MIME类型就可以做到。
jimjxr
2002-03-15
打赏
举报
回复
iText:http://www.lowagie.com/iText/,这个是文中提到的iText040工具包。
waterdragonfly
2002-03-15
打赏
举报
回复
收藏先
JSP
应用
开发详解与实战指南(中文高清
PDF
)
本文全面介绍了
JSP
技术,涵盖基础语法、EL表达式、JSTL标签库、Servlet交互、MVC模式
应用
等内容。通过详细的代码示例和逻辑分析,帮助开发者掌握
JSP
在
Web
开发中的核心
应用
,提升开发效率与系统可维护性。
java
jsp
pdf
_java – 在
jsp
中显示
pdf
本文介绍了一个常见的问题,即在
JSP
页面中显示
PDF
内容时,出现ASCII值而非可读格式。原来使用
JSP
直接显示
PDF
会导致文件损坏。推荐使用Servlet来处理文件下载任务,提供了一个Servlet示例代码,该代码可以正确设置HTTP响应头并传输文件内容,确保
PDF
能够正常显示或下载。同时,文章提到了内联显示
PDF
的HTML链接方法以及浏览器的优雅降级策略。
java
jsp
动态生成
pdf
_在
Web
应用
中动态创建
PDF
文件
本文介绍了如何在
Web
应用
中使用iText库动态创建
PDF
文
档
,满足特定需求,例如通过浏览器下载和用Adobe Acrobat Reader阅读。文章详细讲解了iText的API,以及如何结合servlet在服务器端生成
PDF
,并给出了
PDF
Servlet的示例代码。
java
web
技术及
应用
pdf
_JAVA
WEB
应用
设计及实战
PDF
下载
本书详细介绍了
JSP
与Servlet技术的
应用
,涵盖
Web
应用
程序开发、数据库访问、第三方控件使用、Ajax交互等内容,并深入探讨了Linux环境下
Web
项目的部署。
Java
Web
应用
动态生成
PDF
文件的问题整理
本文介绍了在Java
Web
环境中如何动态生成
PDF
文件,通过ByteArrayOutputStream存储数据,使用class1处理输出流,接着class2从输入流中处理数据,实现
PDF
的生成过程。
Web 开发
81,111
社区成员
341,726
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章