【问题标题】:Opening PDF in Controller- Can't use open parameters在控制器中打开 PDF - 无法使用打开的参数
【发布时间】:2011-12-16 20:30:54
【问题描述】:

在我的控制器中,我想打开一个 pdf 并将其流式传输到浏览器。如果我不使用 open 参数,此代码可以正常工作。但是,我需要在文件名之后使用像 #search="java" 这样的开放参数。如果它是 url,则使用 open 参数可以正常工作,但是有没有办法可以使用 adobe open 参数打开文件。

我使用的代码是:

private static final String DOCUMENT_LOCATION = "C:\\testPDF\\mytest.pdf#search=" + "\"" + "java" + "\"";


@RequestMapping(method=RequestMethod.GET)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    // set some response headers 
    response.setContentType("application/pdf"); 

    InputStream in = new FileInputStream(DOCUMENT_LOCATION); 
    OutputStream out = response.getOutputStream(); 

    // Copy the bits from instream to outstream 
    byte[] buf = new byte[1024]; 
    int len; 
    while ((len = in.read(buf)) > 0) { 
        out.write(buf, 0, len); 
    } 
    in.close(); 

} 

【问题讨论】:

  • 什么意思,你需要一个“文件名后的搜索参数”?您正在为要打开的 Java 指定文件名。您只能给它文件名,而不是与文件系统无关的随机参数。
  • 是的,这就是问题所在,我可以打开文件,但我认为这不是我需要打开文件的方式。有没有办法可以在本地目录中打开文件并仍然使用 open 参数?
  • 不确定如何...您可以尝试的一件事是在通过 URL 打开响应标头时检查响应标头,以查看是否有东西被发回导致浏览器/阅读器进行搜索。
  • @DaveNewton 我猜它实际上是 Adob​​e Reader 插件检查客户端 URL 的参数,所以没有什么特别的发回。
  • @Inerdia 这也是我的猜测,但我还是会看,因为我是那样的脾气暴躁。但是,如果 URL 包含参数,我不确定 Reader 是如何知道它不是实际文件的。还是在附件的文件名中?不知道。

标签: java spring pdf adobe


【解决方案1】:

如果您想使用 Adob​​e Acrobat Reader 支持的某些参数,那么您必须寻找一种方法来将这些参数指定给浏览器中的插件或客户端计算机中的阅读器。

考虑到这些参数,没有办法在服务器中“打开”文件,因为 Java 只是打开一个文件,对它的格式一无所知。

【讨论】:

  • 这不是真正的答案;有点像对 cme​​ts 的重演。
  • @Dave Newton:也许 cmets 应该作为答案发布。因为一个简单的“这是不可能的”或者总是一个有效的答案。
  • 好吧,也许我应该改变我的策略。如果我使用 url,我知道打开参数可以正常工作。在我的项目中,我可以包含一个包含 pdf 的 pdf 目录,并像调用 jsp 一样调用它。唯一的问题是 pdf 文件可能会过时,我必须对其进行更新。我可以安排一个任务去获取最新的 pdf,但是我应该把更新的文件放在哪里?我应该创建一个新线程吗?
  • 老实说,我真正的潜在问题是我想在找到搜索词时突出显示 pdf,但根据我的研究,Adobe 似乎不再支持突出显示,最好的方法是传递搜索参数?
【解决方案2】:

原来 adobe 不再支持开放参数,所以我最终做的是传递搜索 url 参数,它会自动在 Adob​​e 中打开搜索功能。不幸的是,这在 Firefox 中仅在 IE 中不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    相关资源
    最近更新 更多