Конвертация текста в набор скриншотов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Конвертация текста в набор скриншотов

Сообщение jangle » 06.04.2009 (Пн) 11:12

Есть у меня довольно поганый медиаплеер QumoVision, хочу приспособить его для чтения электронных книжек. Хотя Кумо умеет читать TXT файлы с кириллицей, но делает это криво, рвет тексты и переносит как попало. В результате, на экране плеера отображается неформатированная, текстовая каша. Читать просто невозможно.
Появилась мысль - перегонять тексты в PNG файлы, а потом просматривать их, как картинки на плеере. При этом, можно использовать любой шрифт и размер текста.
Но пока не могу придумать алгоритм, как перегнать произвольный текстовый файл, в картинку с разрешением 480 на 272 пикселей, с сохранением форматирования. Причем пользователь, может сам выбирать размер и названия шрифта. Это еще усложняет задачу, поскольку разные шрифты имеют различный размер символов.
Для примера, в аттаче PNG файл сделанный "вручную". Шрифт - Arial, размер - 8.
Вобщем нужен такой алгоритм: на входе - форматированный TXT файл, на выходе - набор PNG скриншотов с форматированным текстом. Разумеется, никакого "обрезания" и "кривого" переноса слов, не должно быть.
Пока никаких идей нету. :(
Вложения
4.PNG
4.PNG (12.24 Кб) Просмотров: 1354

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Конвертация текста в набор скриншотов

Сообщение awl100Alex » 06.04.2009 (Пн) 11:26

Мне кажется, копать нужно в направлении алгоритмов по типу встроенного в Microsoft Office виртуально принтера Image - Microsoft Office Document Image Writer. Там ведь тоже из Doc конвертируется в Image по формату и форматированию исходного текста в страницах документа. Тебе нужно поискать подобные алгоритмы, может в инете, где-то и найдёшь. :)

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Конвертация текста в набор скриншотов

Сообщение jangle » 06.04.2009 (Пн) 11:33

awl100Alex писал(а):Мне кажется, копать нужно в направлении алгоритмов по типу встроенного в Microsoft Office виртуально принтера Image - Microsoft Office Document Image Writer. Там ведь тоже из Doc конвертируется в Image по формату и форматированию исходного текста в страницах документа. Тебе нужно поискать подобные алгоритмы, может в инете, где-то и найдёшь. :)


Спасибо, мысль интересная! Однако этот "Microsoft Office Document Image Writer" наверное часть Office, поэтому с собой его не потаскаешь.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Конвертация текста в набор скриншотов

Сообщение RayShade » 06.04.2009 (Пн) 11:36

Как мне кажется, Microsoft Office Document Image Writer это уже собственно ответ на данный вопрос :)
I don't understand. Sorry.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Конвертация текста в набор скриншотов

Сообщение jangle » 06.04.2009 (Пн) 11:57

Посмотерел описание Microsoft Office Document Image Writer, это часть 2003 Офиса. Опять же привязываться к офису неохота. Хотелось бы придумать, какой-нибудь простой алгоритм со скриншотами. Чтобы работало без сторонних библиотек.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Конвертация текста в набор скриншотов

Сообщение RayShade » 06.04.2009 (Пн) 12:03

А смысл? Это как раз отличный инструмент -- сконвертил дома книжку, закачал и читай :)
I don't understand. Sorry.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Конвертация текста в набор скриншотов

Сообщение jangle » 06.04.2009 (Пн) 12:13

У меня нет 2003 офиса. Можно конечно поехать на рынок, и купить пиратский диск, но ведь это занятие недостойно программиста :mrgreen: Русские так просто не сдаются, должен быть какой-то вариант с алгоритмом.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Конвертация текста в набор скриншотов

Сообщение RayShade » 06.04.2009 (Пн) 12:35

Ну да, надо провести пару недель в написании софтины, которая будет работать через раз, и потом поехать и купить диск с офисом :)
I don't understand. Sorry.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Конвертация текста в набор скриншотов

Сообщение iGrok » 06.04.2009 (Пн) 12:43

awl100Alex писал(а):Там ведь тоже из Doc конвертируется в Image по формату и форматированию исходного текста в страницах документа.

Ни в какой Image там ничего не конвертируется. Там свой аналог pdf-ки, если вообще не wmf. Потому как графика там, по ходу, векторная.. Попробуй сам что-нить туда напечатать и поувеличивать/поуменьшать масштаб в просмотрщике mdi-документа. И посмотри, как себя при этом ведёт текст..

