Как я могу извлечь данные в документе Word, используя Perl?

Как извлечь данные из слова документа с помощью Perl?

 User161116 июл. 2009 г., 08:41
Можете ли вы дать мне простой пример чтения документа Word и печати данных в командной строке ...
 Sinan Ünür14 июл. 2009 г., 16:12
Также смstackoverflow.com/questions/1110409/… если вы используете Windows и можете использоватьWin32::OLE и все, что вы хотите, это текст в документе.
 User161116 июл. 2009 г., 08:21
Я использую Windows, и я хочу извлечь сокращения, найденные в этом документе слова .... это то, что моя задача ...
 Sinan Ünür14 июл. 2009 г., 14:12
What конкретные данные вы хотите извлечь? На какой платформе? У вас установлена копия Word? Это пакетное задание или скрипт будет вызываться веб-сервером? Название и содержание вашего вопроса идентичны, что указывает на то, что вы не слишком задумывались над формулировкой своего вопроса.

Ответы на вопрос(5)

В Windows вам лучше использовать COM-интерфейсы для доступа к функциям Word.

Если вы хотите сделать это кроссплатформенным, подумайте о выполнении & quot; catdoc & quot; или libwv.

Если вы не работаете в Windows, я думаю, что лучшим способом будет сначала преобразовать его.

Если вы не используете Windows и не имеете доступа кWin32 :: OLE, ты можешь использоватьOpenOffice для конвертации документов.

Вы можете заключить скрипт по ссылке в вашу Perl-программу. Хотя ссылка начинается с PDF, если вы читаете на нем, можно преобразовать его в текст. Также смэтот стековый пост о преобразовании файлов doc и docx.

 User161116 июл. 2009 г., 08:41
Можете ли вы дать мне простой пример чтения документа Word и печати его данных в командной строке ...

Документы Word больше не являются плоскими файлами. Найдите .docx, переименуйте его с расширением .zip, и вы можете открыть его и покопаться в нем, чтобы почувствовать, как все устроено. Я бы в целом согласился, хотя Microsoft предоставила способы сделать это уже.

Вы можете использовать Win32 :: OLE, если скрипт должен работать на Windows с установленным Word.

Какую платформу вы используете? возможноAntiword может быть вызван?

 User161116 июл. 2009 г., 08:22
Я использую Windows ...
use Win32::OLE;
use Win32::OLE::Enum;

$document = Win32::OLE -> GetObject($ARGV[1]);
open (FH,">$ARGV[0]");

print "Extracting Text ...\n";

$paragraphs = $document->Paragraphs();
$enumerate = new Win32::OLE::Enum($paragraphs);
while(defined($paragraph = $enumerate->Next()))
{
    $style = $paragraph->{Style}->{NameLocal};
    print FH "+$style\n";
    $text = $paragraph->{Range}->{Text};
    $text =~ s/[\n\r]//g;
    $text =~ s/\x0b/\n/g;
    print FH "=$text\n";
}

украден изВот

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