2011-06-08 97 views
-1

Whene我在浏览器上打开PDF我想将它打印在div而不是所有页面中。 我该怎么做?这里是我的JSP代码:将PDF打印到div中

<%@ page language="java" import="com.search.ts.* 
           ,java.io.* 
           ,java.net.* 
           ,javax.xml.namespace.QName 
           ,javax.jws.* 
           ,javax.xml.ws.* " 
                contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Ebook reader</title> 

<%@ page language="java" import="com.search.ts.CallSEI_CallSPort_Client,java.util.*,com.search.ts.Links,com.search.ts.LinksResponse" %> 

<link rel="stylesheet" type="text/css" href="style.css" /> 

</head> 
<body> 

      <div id="right_section"> 
       <div class="right_box"> 

<% 

     String filename= request.getParameter("err"); 
     //String filename =(String) request.getAttribute("linkbook"); 
     File file = new File("F:/fichiers/", filename+".pdf"); 

     response.setContentType(getServletContext().getMimeType(file.getName())); 
     response.setContentLength((int) file.length()); 
     response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\""); 

     BufferedInputStream input = null; 
     BufferedOutputStream output = null; 

     try { 
      input = new BufferedInputStream(new FileInputStream(file)); 
      output = new BufferedOutputStream(response.getOutputStream()); 

      byte[] buffer = new byte[8192]; 
      int length; 
      while ((length = input.read(buffer)) > 0) { 
       output.write(buffer, 0, length); 
      } 
     } finally { 
      if (output != null) try { output.close(); } catch (IOException ignore) {} 
      if (input != null) try { input.close(); } catch (IOException ignore) {} 
     } 


     %> 


      </div> 
</div> 


</body> 
</html> 

回答

0

我是在似乎prbm你必须从第一个pdf页面发送一个链接,其名称为pdf(myfile.pdf),如下所示:

<a href="pdfread.jsp?err=<%=filename %>"><%=bookName %> </a> 

页面pdfread.jsp,该页面中把那个

<% 
    String filename= request.getParameter("err"); 
%> 
<embed src="${pageContext.request.contextPath}/pdfreader/<%=filename %>#toolbar=0&navpanes=0&scrollbar=0" width="500" height="375"> 
    </embed> 

与此代码,必须把它放在一个做一个servlet得到

String filename= request.getParameter("err"); 
    //String filename =(String) request.getAttribute("linkbook"); 
    File file = new File("F:/fichiers/", filename+".pdf"); 

    response.setContentType(getServletContext().getMimeType(file.getName())); 
    response.setContentLength((int) file.length()); 
    response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\""); 

    BufferedInputStream input = null; 
    BufferedOutputStream output = null; 

    try { 
     input = new BufferedInputStream(new FileInputStream(file)); 
     output = new BufferedOutputStream(response.getOutputStream()); 

     byte[] buffer = new byte[8192]; 
     int length; 
     while ((length = input.read(buffer)) > 0) { 
      output.write(buffer, 0, length); 
     } 
    } finally { 
     if (output != null) try { output.close(); } catch (IOException ignore) {} 
     if (input != null) try { input.close(); } catch (IOException ignore) {} 
    } 

看到这个链接做

How to use doGet in jsp with Servlet

0

有与涉及较少的代码更简单的方式....看看 http://www.webdeveloper.com/forum/showthread.php?t=152923

+0

你可以在这里发布代码,以防链接网站在未来发生故障吗?另外,保持链接到原来的。将这些事情备份起来是一个不错的主意,这样如果两年后有人来到你的链接页面,他们仍然会有解决方案。 – 2011-06-08 19:33:56

+0

您应该将工作解决方案从您的链接复制到此答案(至少是代码),以防链接将来死亡,以便人们可以通过SO访问解决方案。 – 2011-06-08 19:40:23