Там, правда, есть ещё сохранение в тифф.. Туда не смотрел. Но чую это тоже не совсем то.
label:
cli
jmp label

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Конвертация текста в набор скриншотов

Сообщение RayShade » 06.04.2009 (Пн) 13:03

В любом случае, имея графический файл, можно просто люлбой утилью его сконвертить в другйо графический файл :)
I don't understand. Sorry.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Конвертация текста в набор скриншотов

Сообщение Williams » 06.04.2009 (Пн) 13:25

а отображать в каком-нибудь контроле и программно делать скриншоты, прокручивая на нужный участок?
И вы думаете, что вас оставят в живых после прочтения этого поста?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Конвертация текста в набор скриншотов

Сообщение RayShade » 06.04.2009 (Пн) 13:35

Гы гы гы :) Прочитай книжку один раз пока делаешь скрины, и второй -- потом :)
I don't understand. Sorry.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Конвертация текста в набор скриншотов

Сообщение jangle » 06.04.2009 (Пн) 13:52

Williams писал(а):а отображать в каком-нибудь контроле и программно делать скриншоты, прокручивая на нужный участок?


Вот я тоже так думаю. Есть же диалог PrintPreview в Ворде, где можно просмотреть текст перед отправкой на принтер. Установить размер листа 480x272, и нарезать скриншотов с этого окна

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Re: Конвертация текста в набор скриншотов

Сообщение Amed » 06.04.2009 (Пн) 14:15

Но Офиса-то нет? :)

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Конвертация текста в набор скриншотов

Сообщение jangle » 06.04.2009 (Пн) 14:31

Amed писал(а):Но Офиса-то нет? :)


А разве в COMDLG32.DLL его нет? PrintPreview, по идее, стандартным диалогом должен быть.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Конвертация текста в набор скриншотов

Сообщение Andrey Fedorov » 06.04.2009 (Пн) 14:34

В принципе написать-то не столь сложно - выводить отформатированный техт частями в Picture и сбрасывать его в PNG-файл. Можно и картиночки вставлять при желании. В чем собственно сложность-то?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Re: Конвертация текста в набор скриншотов

Сообщение Amed » 06.04.2009 (Пн) 14:50

PrintPreview просто показывает уже кем-то сформированный документ => надо заранее где-то сформировать его.

Если формировать в WordPad, то и резать скриншоты с окна PrintPreview не нужно, имхо. Достаточно взять Rich Textbox, загрузить в него текст и листать по документу, скриншотя содержимое.

UPD.
PrintPreview в COMDLG не нашел, зато нашел вот это: Erez Print Preview ActiveX Control for VB6 Ver. 1.4.1

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Конвертация текста в набор скриншотов

Сообщение MIT » 06.04.2009 (Пн) 16:23

jangle писал(а):Вобщем нужен такой алгоритм: на входе - форматированный TXT файл, на выходе - набор PNG скриншотов с форматированным текстом. Разумеется, никакого "обрезания" и "кривого" переноса слов, не должно быть.

Хм... :idea:
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Конвертация текста в набор скриншотов

Сообщение jangle » 06.04.2009 (Пн) 16:39

Amed писал(а):PrintPreview просто показывает уже кем-то сформированный документ => надо заранее где-то сформировать его.

Если формировать в WordPad, то и резать скриншоты с окна PrintPreview не нужно, имхо. Достаточно взять Rich Textbox, загрузить в него текст и листать по документу, скриншотя содержимое.



Если загнать текст в Rich Textbox, и уменьшить его до размера 480 на 720 - нарушается форматирование текста.

Изображение

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Конвертация текста в набор скриншотов

Сообщение kibernetics » 06.04.2009 (Пн) 16:47

значит надо поубирать из текста символы переноса строки

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Конвертация текста в набор скриншотов

Сообщение jangle » 06.04.2009 (Пн) 16:52

kibernetics писал(а):значит надо поубирать из текста символы переноса строки


Тогда форматирование текста исчезнет, разбиение на абзацы и т.д.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Re: Конвертация текста в набор скриншотов

Сообщение Amed » 06.04.2009 (Пн) 17:06

Не все переводы строки убирать, а только те, перед которыми нет другого перевода строки или символа {.!?}

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Конвертация текста в набор скриншотов

Сообщение jangle » 06.04.2009 (Пн) 22:18

Оказывается, все уже давно украдено до нас.
Вложения
32_jpegbook_1.3.zip
(420.05 Кб) Скачиваний: 36

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Конвертация текста в набор скриншотов

