Charly LEE Ответов: 2

QT5 съест все пустое пространство, которое я добавил в HTML


Привет,

Я использую QTextDocument для создания pdf-файла из html-строки. Однако белое пространство все съедено, кроме одного оставшегося.Я пишу html-строку в файл и открываю его.Белое пространство тоже исчезло.

Только если я наберу & nbsp непосредственно в html-файле,все будет в порядке.
В QString это не так.

Что я уже пробовал:

Очень странно, что QDomDocument автоматически добавляет "amp "перед каждым"nbsp".Таким образом, держатель белого пространства не может вступить в силу.


 QTextDocument text_document;
//here parse the html file , make some changes
 QDomDocument html_doc = ParseHtmlToNodes(path);
    if(html_doc.isNull())
        return;
  QFile file("changed.html");
    if (!file.open(QIODevice::WriteOnly)) {
        qDebug()<< "Cannot open file for writing: "
                  << file.errorString();
        return;
    }


    QTextStream stream_saver(&file);
    stream_saver<<html_doc.toString();
    stream_saver.setCodec("UTF8");
    stream_saver.flush();

2 Ответов

Рейтинг:
1

Jochen Arndt

В соответствии со спецификацией HTML несколько пробелов должны быть проигнорированы, если они не находятся внутри PRE блок:

В частности, агенты пользователей должны сворачивать входные последовательности пробелов при создании выходного межсловного пространства.
Реализация Qt просто следует стандарту.

Откройте свой HTML-файл с помощью браузера, и вы увидите, что он отображается точно так же.

Если вам нужен другой рендеринг с несколькими пробелами, вы должны соответствующим образом отформатировать свой HTML-ввод (например, с помощью &nbsp; неразрывные пробелы или PRE блоки).


Рейтинг:
0

Patrice T

Попробуй

myhtml.replace(" " , "&nbsp;");

или
QByteArray myhtml = temp_name.toLatin1().replace(" " , "&nbsp;");


Charly LEE

Если я это сделаю, то html будет отображать "nbsp;", но не пробел

Patrice T

Этого не должно быть, что-то еще не так.

Charly LEE

Я получил его, в коде, я добавляю некоторый текст в html /, не используя снаружи.

Charly LEE

Привет, Я обновляю вопрос. новые находки прилагаются. Знаете ли вы хитрую вещь в QDomDocument? Я действительно сделал то, что вы написали, но что-то автоматически произошло, когда я написал файл.

Patrice T

Ничем не могу вам помочь.

Charly LEE

Я еще раз проверить HTML-файл, все "&усилителя;усилитель; nbsp; стала&усилителя;усилителя;усилитель; nbsp;",после записи в файл. (в Qstring я не добавил никакого "& amp", он должен быть добавлен QDomDocument внутри) Я не знаю, как этого избежать