繁体   English   中英

保存使用OLE和Perl在Internet Explorer中打开的pdf文件

[英]Save a pdf file that's been opened in Internet Explorer with OLE and Perl

我正在寻找一种使用Perl在Internet Explorer中打开PDF文件然后保存的方法。

(我希望用户能够与脚本进行交互并决定是否进行下载,这就是为什么我希望将pdf显示在IE中,所以我不能使用LWP::Simple类的东西。)

例如,此代码加载(显示)pdf,但我不知道如何让Perl告诉IE保存文件。

use Win32::OLE;
my $ie = Win32::OLE->new("InternetExplorer.Application");
$ie->{Visible} = 1;
Win32::OLE->WithEvents($ie);

$ie->Navigate('http://www.aeaweb.org/Annual_Meeting/pdfs/2014_Registration.pdf');

我想我可能需要使用OLE方法execWB ,但我一直无法弄清楚。

您要做的是自动化Internet Explorer UI。 有很多库可以做到这一点。 您告诉库找到您感兴趣的窗口,然后可以将击键或命令发送到该窗口(在本例中为CTRL-S)。

有关如何在Perl中执行此操作的概述,请参见此处

语法示例:

my @keys = ( "%{F}", "{RIGHT}", "E", );
for my $key (@keys) {
    SendKeys( $key, $pause_between_keypress );
}

该代码以包含按键的数组开头。 请注意前三个元素的格式。 按键是:Alt + F,向右箭头和E。在应用程序打开的情况下,它会导航菜单以打开编辑器。

另一种选择是使用LWP:

use LWP::Simple;

my $url = 'http://www.aeaweb.org/Annual_Meeting/pdfs/2014_Registration.pdf';
my $file = '2014_Registration.pdf';

getstore($url, $file);

ForExecWB这是一个很好的线程,但是并没有解决: http ://www.perlmonks.org/?node_id=477361

$IE->ExecWB($OLECMDID_SAVEAS, $OLECMDEXECOPT_DONTPROMPTUSER, 
$Target);

为什么不在IE中显示PDF,然后关闭IE并使用LWP保存文件?

您可以使用Selenium和perl远程驱动程序来管理IE

http://search.cpan.org/~aivaturi/Selenium-Remote-Driver-0.15/lib/Selenium/Remote/Driver.pm http://docs.seleniumhq.org/projects/webdriver/

您还需要下载IE Selenium驱动程序-firefox随附的驱动程序为标准https://code.google.com/p/selenium/wiki/InternetExplorerDriver

use Selenium::Remote::Driver;

my $driver = new Selenium::Remote::Driver;
$driver->get('http://www.google.com');
print $driver->get_title();
$driver->quit();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM