当前位置:  技术问答>java相关

IE中如何直接浏览WORD和PDF文件?

    来源: 互联网  发布时间:2017-04-12

    本文导语:  我想在ie中直接浏览word和pdf文件(不需要修改),不要求本机安装office和Acrobat Reader。请问可以实现吗?如何实现。高分相送!!!分不够,我再加!! | 客户端需要安装阅读工具 JAVA PDF解...

我想在ie中直接浏览word和pdf文件(不需要修改),不要求本机安装office和Acrobat Reader。请问可以实现吗?如何实现。高分相送!!!分不够,我再加!!

|
客户端需要安装阅读工具

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类型就可以做到。 


|
如果客户端不安装word就可以看,就需要你再服务器端对word文档进行解析,不过我觉得这个很困难,因为word文档格式是微软保密的,现在的wps也不能说是对word文档100%兼容,这样太复杂了,也许xml是一个突破口,至于pdf,我也不清楚,关注一下

    
 
 

您可能感兴趣的文章:

  • 设置sharepoint 2010文档库中的 pdf文件在浏览器中访问的打开方式
  • 浏览器上传文件插件 Stream
  • 关于从浏览器中读取文件的问题
  • 请问如何使客户端浏览器一定下载某个文件,而不是打开该文件(哪怕这个文件是HTML或JPG)?
  • 蔡鸟:怎样在控制台下上网?浏览网页?看.html文件?放音乐?
  • 在浏览器页面中的“中文”文件路径及名的文件连接的地址,点击鼠标右键——“目标另存为”怎样顺利保存到本地?
  • 请教:如何将mozilla浏览器中用户提交的信息保存为配置文件?
  • 浏览器在linux下,允许访问本地文件的设置问题
  • 请问怎么可以控制在浏览中的文件属性?
  • 帮助文件浏览工具 HelpGUI
  • Linux系统下浏览PPT文件
  • 日志文件浏览工具 LogSaw
  • 日志文件浏览器 lnav
  • 为什么我的浏览器不能观看带有JAVASCRIPT语言的HTML文件
  • 请问.pdg文件用什么浏览器看?
  • 请问,使用GTK如何显示标准的浏览文件夹的对话框?HILDON提供吗?
  • pdf 文件可不可在linux 操作系统下浏览的?
  • 双系统:如何在windows里浏览和运行linux的程序或文件?
  • 为何我启动第二个浏览器窗口的时候跳出一个选择用户配置文件的窗口?
  • 请问用Mozilla浏览器如何显示Flash文件?
  • Eclipse文件浏览器插件 ExploreFS
  • 求救:我应聘一家公司,老板出的题目是在Linux下用浏览器观看word或execl,我只需要一点资料先应付过去,或者一点思路也可以。这家公司我
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • 我的IE浏览器崩溃,怎么办?(不能浏览了!)急。。。。。
  • 最新谷歌浏览器(google chrome)官方正式稳定版下载(2014版_2015版谷歌浏览器下载)
  • 浏览器不能浏览JAVA2写的Applet,那里可有升级包?
  • IE(Internet Explorer)浏览器中启用cookie的步骤
  • Android 图片浏览器 雪梦图片浏览器
  • 微软浏览器IE 11(InternetExplorer 11)简体中文预览版介绍及下载地址
  • 使用php检测用户当前使用的浏览器是否为IE浏览器
  • php5中当浏览器禁用cookie时保持会话session的方法
  • 如何防止按浏览器右上角的"x" 来关闭浏览器
  • 新手请教一段javascript代码,如何设置浏览者浏览器的字体?
  • 红旗Linux浏览http://localhost为什么浏览不了了,说服务器关闭或没连接,怎么启动服务器呀??
  • 如何在red hat的网页浏览器中浏览使用ipv6协议的网页?
  • 第一天接触LINUX,我的LINUX自带的网景浏览器为何浏览网页的时候问题如此多呢???
  • 用3G无线上网卡上网必须用sudo运行浏览器才能浏览网页!
  • 我的小应用程序在JCREATOR的Appletviewer里可以浏览但是不能在浏览器里运行这是为什么
  • 用浏览器看applet,总是只能看到修改前的applet,关了浏览器,再开,还是只能看到修改前的,难道真的要重启机子?太夸张了
  • linux系统下的火狐浏览器在浏览网页的时候一直提示:您需要其他插件以显示此页面的所有媒体
  • (新手)请教如何通过tomcat运行自己写的jsp,在浏览器上浏览页面?
  • redhat9.0下,我安装了紫光输入法和firefox浏览器,结果发现在firefox下用“Ctrl-Shift”切换不出输入法,怎么办?有其他输入法或者浏览
  • 菜鸟用tomcat3.2,在他的root目录下建立了一个test1.jsp.用浏览器显示正常,但我后来删掉了,可用浏览器还可以看到test1.jsp,这是怎么回事


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3