qt можно как-то читать док файлы
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
в нете к сожалению ничего такого не нашел (
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
в нете к сожалению ничего такого не нашел (
ошибка у меня была в параметрах... нужно было писать именно так
params<<"-d"<<"cp1251"<<"6.doc";\\!!!!!!!! у меня там было немно по другому
m_process.start(processFileFullPath+"\\catdoc.exe", params);
еще раз всем спасибо!!!
а вот с кодировкой считывания напряму с ДОК файла пока не знаю что делать...
Use Unicode charaster Set для включения.
что за крокозябры?
qDebug()<<m_process.readAll(); выкидывает такое
Ѓ«®Є ўЁЎ®аг ०Ё¬г а®Ў®вЁ бЁб⥬Ё
ђҐ¦Ё¬ Ї?¤ўЁйҐп иўЁ¤Є®¤?х Ї®игЄ®ў®Ј® Їа®жҐбг
‚ЁЎ?а ⥪бв®ў®Ј® д ©«г ¤«п ¤®б«?¤¦Ґп
ты в юникоде компилишь?
я не знаю… (*shame) знаю что раньше проблемы с кодировко решались через QTextCodec
что за крокозябры? ты в юникоде компилишь?
хотя все нужные файлы там есть
По идее ты все можешь читать через m_process.readAll () в строку например, а потом сам ручками сохранить в файл
а вообще правильно он не принимает «> 111.txt» — это не аргумент catdoc’a, а команда для шелла по перенаправлению потока вывода
хоть с этим разобрался..., но осталась маленькая проблемка...
QString processFileFullPath = "C:\\catdoc-0.94.2-win32";
params<<"-s cp1251"<<"1.doc"
m_process.start(processFileFullPath+"\\catdoc.exe", params);
m_process.waitForFinished(-1) ;
\\ если пишу так.. то впринципе все нормально...вравда вот это
qDebug()<<m_process.readAll(); - возвращает крякозябры...хотя я и указываю
QTextCodec::setCodecForCStrings( QTextCodec::codecForName("windows-1251") );
QTextCodec::setCodecForLocale(QTextCodec::codecForName("windows-1251") );
но это уже пол беды, главное выводит, и все без ошибок...
но как мне написать аргументы если мне вдруг понадобится написать так :
catdoc -d cp1251 1.doc > 1.txt это вариант из ком строкия пробовал разные варианты
params<<"-s cp1251"<<"1.doc"<<"> 111.txt";
params<<"-s cp1251"<<"1.doc > 111.txt";
params<<"-s cp1251"<<"1.doc"<< ">"<<"111.txt";
но все напрасно… qDebug () << m_process.readAllStandardError (); — сдесь выдает «catdoc: Invalid argument
попробуй заюзать m_process.waitForFinished (-1)
params<< "C: \\catdoc-0.94.2-win32\\1.doc"<< " C: \\catdoc-0.94.2-win32\\55.txt";
qDebug () << “onReadyReadStandardError”; }
Файл utf-8.txt в данном случае не нужен. Так как в вордовских документах оно и так в юникоде.
наверное не судьба... (
QProcess m_process;
// listen to events of the process
connect(&m_process, SIGNAL(started()), SLOT(onProcessStarted()));
connect(&m_process, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(onProcessFinished(int, QProcess::ExitStatus)));
connect(&m_process, SIGNAL(error(QProcess::ProcessError)), SLOT(onProcessError(QProcess::ProcessError)));
connect(&m_process, SIGNAL(readyReadStandardError()), SLOT(onReadyReadStandardError()));
connect(&m_process, SIGNAL(readyReadStandardOutput()), SLOT(onReadyReadStandardOutput()));
QString processFileFullPath = "C:\\catdoc-0.94.2-win32\\catdoc.exe";
if(QFile::exists(processFileFullPath))
{
//m_process.setWorkingDirectory(processFileFullPath);
QStringList params;
params<<"C:\\catdoc-0.94.2-win32\\1.doc C:\\catdoc-0.94.2-win32\\55.txt";
m_process.start(processFileFullPath, params);
}
qDebug()<<m_process.errorString();
qDebug()<<m_process.readAll();
void QuestionsForm::onProcessFinished(int i , QProcess::ExitStatus a)
{
qDebug()<<"onProcessFinished";
qDebug()<<i;
qDebug()<<a;
}
void QuestionsForm::onProcessError(QProcess::ProcessError a)
{
qDebug()<<"onProcessError";
qDebug()<<a;
}
void QuestionsForm::onReadyReadStandardError()
{
qDebug()<<"onReadyReadStandardError";
}
void QuestionsForm::onReadyReadStandardOutput()
{
qDebug()<<"onReadyReadStandardOutput";
}
void QuestionsForm::onProcessStarted()
{
qDebug()<<"onProcessStarted";
}
вывод
onProcessStarted
»Unknown error»
»»
QProcess: Destroyed while process is still running.
onReadyReadStandardError
onProcessFinished
10
nj посылается сигнал readyReadStandardError () в родительский процесс
вроде усе
ну... я не буду это обьяснять... это долго... скажу только что есть много доков... и их нужно или конвертировать или с них читать..., а если заставить кого токонвертировать что то, то лучше уже конвертировать в тхт, для этого у меня все вже написано
Ну так — внеси рац. предложение. Зачем привязывать себя к формату мелкософта? КуТи ж ведь кроссплатформенная весч:) как и ртф
не секрет... пишу бакалаврскую в институт... эта прога будет где то там использоватся у них... и нужно чтетие из дока... таблицы и рисунки не нужны... только текст
что делать?
вот только в файл 1.txt пишутся крякозябры... (
как в кюте запустить процес, передать ему параметры и возможно даже получить результирующую строку, тоесть док текст?
а жаль... какой то очень принципиальный програмер
Оно компилируется под Windows с пол пинка:)
There is no support for catdoc under Windows
Not because I hate windows.
а жаль... какой то очень принципиальный програмер
Советую вот этот: wagner.pp.ru/...oftware/catdoc
хочу програмно считать текст с док файла...
33 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів