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