有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在iText中访问外部URL资源

我正在使用Mojarra、PrimeFaces和Tomcat6开发一个JSF2.0项目。x、 但在前面我有一个Apache HTTP服务器

我创建了一个web表单,可以在其中选择要合并的PDF文件。这些文件位于我的WAR外部,位于Apache HTTPD控制的目录中。我使用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”

这是失败的。但是urlhttp://centos/folder/folder1/file.pdf可以被普通的网络浏览器访问

出了什么问题,我该如何解决


共 (2) 个答案

  1. # 1 楼答案

    显然PdfReader无法直接处理指向外部资源的URL。如果你真的想使用URL而不是^{}^{},那么你最好使用^{}InputStream返回给PdfReader。也就是说,它也有一个constructor用于此

    PdfReader reader1 = new PdfReader(new URL("http://centos" + file).openStream());
    
  2. # 2 楼答案

    首先通过Web驱动程序初始化该资源。有关详细信息,请参阅下面的代码-

    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());