访问iText中的外部URL资源

时间:2011-02-09 21:27:36

标签: java itext

我正在使用Mojarra,PrimeFaces和Tomcat 6.x开发JSF 2.0项目,但在前面我有一个Apache HTTP服务器。

我创建了一个Web表单,我可以在其中选择要合并的PDF文件。这些文件在Apache HTTPD控制下的目录中是我的WAR的外部文件。我使用iText 2.1.7合并PDF文件。

目前我正在按如下方式访问文件:

PdfReader reader1 = new PdfReader(new URL("file:///appli/Vignette/vcm/inst-vgninst/docroot_CDC" + file));

但是,我想通过HTTP访问它们:

PdfReader reader1 = new PdfReader(new URL("http://centos" + file));
  • centos是我的服务器的名称,部署了webapp。
  • file是一个字符串变量,看起来像“/folder/folder1/file.pdf”

这失败了。但是网址浏览器可以访问网址http://centos/folder/folder1/file.pdf

出了什么问题,如何解决?

2 个答案:

答案 0 :(得分:4)

PdfReader显然无法直接使用指向外部资源的网址。如果您真的打算使用URL而不是FileFileInputStream,那么最好的办法就是使用URL#openStream()InputStream返回PdfReader 1}}。它也就是constructor

PdfReader reader1 = new PdfReader(new URL("http://centos" + file).openStream());

答案 1 :(得分:1)

首先通过Web Driver初始化该资源。有关详细信息,请参阅以下代码 -

WebDriver ie_driver = BrowserFactory.startBrowser("ie","https://www.tutorialspoint.com/sql/pdf/index.pdf");
ie_driver.manage().window().maximize();
PdfReader reader = new PdfReader(new URL("https://www.tutorialspoint.com/sql/pdf/index.pdf").openStream());
System.out.println("This PDF has "+reader.getNumberOfPages()+" pages.");
String page = PdfTextExtractor.getTextFromPage(reader, 1);
System.out.println("Page Content:\n\n"+page+"\n\n");
System.out.println("Is this document tampered: "+reader.isTampered());
System.out.println("Is this document encrypted: "+reader.isEncrypted());