Сообщение Andrey Fedorov » 06.04.2009 (Пн) 23:39

jangle писал(а):Оказывается, все уже давно украдено до нас.


Jpg для текста (как и скриншотов программ) не идеален - во первых он с потерей качества, а во вторых файлы получаются большего размера чем у PNG.
А вот для картинок/фотографий - наоборот...

Кстати, а может просто форматировать текстовые файлы под QumoVision изначально расставляя переносы как надо?
Последний раз редактировалось Andrey Fedorov 06.04.2009 (Пн) 23:43, всего редактировалось 1 раз.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Re: Конвертация текста в набор скриншотов

Сообщение Amed » 06.04.2009 (Пн) 23:41

К слову - на JPEG 100%-качества потеря данных неразличима глазом.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Конвертация текста в набор скриншотов

Сообщение Andrey Fedorov » 06.04.2009 (Пн) 23:47

Amed писал(а):К слову - на JPEG 100%-качества потеря данных неразличима глазом.


Но их размер значительно больше. Да хоть для примера скриншот экрана в котором сейчас набираю данный текст:

PNG - 148 015
JPG - 203 574

Это 1920x1200x32. Безо всяких специальных оптимизаций - сохранение родным Paint-ом (jpeg при этом, конечно не 100% качества).

На простых текстах разница будет заметно больше.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Конвертация текста в набор скриншотов

Сообщение jangle » 07.04.2009 (Вт) 9:36

Andrey Fedorov писал(а):Кстати, а может просто форматировать текстовые файлы под QumoVision изначально расставляя переносы как надо?


QumoVision отображает только один шрифт - Arial, и только двух размеров 10 и 12. Это неудобно при чтении текста.

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Конвертация текста в набор скриншотов

Сообщение awl100Alex » 07.04.2009 (Вт) 12:15

jangle
Есть такая прога PDFCreator. Написана на VB6 (по крайней мере так пишут в About). Она конвертирует не только в PDF, но еще в целую кучу графических форматов. В качестве ядра системы используется Ghostscript. Если запустить PDFCreator.exe - About, то там ссылки на все эти сайты. Может от туда что-то можно взять?

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Конвертация текста в набор скриншотов

Сообщение SSecurity » 11.04.2009 (Сб) 15:43

Мне кажется решить можно Word, ну а потом уже обертку тёмыча для GDI+ .. (только пути задай правильно),

на форме Picture1, Command1 больше ссылок нет (берет ВОРД)

Код: Выделить всё
Private Type PageInfo
  PageID As Integer
  PageStart As Long
  PageEnd As Long
End Type

Private Const wdStatisticPages = 2
Private Const wdGoToPage = 1
Private Const wdGoToNext = 2
Private Const wdAlertsNone = 0

Sub test(ByVal path As String, ByVal itog As String)
 
  Dim A() As PageInfo
  Dim WAPP As Object
  Dim WDOC As Object
  Dim D As Object
  Dim I As Integer
 
  Set WAPP = CreateObject("WORD.Application")
  If Err = 0 Then
    If Not WAPP Is Nothing Then
      WAPP.Visible = False
      WAPP.Application.DisplayAlerts = wdAlertsNone
      Set WDOC = WAPP.Documents.Open(path)
      If Err = 0 Then
        If Not WDOC Is Nothing Then
          '## открытие документа и считывание списка страниц
          ReDim A(WDOC.ComputeStatistics(wdStatisticPages)) As PageInfo
          For I = 1 To UBound(A)
            WAPP.Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=I
            Set D = WAPP.Selection.Characters(1)
            A(I).PageStart = D.Start
            A(I).PageID = I
            A(I).PageEnd = D.StoryLength
          Next I
          For I = 1 To UBound(A) - 1
            A(I).PageEnd = A(I + 1).PageStart - 1
          Next I
          For I = 1 To UBound(A)
            WAPP.Selection.Start = A(I).PageStart
            WAPP.Selection.End = A(I).PageEnd
            WAPP.Selection.CopyAsPicture
            Set Picture1.Picture = Clipboard.GetData
            '## сохраняем картинку на диск
            SavePicture Picture1.Picture, "Z:\FILE-P" & I & ".bmp"
          Next I
          '## тут обработка будет         
          '## теперь выход
          WDOC.Close
        End If
      End If
      WAPP.Quit
    End If
  End If
  MsgBox "OK"
End Sub

Private Sub Command1_Click()
  test "d:\tempo.txt", ""
End Sub
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 56

    TopList  
cron