Каковы единицы QPdfDocument::pageSize?

<tcode id="102141"></tcode>(5.15.2) в модуле QtPDF (часть QtWebEngine), похоже, еще не полностью документирован (предположительно, потому что он довольно новый, впервые появившийся в 5.14).

Какие единицы размера возвращает QPdfDocument::pageSize() (не проверяйте эти документы, их там нет)?

Кажется, это какие-то разумные (хотя и с низким разрешением) пиксельные единицы, за исключением того, что я не уверен, как он выводит DPI документа. Кроме того, я тестировал только ограниченный набор PDF-файлов, созданных из одного и того же источника, поэтому я не уверен, насколько мои наблюдения нормальны, особенно учитывая, что это QSizeF а не QSize (что повышает возможность, например, других непиксельных блоков в других, пока еще не обнаруженных контекстах).

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


Пример наблюдаемых мной значений:

      #include <QCoreApplication>
#include <QDebug>
#include <QtNetwork>
#include <QtPdf>

int main (int argc, char *argv[]) {

    QCoreApplication app(argc, argv);

    QUrl url("http://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf");
    QNetworkAccessManager internet;
    QNetworkReply *reply = internet.get(QNetworkRequest(url));

    QObject::connect(reply, &QNetworkReply::finished, [reply] () {
        QPdfDocument pdf;
        pdf.load(reply);
        qDebug() << reply->url() << ":";
        for (int k = 0; k < pdf.pageCount(); ++ k)
            qDebug() << k << pdf.pageSize(k);
        QCoreApplication::exit();
    });

    return app.exec();

}

Выходы:

      QUrl("http://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf") :
0 QSizeF(595, 842)

1 ответ

Решение

Похоже, что реализация сделана с помощью PDFium. Qt вызывает FPDF_GetPageSizeByIndex, и в документации указано, что высота / ширина указаны в точках.

Другие вопросы по тегам