Тут я попытаюсь собрать конвертеры текстовых документов, для возможности просмотра во встроенном редакторе FAR Manager.
Примечания:
в качестве вспомогательных утилит я использовал пакет UnxUtils. (не обязательно его устанавливать полностью, достаточно будет надергать нужные программки)
утилита fmt.exe – из пакета UnxUtils используется лишь для того чтоб выровнять текст по ширине редактора (для вьювера не нужна).
"магическое" число 140 - ширина редактора ФАРа в символах: изменить значение под себя или воспользоваться
Тут приводятся примеры командных строк: by wolf (используя штатные средства): far:view < %comspec% /v /q /c "for /f "skip=4 tokens=2" %a in ('mode con') do 1>nul set /a width=%a-1 & zd2t.exe /ZN /n1 /zw /wC /r!!width!! "!\!.!" & exit "
by HaRT (используя gawk из пакета UnxUtils): для русской локали: far:view < for /f %W in ('"mode con | gawk /Столбцы:/{print($2-1)}"') do @zd2t.exe /ZN /n0 /zw /wC /r%W "!\!.!" для английской локали: far:view < for /f %W in ('"mode con | gawk /Columns:/{print($2-1)}"') do @zd2t.exe /ZN /n0 /zw /wC /r%W "!\!.!"
by MDM (используя sed из пакета UnxUtils):(не учитывается возможная полоса прокрутки) far:view < for /f "tokens=*" %i in ('mode con ^| sed -n "5 s/\(.* \)\([0-9]*$\)/\2/p"') do @zd2t.exe /ZN /n0 /zw /wC /r%i "!\!.!"
Настройки приведены такие чтоб на выходе получать кодировку 1251(win). Те утилиты, что поддерживают юникод, конечно можно настроить на вывод UTF-8. Но мне попадаются такие файлы где кириллица записана не в юникодном формате, а в кодировке 1251 и поэтому на выходе получаю нечитабельный текст.
Те утилиты, которые в настройках отмечены значком , используются мною повседневно. Отметил для того, чтоб людям было легче сделать выбор из этой кучи... м-м-м... программ.
Всё протестировано на такой конфигурации: WinXPsp3 x32 FAR 2.0. Vista, Семерка и их 64-битные версии не проверялись.
SlashNet wrote:
– Настойчиво требует "проживания" в папках %HOME%\antiword\ или C:\antiword\ (можно побороть, перенаправив stderr в nul, или поселить куда хочет) Antiword 0.37 | Вход: doc, wri | Выход: txt, pdf, ps, xml (DocBook): в консоль
есть еще вариант.
кладем antiword.exe и нужную кодовую таблицу (-ы) в любую папку, прописанную в PATH.
устанавливаем переменную окружения: set ANTIWORDHOME=<папка, где лежит antiword>
пользуемся, как раньше.
как вариант, не настраивать переменную глобально, а положить рядом с antiword.exe командник вида:
может кто то научит как заставить links искать свой конфиг относительно каталога где он лежит,
а не в "C:\Documents and Settings\gambit\Application Data\.links"
Наконец-то разделался с Convert Lit – распаковщиком .lit-файлов.
Правда, для этого используется батник.
Я старался обойтись штатными утилитами, не считая конвертеров html–>txt (z2dt или links).
Насколько это у меня получилось – судить вам.
@echo off
set binpath=C:\Progra~1\Far\ConsTools
set tmpfolder=%TEMP%\clit.tmp
rmdir /S /Q "%TEMP%\clit.tmp" 2>nul
rem Extract file to %Temp%
%binpath%\Extractors\CLit\clit.exe "%~1" "%tmpfolder%\\" 1>nul
if %errorlevel% == -1 exit /b -1
rem Find OPF file
for /f "delims=" %%a in ('dir /b "%tmpfolder%\*.opf"') do @set opffname=%%a
rem Find string with filenames in OPF file
for /f "delims=" %%b in ('find /i "item id=""" "%tmpfolder%\%opffname%" ^| find /i "media-type=""text/html"""') do set tmpstr="%%b" & call :exfname
rem for /f "delims=" %%b in ('find /i "item id=""" "%tmpfolder%\%opffname%" ^| find /i "media-type=""text/html"""') do call :exfname "%%b"
rem Remove Temp dir & exit cmd
rmdir /S /Q "%tmpfolder%"
exit /b
:exfname
rem Replase double quote '"' by symbol '', because 'delims' in 'for' can't work with double quote.
set tmpstr="%tmpstr:"=%"
rem Extract filename from string
for /f "tokens=5 delims=" %%c in ('echo %tmpstr%') do set tmpstr=%%c
rem View file...
rem echo _[ %tmpstr% ]_________________________________
rem line for links
rem %binpath%\Viewers\Links\links.exe -dump -width 140 -codepage windows-1251 "%tmpfolder%\%tmpstr%"
rem echo * * *
rem line for z2dt
%binpath%\Viewers\zd2t\zd2t.exe /ZNzwwcoW /r140 "%tmpfolder%\%tmpstr%"
rem Exit call
exit /b
@set @script=0 /*
@echo off
set @script=
cscript //nologo //e:jscript "%~dpnx0" %1 %2 %3
exit /b
*/
var arg = WScript.Arguments.Named;
if (arg.length != 3) {
WScript.echo("Синтаксис: " + WScript.ScriptName + " [/h|/p|/t] /f:файл /d:путь");
WScript.echo(" /f:файл - имя doc файла (с полным или относительным путем)");
WScript.echo(" /d:путь - директория, в которой будет создан каталог конвертаций");
WScript.echo(" /h - создать html копию документа");
WScript.echo(" /p - создать pdf копию документа");
WScript.echo(" /t - создать текстовую копию документа");
WScript.Quit(1);
}
var file = arg.Item("f"),
path = arg.Item("d"),
extn = arg.Exists("h") ? ".html" : arg.Exists("p") ? ".pdf" : ".txt";
function ConvertDocument(file, path, extn) {
var fso = new ActiveXObject("Scripting.FileSystemObject"),
now = new Date(), day, mon, doc, fol, fix, des, wrd;
if (fso.FileExists(file)) {
var itm = fso.GetFile(file).Path,
res = fso.GetBaseName(file) + extn;
}
else {
WScript.echo("Указанный файл не существует.");
}
if ((day = now.getDate()) < 10)
day = "0" + day;
if ((mon = now.getMonth() + 1) < 10)
mon = "0" + mon;
now = new String(now.getYear() + "_" + mon + "_" + day);
if (fso.FolderExists(path)) {
des = fso.GetFolder(path).Path + "\\" + now;
if (!fso.FolderExists(des))
fol = fso.CreateFolder(des);
else
fol = fso.GetFolder(des).Path;
switch (extn) {
case ".html":
fix = 8; break;
case ".pdf":
fix = 17; break;
case ".txt":
fix = 2; break;
}
try {
wrd = new ActiveXObject("Word.Application");
doc = wrd.Documents.Open(itm);
wrd.Visible = false;
doc.SaveAs(fol + "\\" + res, fix);
doc.Close();
wrd.Quit();
}
catch (e) {
WScript.echo(e.message + ".");
}
}
else {
WScript.echo("Указанный каталог не существует.");
}
}
ConvertDocument(file, path, extn);
С его помощью при наличии установленного в системе Word удобно конвертировать doc- и docx- файлы в html, pdf и txt:
Синтаксис: doc2xxx.cmd [/h|/p|/t] /f:файл /d:путь
/f:файл - имя doc файла (с полным или относительным путем)
/d:путь - директория, в которой будет создан каталог конвертаций
/h - создать html копию документа
/p - создать pdf копию документа
/t - создать текстовую копию документа
SlashNet wrote:Apache Tika. Универсальный инструмент для извлечения текста и метаданных из документов популярных форматов.
Заявленая поддержка форматов: ... ePub ...
кто-нибудь встречал консольный конвертер из epub в txt (без java/python)?
■ History
Ver2.x (version Unicode) 2.00 2013/01/23 Official version
2.00β4 2012/12/28 bug fixes
2.00β3 2012/12/24 Fixed an issue where the standard output of the new line was supposed to \ r \ r \ n
Crash fix when you use the-f option in the directory can not write
Fixed an issue where some ruby Word document is not visible
Fixed an issue where some of the characters in the output PDF can not be extracted in Word2007
2.00β2 2012/12/19 Bug fixes to terminate abnormally. Odt some
Fix bug that failed on a zero-length doc
2.00β1 2012/12/01 (to distinguish it from the series 1.x) to add a version resource xdoc2txt.exe
2.00β0 2012/11/26 Fixed an issue where some frozen in PDF
2.00α3 2012/11/17 Fix: entity reference has not been interpreted Office2007/2010 document
2.00α2 2012/11/15 The same as the version of VC + + sample COM add, the argument order version of DLL.
2.00α1 2012/11/14 Add (xd2txcom.dll) a COM component version
2.00α0 2012/11/13 Conducted into internal Unicode. Change from VC + +2008 to VC + +6.0 compiler.
Add (UTF16), -8 a (UTF8)-u output options
iFilter corresponding to (-i option). even extension that does not support native text extraction can be performed if there is a corresponding iFilter is xdoc2txt.
/ (For Unisys patent has expired) corresponds to the PDF that is encoded in the LZWDecode.
standard with PDF support to integrate cryptlib.dll, has been encrypted with password-free.
Offer (xd2txlib.dll) version DLL. Attach a sample to call from C # and VB.Net
Ver1.x (version MBCS) 1.46 2012/12/24 Fixed an issue where some ruby Word document is not visible
Fixed an issue where some of the characters in the output PDF can not be extracted in Word2007
1.45 2012/11/26 Fixed an issue where some frozen in PDF
1.44 2012/11/17 corresponding to some characters garbled in docx
1.43 2012/10/17 Fixed a problem where abnormal termination does not conform to the "Office Open XML File Formats". In xlsx
1.42 01/06/2012 Fixed a problem where some of the abnormal termination in PDF
1.41 2011/07/31 (Bug was mixed with 1.37) Fixed bug where the last character is missing in the text box of EXCEL
Подскажите консольный конвертер текстовых файлов TXT из Unicode в Ansi (для DOC и т.д. не предлагать , FAR не предлагать )
upd.
Вот нашел, может пригодится кому. Конвертор ср1251-utf8
Программа представляет собой консольную утилиту для изменения кодировки текста (UTF-8 <-> CP-1251) в файлах txt,htm,xml и других.