Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Преобразование DOC->BMP

22K
14 ноября 2006 года
dest
5 / / 14.11.2006
Добрый вечер всем!
Может быть, кто-то уже решал подобную задачу: необходимо из MS Word DOC-файла получить изображение.
Считаю, что вручную ковырять файл не целесообразно - в сети полно шароварных программ и даже activex-компонентов, конвертящих doc или rtf в изображение.
Кто-нибудь юзал что-то подобное?
22K
17 ноября 2006 года
dest
5 / / 14.11.2006
После трёх дней мудежа мне всё-таки удалось найти относительно простое :) решение. Для этого необходимо установить в системе любой принтер, поддерживающий PostScript (т.е. физически никакого принтера не нужно, используется только драйвер), а также необходимо установить интерпретатор языка PS - GhostScript http://www.cs.wisc.edu/~ghost/

Последовательность действий:
1. cначала doc-файл открывается с помощью OLE-сервера Word
2. затем этот документ печатается на указанном принтере в файл
3. полученный prn-файл скармливается ghostscript'у для получения изображения в нужном формате
22K
17 ноября 2006 года
dest
5 / / 14.11.2006
Простенький код для иллюстрации:

Код:
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 );
    }


}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог