Каковы единицы 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, и в документации указано, что высота / ширина указаны в точках.