从MATLAB运行JavaScript命令以获取PDF文件

我正在编写一些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); 

我可以从HTML文本中提取出最终在变量s中的各种信息,但是报告的PDF是通过我认为的JavaScript命令来访问的(onClick =“gotoFulltext(”,'[报告编号] “)“)。

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

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

我认为您应该查看正在调用的JavaScript,并查看对Web服务器的最终请求是什么样的。

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

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

找到真正的服务器请求后,您只需请求此URL或发布到此URL,而不是尝试运行JavaScript。

一旦你得到了正确的URL( 来自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'); 

然后,您应该能够使用MathWorks文件交换中的两个提交之一从PDF中提取文本:

  • Dimitri Shvorob 从PDF文档中提取文本
  • 由Tom Gaudette撰写的 PDF阅读器

如果您只想查看 PDF,可以使用OPENfunction在Adobe Acrobat中打开它:

 open('temp.pdf'); 
 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);