java 直接打开pdf文件

第一种:

1、  思路:a、判断原文类型,若为pdf,则单独处理;

b、调用本地的adobe插件进行浏览

2、  代码

 <object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000"

width="990" height="700" border="0" top="-10" name="pdf">

<param name="toolbar" value="false">

<param name="_Version" value="65539">

<param name="_ExtentX" value="20108">

<param name="_ExtentY" value="10866">

<param name="_StockProps" value="0">

  <param name="SRC" value="<%=strFileName%>">

</object>

 

3、  截图

4、  优势

采用此方法,不会单独跳出界面调用本地浏览器查看。

5、  缺陷

由于插件中有保存副本,快照,复制,发送等功能,仍然破坏了档案的保密性。

 

第二种

1、  思路:a、判断原文类型,若为pdf,则单独处理;

b、调用本地的adobe插件进行浏览;

c、利用<p>的属性,将本地插件的工具栏上移;

2、  代码

     <p style="margin-top:-50px;margin-bottom:0px;">               

      <object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="600" border="0">

                        <param name="_Version" value="65539">

                        <param name="_ExtentX" value="20108">

                        <param name="_ExtentY" value="10866">

                        <param name="_StockProps" value="0">

                        <param name="SRC" value="<%=strFileName%>">

                        </object>

                        </p>

3、  截图

4、  优势

A、采用此方法,不会单独跳出界面调用本地浏览器查看。

B、 且保存、复制等泄密功能不可见;

5、  缺陷

若本地pdf浏览器为acrobat,或者adobe版本为9.0,则就不能放大缩小查看。

 

第三种

1、  思路:a、判断原文类型,若为pdf,则单独处理;

b、调用本地的adobe插件进行浏览;

c、利用<div>以及<iframe>的属性,将本地插件的保存、复制按钮遮挡住;

2、  代码

    <object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="990" height="700" border="0" top="-10" name="pdf">

                   <param name="toolbar" value="false">

                   <param name="_Version" value="65539">

                   <param name="_ExtentX" value="20108">

                   <param name="_ExtentY" value="10866">

                   <param name="_StockProps" value="0">

                   <param name="SRC" value="<%=strFileName%>">

                   </object> 

  <iframe   style="position:absolute;left:0px;top:0px;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0)" src="about:<div   style='border:1px   solid   red;width:100px;height:50px;'>文字</div>"></iframe> 

 

3、  截图

4、  优势

a)         采用此方法,不会单独跳出界面调用本地浏览器查看。

b)        且保存、复制等泄密功能不可见;

5、  缺陷

A、若本地pdf浏览器为除acrobat以外的adobe产品,一旦触发控件中某操作,<iframe>就会消失,知道再次触发页面。

B、 采用层或者<iframe>,涉及到浏览器的类别,以及电脑屏幕的尺寸等等。

 

 

第四种

1、  思路:a、判断原文类型,若为pdf,则单独处理;

b、采用输出流来浏览pdf

2、  代码

   response.setContentType("application/pdf; charset=gbk");

                                     response.setHeader("Content-disposition",path);

                                     InputStream is = null;

                                     OutputStream os = null;

                                     try {

                                               is = new FileInputStream(path);

                                               os = response.getOutputStream();

                                               int readLen = 0;

                                               byte[] bytes = new byte[1024];

                                               while ((readLen = is.read(bytes)) != -1) {

                                                        os.write(bytes, 0, readLen);

                                               }

                                     } catch (IOException ex) {

                                               ex.printStackTrace();

                                     } finally {

                                               if (is != null)

                                                        is.close();

                                               if (os != null)

                                                        os.close();

                                               out.clear();

                                               out = pageContext.pushBody();

                                     }

                           

                            } else if (path.indexOf(".ppt") != -1) {

                                     response.setContentType("application/vnd.ms-powerpoint; charset=gbk");

                                     response.setHeader("Content-disposition",path);

                                     InputStream is = null;

                                     OutputStream os = null;

                                     try {

                                               is = new FileInputStream(path);

                                               os = response.getOutputStream();

                                               int readLen = 0;

                                               byte[] bytes = new byte[1024];

                                               while ((readLen = is.read(bytes)) != -1) {

                                                        os.write(bytes, 0, readLen);

                                               }

                                     } catch (IOException ex) {

                                               ex.printStackTrace();

                                     } finally {

                                               if (is != null)

                                                        is.close();

                                               if (os != null)

                                                        os.close();

                                               out.clear();

                                               out = pageContext.pushBody();

                                     }

 

3、  截图

4、  优势

a)         采用此方法,不会单独跳出界面调用本地浏览器查看。

5、  缺陷

A、存在保存、复制等泄密功能

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EasyPoi主要是用来处理Excel文件的,不支持将Java对象直接转换为PDF文件。但是,EasyPoi可以将Excel文件转换为PDF文件。具体步骤如下: 1. 创建一个Excel对象。 ```java Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), clazz, data); ``` 其中,clazz表示JavaBean的Class对象,data表示要导出的数据列表。 2. 创建一个PDF输出。 ```java PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf")); ``` 3. 创建一个PDF文档对象。 ```java Document document = new Document(); ``` 4. 打开文档。 ```java document.open(); ``` 5. 将Excel对象写入PDF文档。 ```java PdfPTable table = new PdfPTable(1); PdfPCell cell = new PdfPCell(new Paragraph("Excel数据")); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); PdfContentByte cb = writer.getDirectContent(); PdfTemplate template = cb.createTemplate(PageSize.A4.getWidth(), PageSize.A4.getHeight()); PdfGraphics2D graphics = new PdfGraphics2D(cb, PageSize.A4.getWidth(), PageSize.A4.getHeight()); Rectangle2D rectangle = new Rectangle2D.Double(0, 0, PageSize.A4.getWidth(), PageSize.A4.getHeight()); graphics.setClip(rectangle); table.setTotalWidth((float) rectangle.getWidth()); table.writeSelectedRows(0, -1, 0, (float) rectangle.getHeight(), graphics); cb.addTemplate(template, 0, 0); ``` 6. 关闭文档。 ```java document.close(); ``` 完整的示例代码如下: ```java import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.itextpdf.text.Document; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.*; import org.apache.poi.ss.usermodel.Workbook; import java.awt.geom.Rectangle2D; import java.io.FileOutputStream; import java.util.List; public class ExcelToPdf { public static void main(String[] args) { try { // 创建一个Excel对象 Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), clazz, data); // 创建一个PDF输出 PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf")); // 创建一个PDF文档对象 Document document = new Document(); // 打开文档 document.open(); // 将Excel对象写入PDF文档 PdfPTable table = new PdfPTable(1); PdfPCell cell = new PdfPCell(new Paragraph("Excel数据")); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); PdfContentByte cb = writer.getDirectContent(); PdfTemplate template = cb.createTemplate(PageSize.A4.getWidth(), PageSize.A4.getHeight()); PdfGraphics2D graphics = new PdfGraphics2D(cb, PageSize.A4.getWidth(), PageSize.A4.getHeight()); Rectangle2D rectangle = new Rectangle2D.Double(0, 0, PageSize.A4.getWidth(), PageSize.A4.getHeight()); graphics.setClip(rectangle); table.setTotalWidth((float) rectangle.getWidth()); table.writeSelectedRows(0, -1, 0, (float) rectangle.getHeight(), graphics); cb.addTemplate(template, 0, 0); // 关闭文档 document.close(); System.out.println("PDF文件已生成!"); } catch (Exception e) { e.printStackTrace(); } } } ``` 需要注意的是,上述代码中的clazz和data需要根据实际情况进行替换,以便生成正确的Excel数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值