В продолжение вот этой темы - http://programmingmindstream.blogspot.ru/2014/04/sax.html
Пусть нам надо преобразовать RTF в HTML и при этом выкинуть пустые параграфы, а также выкинуть гиперссылки и выкинуть разрывы страниц.
Выглядит это так:
Мысль понятна?
Чем хорош SetTo?
Тем, что его легко можно добавить или закомментировать.
Если же мы хотим сделать всё то же самое, но перемыть RTF в RTF, то код меняется в одной строчке:
Ну и по аналогии RTF в DOC:
Пусть нам надо преобразовать RTF в HTML и при этом выкинуть пустые параграфы, а также выкинуть гиперссылки и выкинуть разрывы страниц.
Выглядит это так:
var G : Generator; begin G := THTMLWriter.Create(anOutput); // - писатель HTML (anOutput - выходной поток) try TEmptyParaEliminator.SetTo(G); // - фильтр выкидывающий пустые параграфы THyperlinkEliminator.SetTo(G); // - фильтр выкидывающий гиперссылки TPageBreakEliminator.SetTo(G); // - фильтр выкидывающий разрывы страниц TRTFReader.Create(anInput).SetTo(G); // - читатель RTF (anInput - входной поток) G.Execute; finally FreeAndNil(G); end;//try..finally end;
Мысль понятна?
Чем хорош SetTo?
Тем, что его легко можно добавить или закомментировать.
Если же мы хотим сделать всё то же самое, но перемыть RTF в RTF, то код меняется в одной строчке:
var G : Generator; begin G := TRTFWriter.Create(anOutput); // - писатель RTF (anOutput - выходной поток) try TEmptyParaEliminator.SetTo(G); // - фильтр выкидывающий пустые параграфы THyperlinkEliminator.SetTo(G); // - фильтр выкидывающий гиперссылки TPageBreakEliminator.SetTo(G); // - фильтр выкидывающий разрывы страниц TRTFReader.Create(anInput).SetTo(G); // - читатель RTF (anInput - входной поток) G.Execute; finally FreeAndNil(G); end;//try..finally end;
Ну и по аналогии RTF в DOC:
var G : Generator; begin G := TDOCWriter.Create(anOutput); // - писатель DOC (anOutput - выходной поток) try TEmptyParaEliminator.SetTo(G); // - фильтр выкидывающий пустые параграфы THyperlinkEliminator.SetTo(G); // - фильтр выкидывающий гиперссылки TPageBreakEliminator.SetTo(G); // - фильтр выкидывающий разрывы страниц TRTFReader.Create(anInput).SetTo(G); // - читатель RTF (anInput - входной поток) G.Execute; finally FreeAndNil(G); end;//try..finally end;
Комментариев нет:
Отправить комментарий