Перенос rich текста между редакторами

330
14 января 2017, 12:47

Подскажите, как переносится форматирование и rich текст при копировании между совершенно разными редакторами, например Google Docs в браузере и Word на ПК. Что за технология? Более конкретно: есть html в буфере обмена, надо его преобразовать так, чтобы при вставке в редактор был уже текст.

Answer 1

В буфере обмена данные могут храниться в нескольких представлениях (mime-type) одновременно. Приложение-источник (copy) помещает в буфер отдельную копию данных для каждого из поддерживаемых представлений, а потребитель (paste) выбирает наиболее удобный для себя формат, из тех которые понимает. В некоторых приложениях доступен выбор представления, которое будет использовано (см. Paste Special в ворде). Пример на Qt:

QByteArray svg=BOOST_PP_STRINGIZE(
            <svg height="100" width="100">
              <circle cx="50" cy="50" r="45" stroke="black" stroke-width="3" fill="red" />
              <text style="font-size:50px" x="20" y="75">Foo</text>
            </svg>
           );
QImage image;
image.loadFromData( svg );
auto*mime=new QMimeData();
mime->setText("Foo"); // Как текст (будет понимать notepad).
mime->setData( "text/html" ,  "<i>F</i><b>o</b><u>o</u>" ); // Поймет ворд
mime->setData( "image/svg+xml" ,svg );
mime->setImageData( image ); // заполняет сразу несколько графических форматов
auto*clip=QApplication::clipboard();
clip->clear();
clip->setMimeData(mime);
READ ALSO
Изменение .bin в с++

Изменение .bin в с++

Имеется бинарный файл, логически разделенный на несколько частейПроблема в том, что я не хочу загружать всю информацию в оперативную память,...

324
Ubuntu server. Дать доступ к MySQL

Ubuntu server. Дать доступ к MySQL

Установил MySQL на свой домашний ubuntu serverС самого сервера могу подключится через root пользователя к MySQL

333
Как сделать выгрузку MySQL в тестовый файл?

Как сделать выгрузку MySQL в тестовый файл?

Здравствуйте, нужно реализовать выгрузку с таблицы MySQL в тестовый файл

295