2
这是用于生成PDF的Java类。我正在使用iText来生成PDF。在使用itext进行pdf转换时遇到问题
public class pdfgen {
public void createPdf(String inputFile, String outputFile, boolean isPictureFile)
{
Rectangle pageSize = new Rectangle(2780, 2525);
Document pdfDoc = new Document(pageSize);
String pdfFilePath = outputFile;
try {
FileOutputStream fileOutputStream = new FileOutputStream(pdfFilePath);
PdfWriter writer = null;
writer = PdfWriter.getInstance(pdfDoc, fileOutputStream);
writer.open();
pdfDoc.open();
if (isPictureFile){
pdfDoc.add(com.itextpdf.text.Image.getInstance(inputFile));
}
else{
URL url=new URL(inputFile);
URLConnection conn = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line; while ((line = in.readLine()) !=null) {
System.out.println(line);
}
System.out.println(inputFile);
in.close();
File file = new File(inputFile);
pdfDoc.add(new Paragraph(org.apache.commons.io.FileUtils.readFileToString(file)));
}
pdfDoc.close();
writer.close();
}catch(DocumentException e){
System.err.println("The error has occured in the document");
}catch(FileNotFoundException e){
System.err.println("Your file is not found.");
}
catch(Exception e){
System.err.println("Exception: "+e);
}
}
}
这是我的JSP文件,在其中我打电话我上面的类
<%@ page language="java" 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">
<%@ page import="java.util.Vector" %>
<%@page import="com.dalkin.pdfgen" %>
<% Vector result=(Vector)request.getAttribute("val");%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Output </title>
</head>
<body>
<%Vector names; %>
<%if(arrcol.size()!=0){ %>
<div style="width:1024px;">
<table cellpadding="5" cellspacing="5">
<tr>
<td>
<%for(int q=0;q<result.size();q+=3){ %>
<div style="background:url(sample.gif) no-repeat; height:320px; width:500px; float:left;">
<input type="text" size="50" value=<%=result.get(q) %>>
<input type="text" size="50" value= <%=result.get((q+1))%>>
<input type="text" size="50" value=<%=result.get((q+2))%>>
</div>
<%}} %>
</td>
</tr>
</table>
</div>
<%pdfgen pf = new pdfgen();
pf.createPdf("http://localhost:8080/New/FirstServlet","D:\\first.pdf",false);%>
</body>
</html>
当我跑我得到FileNotFoundException "http://localhost:8080/New/FirstServlet" Your file is not found.
谁能帮我的节目,我做错了什么?
你做的StringBuffer TEMP =空字符串;字符串行; while((line = in.readLine())!= null){temp.append(line); } ---所以你使用一个明确设置为null的StringBuffer。显然你会得到一个NPE。 – mkl
同样的错误? FNF还是NPE?您目前的代码是什么?您可能需要相应地更新原始文章。如果您想要其他方法来实现您的目标,请正确描述您想要实现的目标。 – mkl
所以你的工作流程是:1)有人调用你的JSP页面; 2)JSP页面建立一些表格(顺便说一句,你的arrcol似乎没有在任何地方定义过); 3)JSP页面触发你的createPdf方法来创建一些PDF, 4)createPdf连接到由FirstServlet表示的本地本地Web服务(在同一个Web容器中?在另一个Web容器中),5)该Web服务创建一些明确的文本响应,6)createPdf从该文本创建PDF并存储它本地和7)您的JSP页面返回一些HTML。流程的哪些部分是实际需求,哪些部分是任意实施选择? – mkl