【问题标题】:Running a JavaScript command from MATLAB to fetch a PDF file从 MATLAB 运行 JavaScript 命令以获取 PDF 文件
【发布时间】:2009-08-21 10:13:46
【问题描述】:

我目前正在编写一些MATLAB 代码来与我公司的内部报告数据库进行交互。到目前为止,我可以使用如下代码访问 HTML 摘要页面:

import com.mathworks.mde.desk.*;
wb=com.mathworks.mde.webbrowser.WebBrowser.createBrowser;
wb.setCurrentLocation(ReportURL(8:end));
pause(1);

s={};
while isempty(s)
    s=char(wb.getHtmlText);
    pause(.1);
end
desk=MLDesktop.getInstance;
desk.removeClient(wb);

我可以从以变量 s 结尾的 HTML 文本中提取各种信息,但是我认为可以通过 JavaScript 命令访问报告的 PDF(onClick="gotoFulltext(' ','[报告编号]')").

关于如何执行此 JavaScript 命令并将 PDF 文件的内容放入 MATLAB 变量的任何想法?

(MATLAB 位于 Java 之上,所以我相信 Java 解决方案可以工作......)

【问题讨论】:

    标签: java javascript matlab


    【解决方案1】:

    我认为你应该看看被调用的 JavaScript,看看对网络服务器的最终请求是什么样的。

    您可以使用 FireBug 插件在 Firefox 中轻松完成此操作。

    https://addons.mozilla.org/en-US/firefox/addon/1843

    一旦你找到了真正的服务器请求,你就可以请求这个 URL 或者发布到这个 URL,而不是尝试运行 JavaScript。

    【讨论】:

    • pjp 是唯一明智的方法。您还应该让内部数据库的 Web 界面开发人员取出并拍摄 - 或者至少告诉他们了解渐进增强;-)
    • 这看起来很有希望——我现在有一个可以获取 PDF 的 URL——我现在需要做的就是弄清楚如何将它放入一个变量中...... Firebug 相当方便!
    【解决方案2】:

    一旦您获得了正确的 URL(例如 the answer from pjp),您的下一个问题就是“将 PDF 文件的内容放入 MATLAB 变量中”。这是否可能取决于您所说的“内容”......


    如果您想获取 PDF 文件中的原始数据,我认为目前在 MATLAB 中没有办法做到这一点。 URLREAD 函数是我首先想到的将内容从 URL 读入字符串的方法,但它在文档中有这样的注释:

    s = urlread('url') 读取内容 在 URL 中插入字符串 s。如果 服务器返回二进制数据,s 将 不可读。

    确实,如果您尝试阅读以下示例中的 PDF,s 包含一些混杂着大部分垃圾的文本:

    s = urlread('http://samplepdf.com/sample.pdf');
    

    如果您想从 PDF 文件中获取文本,您有一些选择。首先,您可以使用URLWRITE 将URL 的内容保存到文件中:

    urlwrite('http://samplepdf.com/sample.pdf','temp.pdf');
    

    那么您应该能够使用The MathWorks File Exchange 上的两个提交之一从 PDF 中提取文本:

    如果您只是想查看 PDF,您可以在 Adob​​e Acrobat 中使用OPEN 函数打开它:

    open('temp.pdf');
    

    【讨论】:

    • 我目前的问题是 URL 需要身份验证才能访问内容,我不知道如何通过 urlread 提供它。我相信可能有使用 Java URL 对象的路由。使用上面的 webbrowser 方法,我可以在屏幕上查看 pdf 文档,这与我想要的非常接近。 PDF 函数中的文本看起来很有用...
    • URLREADURLWRITE 函数允许将可选参数传递给它们。您必须找出用于身份验证的参数名称,然后将它们与参数值一起作为元胞数组传递。此文档页面上显示了一个示例:mathworks.com/access/helpdesk/help/techdoc/matlab_prog/…
    • Dimitri Shvorob 将 PDF 文件转换为文本的解决方案效果很好
    • @Ian:正如所料... Dimitri 是文件交换的受人尊敬的贡献者。 =)
    【解决方案3】:
    wb=com.mathworks.mde.webbrowser.WebBrowser.createBrowser;
    wb.executeScript('javascript:alert(''Some code from a link'')');
    desk=com.mathworks.mde.desk.MLDesktop.getInstance;
    desk.removeClient(wb);
    

    【讨论】:

      猜你喜欢
      • 2011-10-03
      • 1970-01-01
      • 2018-07-27
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 2012-10-03
      相关资源
      最近更新 更多