Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как из .doc получить картинки? Как преобразовать текст в картинки? 
:(
    Опции темы
splot
Дата 29.9.2003, 21:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как вордовский документ нарезать на куски и преобразовать их в картику. Текст документа такого вида:
"1.Что такое Windows XP
a) Новая игра, которая не работает б)Вирус
в) Операционная среда г)Операционная система

2. Что такое ....?
а) б)
в) г)

3. "

и так далее. Т.е у нас есть набор из N штук вопросов в текстовом
файле doc, а нужно получить N картинок с этими же вопросами в
jpeg, bmp или gif.

мой e-mail: [email protected] Заранее спасибо.
  Вверх
x77
Дата 29.9.2003, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Распечатать на принтере, разрезать на картинки, и отсканировать. [censored34! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] вопрос smile.gif)


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 29.9.2003, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



писал злобное пиьсмище, хорошо, что слетело...

психиатр! в студию!


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
splot
  Дата 29.9.2003, 22:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да, а если у тебя страниц 200 теста? Ты их будешь печатать? А затем целый день резать и еще день сканировать? Вся фишка в том, что всё это - лишь промежуточный материал. В дальнейшем эти файлики надо будет уже использовать в другом приложение. Все должно быть быстро! Ответ твой ничем не помог, вот так то!
  Вверх
<Spawn>
Дата 30.9.2003, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Открываешь документ:
Код
function ActivateWord():Variant;
var
AppProgID:string;
hRes:HRESULT;
Unknown:IUnknown;
begin
Result:=UnAssigned;
AppProgID:='Word.Application';
hRes:=GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);
if hRes=MK_E_UNAVAILABLE then
 Result:=CreateOleObject(AppProgID)
else
 Result:=GetActiveOleObject(AppProgID);
end;

var
Word:Variant;

Word:=ActivateWord;
Word.Open('C:\MyDocument.doc');


2)В цикле разбиваешь этот текст на группы. Я его не видел так что не могу сказать по какому признаку искать разделитель.

3)затем выводишь этот текст, к примеру, на Canvas TBitMap-а и сохраняешь в BMP:
Код
var
BitMap:TBitMap;
begin
try
BitMap:=TBitMap.Create;
//Настраиваешь размер картинки
BitMap.Width:=...
BitMap.Height:=...
//Выводишь твой текст
BitMap.Canvas.TextOut(10,10,...);
BitMap.Canvas.TextOut(10,30,...);
...
//Ну и сохраняешь все это
BitMap.SaveToFile();
finally
FreeAndNil(BitMap);
end;


Это сообщение отредактировал(а) <Spawn> - 30.9.2003, 05:21


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
splot
Дата 30.9.2003, 08:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











За код спасибо! Попробую! А текст должен резаться на куски, содержащие тольео один вопрос. Например первый кусок: "
1.Что такое Windows XP
a) Новая игра, которая не работает б)Вирус
в) Операционная среда г)Операционная система

", затем в другой картинке - другой вопросик.
  Вверх
x77
Дата 30.9.2003, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



splot, извини за резкость, но как ты мог заметить, я и не пытался помочь. меня равно бесят задачи, как некорректно поставленные, так и некорректно решаемые.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
splot
Дата 30.9.2003, 18:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А может быть есть ещё какое-нибудь решение? Подскажите...
  Вверх
<Spawn>
Дата 30.9.2003, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



А чем тебе это не нравится?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
splot
Дата 30.9.2003, 19:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Часто одну и туже проблему можно решить несколькими способами. И знание лишнего способа не помешает. А так, Spawn, твоё решение меня очень даже устраивает.
  Вверх
Guest
Дата 1.10.2003, 16:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Еще вопросик. Как разрезать текст на куски, если считать, что новый кусок начинается с пустой строки?
  Вверх
Dmitry V.Abramov
Дата 1.10.2003, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.9.2003
Где: Saint-Petersburg

Репутация: 5
Всего: 4



У тебя же написано - "новый кусок начинается с пустой строки". Значит не надо ничего резать. Он у тебя уже порезан. Пустыми строками.
--------------------
/DVA
PM MAIL WWW   Вверх
<Spawn>
Дата 2.10.2003, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Цитата(Guest @ 1.10.2003, 08:07)
Еще вопросик. Как разрезать текст на куски, если считать, что новый кусок начинается с пустой строки?

Ну вот попробуй:
Код
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ActiveX, ComObj, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   OpenDialog: TOpenDialog;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function ActivateWord():Variant;
var
AppProgID:string;
hRes:HRESULT;
Unknown:IUnknown;
begin
Result:=UnAssigned;
AppProgID:='Word.Application';
hRes:=GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);
if hRes=MK_E_UNAVAILABLE then
Result:=CreateOleObject(AppProgID)
else
Result:=GetActiveOleObject(AppProgID);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
Word:Variant;
Document:Variant;
DocList:TStringList;
i, j, FirstIndex, ImageCount:integer;
BitMap:TBitMap;
begin
if OpenDialog.Execute then
begin
 Word:=ActivateWord;
 Document:=Word.Documents.Open(OpenDialog.FileName);
 try
   DocList:=TStringList.Create;
   DocList.Text:=Document.Range.Text;
   FirstIndex:=0;
   ImageCount:=0;
   for i:=0 to DocList.Count-1 do
     if Length(DocList[i])=0 then
     try
       BitMap:=TBitMap.Create;
       BitMap.Width:=500;
       BitMap.Height:=((i-1)-FirstIndex)*20+30;
       for j:=0 to (i-1)-FirstIndex do
         BitMap.Canvas.TextOut(10, j*20+10, DocList[j+FirstIndex]);
       FirstIndex:=i+1;
       Inc(ImageCount);
       BitMap.SaveToFile(Format('Test%d.bmp',[ImageCount]));
     finally
       FreeAndNil(BitMap);
     end;
 finally
   FreeAndNil(DocList);
   Word.Quit;
   Word:=UnAssigned;
 end;
end;
end;

end.


Тебе нужно будет дополнить этот код проверкой конца всего документа, иначе если последняя строка не будет пустой, то последний блок не сохраниться(или же просто вставь пустую строку в конце). Если же длина пустой строки у тебя не равно 0, то можно проверять на наличие пустого символа в начале строки, т.е.
Код
if CompareStr(DocList[i][1], ' ')=0 then




--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Guest
Дата 2.10.2003, 16:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо тебе ещё раз. Большое спасибо! Сейчас всё попробую.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.