AnsiString asGostScriptPath = "C:\\Program Files\\gs\\gs8.54\\bin\\gswin32c.exe";
void __fastcall TForm1::Button5Click(TObject *Sender)
{
try
{
vVarApp = Variant::GetActiveObject("Word.Application");
}
catch (...)
{
try
{
vVarApp = CreateOleObject("Word.Application");
}
catch (...)
{
MessageBox(0, "Îøèáêà ïðè îòêðûòèè ñåðâåðà Word", "Îøèáêà", MB_OK | MB_ICONERROR );
}
}
try
{
AnsiString asCmdLine, asDocFile = "d:\\fax1.doc", asPrnFile = "d:\\new.prn", asBmpFile = "d:\\new.bmp";
vVarApp.OlePropertySet("Visible", false);
vVarApp.OlePropertyGet("Options").OlePropertySet( "CheckGrammarAsYouType", false);
vVarApp.OlePropertyGet("Options").OlePropertySet( "CheckGrammarWithSpelling", false);
vVarDocs=vVarApp.OlePropertyGet("Documents");
//vVarDocs.OleProcedure("Add", "C:\\WINDOWS\\Application Data\\Microsoft\\Øàáëîíû\\Normal.dot", false,0);
//vVarDocs.OleProcedure("Add");
vVarDocs.OleProcedure( "OpenOld", asDocFile.c_str(), false );
vVarDoc = vVarDocs.OleFunction("Item", 1);
//vVarDoc.OleProcedure( "Activate" );
//vVarParagraphs = vVarDoc.OlePropertyGet( "Paragraphs" );
vVarDoc.OleProcedure( "PrintOut", 0, 0, 0, "d:\\new.prn" );
vVarDocs.OleProcedure( "Close", false );
vVarApp.OleProcedure( "Quit", false );
vVarApp = Unassigned;
asCmdLine = asGostScriptPath + " -dSAFER -dBATCH -dNOPAUSE -sDEVICE=bmpmono -sOutputFile="+asBmpFile+" "+asPrnFile;
if ( WinExec( asCmdLine.c_str(), SW_HIDE ) > 31 )
{
ShowMessage( "successs" );
}
}
catch (...)
{
MessageBox(0, "Îøèáêà ïðè ðàáîòå ñ ñåðâåðîì Word", "Îøèáêà", MB_OK | MB_ICONERROR );
}
}
Преобразование DOC->BMP
Может быть, кто-то уже решал подобную задачу: необходимо из MS Word DOC-файла получить изображение.
Считаю, что вручную ковырять файл не целесообразно - в сети полно шароварных программ и даже activex-компонентов, конвертящих doc или rtf в изображение.
Кто-нибудь юзал что-то подобное?
http://www.cs.wisc.edu/~ghost/
Последовательность действий:
1. cначала doc-файл открывается с помощью OLE-сервера Word
2. затем этот документ печатается на указанном принтере в файл
3. полученный prn-файл скармливается ghostscript'у для получения изображения в нужном формате
После трёх дней мудежа мне всё-таки удалось найти относительно простое :) решение. Для этого необходимо установить в системе любой принтер, поддерживающий PostScript (т.е. физически никакого принтера не нужно, используется только драйвер), а также необходимо установить интерпретатор языка PS - GhostScript
Последовательность действий:
1. cначала doc-файл открывается с помощью OLE-сервера Word
2. затем этот документ печатается на указанном принтере в файл
3. полученный prn-файл скармливается ghostscript'у для получения изображения в нужном формате
Простенький код для иллюстрации: