Вверх ↑
Этот топик читают: Гость
Ответов: 463
Рейтинг: 9
#1: 2010-02-28 11:32:36 ЛС | профиль | цитата
привет всем, искал но не нашел как можно обычный текст rtf-файла прочитать со всеми оформлениями... =стилями текста

поясню, мне нужно брать исходный rtf- файл и потом привести его к html ...
например подчеркнутое, жирное , наклонное слово нужно "вложить" в соответствующие тэги

как можно из rtf- выдирать оформление?

может это конечно и изврат, но правда нужно
карма: 0

0
Ответов: 5446
Рейтинг: 323
#2: 2010-02-28 11:41:26 ЛС | профиль | цитата
ajaxii, прочитать описание формата RTF.
карма: 1

0
Ответов: 463
Рейтинг: 9
#3: 2010-02-28 12:31:43 ЛС | профиль | цитата
вопрос вообще-то заключался в другом... прошу прощения за косноязычность

есть стандартный компонент Rich Edit, в нем есть какая-нибудь точка ВЫВОДА стиля...?
писать в него можно легко задавая стиль верхними точками, а вот читать?


code_17112.txt
------------ Дoбавленo в 14.42:
прочитал описание формата RTF ...
нужно делать чтение и самого текста и его оформления 2 разными компонентами, а потом служебные теги RTF заменять HTML-овскими ...

я прав или опять не то?
карма: 0

0
файлы: 1code_17112.txt [1.7KB] [119]
Ответов: 294
Рейтинг: 64
#4: 2010-02-28 17:39:18 ЛС | профиль | цитата
ajaxii писал(а):
мне нужно брать исходный rtf- файл и потом привести его к html

Самому делать парсер дело неблагодарное....
Вот схема, на базе консольной утилиты rtf2html (ссылка на сайт автора в схеме есть):
http://hiasm.com/forum_serv.php?q=56&id=1125
карма: 0

1
Голосовали:LainX
Ответов: 1161
Рейтинг: 160
#5: 2010-02-28 19:31:57 ЛС | профиль | цитата
Quest, аможно ли при помощи этой утилиты делать обратное?
карма: 0

0
Ответов: 294
Рейтинг: 64
#6: 2010-02-28 21:07:17 ЛС | профиль | цитата
LainX писал(а):
Quest, аможно ли при помощи этой утилиты делать обратное?

Этой нет. Поискать можно в тырнете и пользовать аналогичным образом...
Из бесплатного первое, что попалось (не проверял):

http://www.gkrueger.com/personal/html2rtf/index.html
и
http://htmltortf.com/index.php (тут с GUI, но вроде присутствует поддержка command line)
карма: 0

0
Ответов: 463
Рейтинг: 9
#7: 2010-02-28 21:30:56 ЛС | профиль | цитата
Quest писал(а):
Самому делать парсер дело неблагодарное....



да, но мне нужно менять тэги на свои + возможно все в таблицу загонять для отображения и правильной распечатки
карма: 0

0
Ответов: 689
Рейтинг: 20
#8: 2010-02-28 21:35:11 ЛС | профиль | цитата
конвертор не преобразовывает цветовое оформление. Стили да, а цвет нет.
А правда нельзя никак rtf попроще показать?
карма: 0

0
Ответов: 463
Рейтинг: 9
#9: 2010-03-01 06:17:10 ЛС | профиль | цитата
Quest писал(а):
Самому делать парсер дело неблагодарное....

смотря с какой стороны смотреть...

получается придется самому писать парсер, для этого нужна помощь

получается придется самому создавать Rich Reader - компонент а у меня опыта 0!

наработки буду выкладывать, требуется помощь!!!
------------ Дoбавленo в 07.05:
в rtf кодируются буквы текста:
в формате `номер слева
а сответствие в таком вот списке

00=U0000=NULL
01=U0001=START OF HEADING
02=U0002=START OF TEXT
03=U0003=END OF TEXT
04=U0004=END OF TRANSMISSION
05=U0005=ENQUIRY
06=U0006=ACKNOWLEDGE
07=U0007=BELL
08=U0008=BACKSPACE
09=U0009=HORIZONTAL TABULATION
0A=U000A=LINE FEED
0B=U000B=VERTICAL TABULATION
0C=U000C=FORM FEED
0D=U000D=CARRIAGE RETURN
0E=U000E=SHIFT OUT
0F=U000F=SHIFT IN
10=U0010=DATA LINK ESCAPE
11=U0011=DEVICE CONTROL ONE
12=U0012=DEVICE CONTROL TWO
13=U0013=DEVICE CONTROL THREE
14=U0014=DEVICE CONTROL FOUR
15=U0015=NEGATIVE ACKNOWLEDGE
16=U0016=SYNCHRONOUS IDLE
17=U0017=END OF TRANSMISSION BLOCK
18=U0018=CANCEL
19=U0019=END OF MEDIUM
1A=U001A=SUBSTITUTE
1B=U001B=ESCAPE
1C=U001C=FILE SEPARATOR
1D=U001D=GROUP SEPARATOR
1E=U001E=RECORD SEPARATOR
1F=U001F=UNIT SEPARATOR
20=U0020=
21=U0021=!
22=U0022="
23=U0023=#
24=U0024=$
25=U0025=%
26=U0026=&
27=U0027=`
28=U0028=(
29=U0029=)
2A=U002A=*
2B=U002B=+
2C=U002C=,
2D=U002D=-
2E=U002E=.
2F=U002F=/
30=U0030=0
31=U0031=1
32=U0032=2
33=U0033=3
34=U0034=4
35=U0035=5
36=U0036=6
37=U0037=7
38=U0038=8
39=U0039=9
3A=U003A=:
3B=U003B=;
3C=U003C=<
3D=U003D==
3E=U003E=>
3F=U003F=?
40=U0040=@
41=U0041=A
42=U0042=B
43=U0043=C
44=U0044=D
45=U0045=E
46=U0046=F
47=U0047=G
48=U0048=H
49=U0049=I
4A=U004A=J
4B=U004B=K
4C=U004C=L
4D=U004D=M
4E=U004E=N
4F=U004F=O
50=U0050=P
51=U0051=Q
52=U0052=R
53=U0053=S
54=U0054=T
55=U0055=U
56=U0056=V
57=U0057=W
58=U0058=X
59=U0059=Y
5A=U005A=Z
5B=U005B={
5C=U005C=
5D=U005D=}
5E=U005E=^
5F=U005F=_
60=U0060=`
61=u0061=a
62=u0062=b
63=u0063=c
64=u0064=d
65=u0065=e
66=u0066=f
67=u0067=g
68=u0068=h
69=u0069=i
6a=u006a=j
6b=u006b=k
6c=u006c=l
6d=u006d=m
6e=u006e=n
6f=u006f=o
70=u0070=p
71=u0071=q
72=u0072=r
73=u0073=s
74=u0074=t
75=u0075=u
76=u0076=v
77=u0077=w
78=u0078=x
79=u0079=y
7a=u007a=z
7B=U007B={
7C=U007C=|
7D=U007D=}
7E=U007E=~
7F=U007F=DELETE
80=U0402=DJE
81=U0403=GJE
82=U201A=SINGLE LOW-9 QUOTATION MARK
83=U0453=CYRILLIC SMALL LETTER GJE
84=U201E=DOUBLE LOW-9 QUOTATION MARK
85=U2026=HORIZONTAL ELLIPSIS
86=U2020=DAGGER
87=U2021=DOUBLE DAGGER
88=U20AC=EURO SIGN
89=U2030=PER MILLE SIGN
8A=U0409=LJE
8B=U2039=SINGLE LEFT-POINTING ANGLE QUOTATION MARK
8C=U040A=NJE
8D=U040C=KJE
8E=U040B=TSHE
8F=U040F=DZHE
90=U0452=CYRILLIC SMALL LETTER DJE
91=U2018=LEFT SINGLE QUOTATION MARK
92=U2019=RIGHT SINGLE QUOTATION MARK
93=U201C=LEFT DOUBLE QUOTATION MARK
94=U201D=RIGHT DOUBLE QUOTATION MARK
95=U2022=BULLET
96=U2013=EN DASH
97=U2014=EM DASH
99=U2122=TRADE MARK SIGN
9A=U0459=CYRILLIC SMALL LETTER LJE
9B=U203A=SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
9C=U045A=CYRILLIC SMALL LETTER NJE
9D=U045C=CYRILLIC SMALL LETTER KJE
9E=U045B=CYRILLIC SMALL LETTER TSHE
9F=U045F=CYRILLIC SMALL LETTER DZHE
A0=U00A0=NO-BREAK SPACE
A1=U040E=SHORT U
A2=U045E=CYRILLIC SMALL LETTER SHORT U
A3=U0408=JE
A4=U00A4=CURRENCY SIGN
A5=U0490=GHE WITH UPTURN
A6=U00A6=BROKEN BAR
A7=U00A7=SECTION SIGN
A8=U0401=Ё
A9=U00A9=COPYRIGHT SIGN
AA=U0404=UKRAINIAN IE
AB=U00AB=LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
AC=U00AC=NOT SIGN
AD=U00AD=SOFT HYPHEN
AE=U00AE=REGISTERED SIGN
AF=U0407=YI
B0=U00B0=DEGREE SIGN
B1=U00B1=PLUS-MINUS SIGN
B2=U0406=BYELORUSSIAN-UKRAINIAN I
B3=U0456=CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
B4=U0491=CYRILLIC SMALL LETTER GHE WITH UPTURN
B5=U00B5=MICRO SIGN
B6=U00B6=

B7=U00B7=MIDDLE DOT
B8=U0451=ё
B9=U2116=№
BA=U0454=CYRILLIC SMALL LETTER UKRAINIAN IE
BB=U00BB=RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
BC=U0458=CYRILLIC SMALL LETTER JE
BD=U0405=DZE
BE=U0455=CYRILLIC SMALL LETTER DZE
BF=U0457=CYRILLIC SMALL LETTER YI
C0=U0410=A
C1=U0411=Б
C2=U0412=В
C3=U0413=Г
C4=U0414=Д
C5=U0415=Е
C6=U0416=Ж
C7=U0417=З
C8=U0418=И
C9=U0419=Й
CA=U041A=К
CB=U041B=Л
CC=U041C=М
CD=U041D=Н
CE=U041E=О
CF=U041F=П
D0=U0420=Р
D1=U0421=С
D2=U0422=Т
D3=U0423=У
D4=U0424=Ф
D5=U0425=Х
D6=U0426=Ц
D7=U0427=Ч
D8=U0428=Ш
D9=U0429=Щ
DA=U042A=Ъ
DB=U042B=Ы
DC=U042C=Ь
DD=U042D=Э
DE=U042E=Ю
DF=U042F=Я
e0=u0410=a
e1=u0411=б
e2=u0412=в
e3=u0413=г
e4=u0414=д
e5=u0415=е
e6=u0416=ж
e7=u0417=з
e8=u0418=и
e9=u0419=й
ea=u041a=к
eb=u041b=л
ec=u041c=м
ed=u041d=н
ee=u041e=о
ef=u041f=п
f0=u0420=р
f1=u0421=с
f2=u0422=т
f3=u0423=у
f4=u0424=ф
f5=u0425=х
f6=u0426=ц
f7=u0427=ч
f8=u0428=ш
f9=u0429=щ
fa=u042a=ъ
fb=u042b=ы
fc=u042c=ь
fd=u042d=э
fe=u042e=ю
ff=u042f=я

наверное опять изобретаю велосипед?

------------ Дoбавленo в 08.54:
http://msdn.microsoft.com/ru-ru/goglobal/cc305144%28en-us%29.aspx
таблица
карма: 0

0
Ответов: 1161
Рейтинг: 160
#10: 2010-03-01 14:56:26 ЛС | профиль | цитата
ajaxii писал(а):
наверное опять изобретаю велосипед?

А как же: эта таблица кодов символов, только переведенных в шестнацетиричную систему счисления.
В HiAsm это можно реализовать при помощи компонента

Add(Stream2Hex,6466290,175,175)
{
Mode=3
}
карма: 0

1
Голосовали:ajaxii
Ответов: 463
Рейтинг: 9
#11: 2010-03-01 19:34:03 ЛС | профиль | цитата
блин...
спасибо за инфу
------------ Дoбавленo в 19.44:
хм ... можно пример тогда? это не работает:

Add(MainForm,2953706,59,91)
{
@Hint=#38:чтение оформления текста из rtf -файла|38:и перевод этого оформления в html-тэги|15:ajaxii@mail.ru |
Width=864
Height=860
AddHint(-29,84,183,65,@Hint)
}
Add(RichEdit,13050883,196,91)
{
@Hint=#23:читаем rtf и оформление|
Left=10
Top=445
Width=805
Height=300
Color=-16777201
ModeSp=2
ColorSp=12639424
MinOwn=100
MinRest=500
ScrollBars=3
ReadOnly=0
CanDragOle=1
Point(RichEdit)
link(onChange,2974940:doText,[(429,97)(429,342)])
AddHint(50,-66,139,13,@Hint)
}
Add(Edit,3880661,217,406)
{
Left=15
Top=5
Width=700
link(onChange,469818:doEvent1,[(261,412)])
}
Add(ODialog,12607574,161,406)
{
FileName="*.rtf"
link(onExecute,3880661:doText,[])
}
Add(Button,12858946,98,406)
{
Left=725
Top=5
Width=115
Caption="файл. rtf"
Data=String(D:HIASMscenaristСЦЕНАРИЙ РОКОВОЕ СОВПАДЕНИЕ 14.02.rtf)
link(onClick,12607574:doExecute,[])
}
Add(Hub,469818,252,371)
{
OutCount=3
link(onEvent1,13050883:doLoad,[(261,314)(170,314)(170,118)])
link(onEvent2,10327199:doLoad,[(298,384)(298,328)])
link(onEvent3,7951778:doEnum,[(393,391)(393,202)])
}
Add(HilightMemo,2974940,623,315)
{
Left=10
Top=45
Width=405
Height=360
Font=[Courier New,8,0,0,1]
HilightFont=[Courier New,8,0,0,1]
}
Add(HilightMemo,3707675,628,234)
{
Left=425
Top=45
Width=405
Height=360
Font=[Courier New,8,0,0,1]
HilightFont=[Courier New,8,0,0,1]
}
Add(StrList,10327199,329,294)
{
}
Add(ArrayEnum,7951778,469,196)
{
link(onItem,6466290:doConvert,[(513,202)(513,251)(464,251)(464,300)])
link(Array,10327199:Array,[(475,191)(384,191)(384,351)(349,351)])
}
Add(Stream2Hex,6466290,476,294)
{
Mode=3
Symbol="'"
link(onResult,3707675:doAdd,[(568,300)(568,240)])
link(Data,7951778:Item,[(482,261)(475,261)])
}

карма: 0

0
Разработчик
Ответов: 26306
Рейтинг: 2146
#12: 2010-03-01 19:50:37 ЛС | профиль | цитата
Одно предупреждение по RichEdit-y, в нашем компоненте нет форматирования таблиц. Увы, но это факт
карма: 22

0
Ответов: 463
Рейтинг: 9
#13: 2010-03-01 20:21:07 ЛС | профиль | цитата
nesco, где бы исходник вашего RichEdit подглядеть?
------------ Дoбавленo в 20.27:
прошу, прощеня.. нашел CTRL +D
карма: 0

0
Разработчик
Ответов: 26306
Рейтинг: 2146
#14: 2010-03-01 22:28:43 ЛС | профиль | цитата
ajaxii писал(а):
где бы исходник вашего RichEdit подглядеть?

Это не исходник компонента. Исходники обертки самого класса RichEdit находятся в KOL.pas и в RichEdit.pas
карма: 22

1
Голосовали:ajaxii
Ответов: 463
Рейтинг: 9
#15: 2010-03-04 00:06:01 ЛС | профиль | цитата
заметил что большой rtf - стандартный RichEdit не читает до конца, затык в каком-то моменте. Примерно на 20 странице текста (если с распечаткой сравнить)
карма: 0

0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)