我有这个pdf文件可以提取数据,但问题是,当我将这段代码作为一个简单的java程序运行时,它就像一个魅力,但是当我在JSP上尝试这段代码时,它给出了这个异常,而我无法弄清楚这个异常是用来做什么的?我正在使用iText API从PDF中提取文本。
我的代码片段:
<%
String Source = "Resource/text.pdf";
PdfReader reader;
try {
//java.net.URL SourcePDF = getClass().getResource("RawMaterial/text.pdf");
reader = new PdfReader(Source);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
TextExtractionStrategy strategy = null;
for (int i = 1; i <= reader.getNumberOfPages(); i++)
{
strategy = parser.processContent(i,new SimpleTextExtractionStrategy());
System.out.println(strategy.getResultantText());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
%>例外是:
java.io.IOException: Resource/text.pdf not found as file or resource.
at com.itextpdf.text.io.RandomAccessSourceFactory.createByReadingToMemory(RandomAccessSourceFactory.java:263)
at com.itextpdf.text.io.RandomAccessSourceFactory.createBestSource(RandomAccessSourceFactory.java:173)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:219)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:207)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197)
at org.apache.jsp.test_jsp._jspService(test_jsp.java:120)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)发布于 2015-06-15 07:32:28
最后,问题解决了,我只是在开始时添加了这一行代码,然后指定了路径-
<%
String relativePath = getServletContext().getRealPath("/");
String Source = relativePath +"Resource/text.pdf";
...
...
%>发布于 2015-06-08 11:09:29
当包为war/jar或您选择的任何东西时,您的文件都不会被找到,因为它可能位于不同的位置。检查您的war文件,您可以在/classes/some/package下找到它。因此,在本例中,将其读入具有相对路径的资源。
使用类加载器..。
ClassLoader.getResourceAsStream ("your/pkg/Resource/text.pdf");或者你可以把它作为url
URL url = getClass().getClassLoader().getResource("your/pkg/Resource/text.pdf");https://stackoverflow.com/questions/30707311
复制相似问题