Выполнение команды JavaScript из MATLAB для получения файла PDF - PullRequest
5 голосов
/ 21 августа 2009

В настоящее время я пишу код 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 будет работать ...)

Ответы [ 3 ]

4 голосов
/ 21 августа 2009

Я думаю, вам следует взглянуть на вызываемый JavaScript и посмотреть, как будет выглядеть окончательный запрос к веб-серверу.

Вы можете сделать это довольно легко в Firefox, используя плагин FireBug.

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

Как только вы нашли реальный запрос к серверу, вы можете просто запросить этот URL или опубликовать его, вместо того чтобы пытаться запустить JavaScript.

1 голос
/ 06 октября 2011
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);
1 голос
/ 21 августа 2009

После того, как вы получили правильный 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:

Если вы просто хотите просмотреть PDF, вы можете просто открыть его в Adobe Acrobat с помощью функции OPEN :

open('temp.pdf');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...