Выполнение команды JavaScript из MATLAB для получения файла 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 будет работать ...)

Ответы на вопрос(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);
Решение Вопроса

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

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

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

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

 pjp21 авг. 2009 г., 12:57
Да, это довольно мило.
 NickFitz21 авг. 2009 г., 12:36
PJP - единственный разумный подход. Вы также должны получить и убить разработчика веб-интерфейса для внутренней базы данных или, по крайней мере, сказать им, чтобы узнать о прогрессивном улучшении ;-)
 Ian Hopkinson21 авг. 2009 г., 12:47
Это выглядит очень многообещающим маршрутом - у меня теперь есть URL, который дает мне PDF - все, что мне нужно сделать сейчас, это разобраться, как поместить его в переменную ... Firebug довольно удобен!

ответ от пдп) ваша следующая проблема - «получить содержимое файла 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 поДмитрий ШворобPDF Reader поТом Годетт

Если вы просто хотитеПосмотреть PDF, вы можете просто открыть его в Adobe Acrobat с помощьюОТКРЫТЫЙ функция:

open('temp.pdf');
 gnovice24 авг. 2009 г., 16:56
@Ian: Как и ожидалось ... Дмитрий является уважаемым участником File Exchange. знак равно
 gnovice23 авг. 2009 г., 19:59
URLREAD а такжеURLWRITE функции позволяют передавать необязательные параметры им. Вам необходимо выяснить, какие имена параметров используются для аутентификации, а затем передать их вместе со значениями параметров в виде массива ячеек. Пример появляется на этой странице документации:mathworks.com/access/helpdesk/help/techdoc/matlab_prog/...
 Ian Hopkinson24 авг. 2009 г., 16:43
Решение Дмитрия Швороба для преобразования файла PDF в текст прекрасно работает
 Ian Hopkinson21 авг. 2009 г., 20:35
Моя проблема на данный момент заключается в том, что для доступа к содержимому URL-адрес требует аутентификации, и я не могу понять, как предоставить его через urlread. Я считаю, что может быть маршрут с использованием объекта URL Java. Используя приведенный выше метод веб-браузера, я могувидеть PDF-документ на экране, который разочаровывает близко к тому, что я хочу. Текст из функций PDF выглядит полезным ...

Ваш ответ на вопрос