mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-06-05 21:59:17 +02:00
Finishing display content
This commit is contained in:
@ -2453,6 +2453,23 @@ QString PDFEncoding::getEncodingCharacters(Encoding encoding)
|
|||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QByteArray PDFEncoding::getPrintableCharacters()
|
||||||
|
{
|
||||||
|
QByteArray result;
|
||||||
|
|
||||||
|
const char min = std::numeric_limits<char>::min();
|
||||||
|
const char max = std::numeric_limits<char>::max();
|
||||||
|
for (char i = min; i < max; ++i)
|
||||||
|
{
|
||||||
|
if (std::isprint(static_cast<unsigned char>(i)))
|
||||||
|
{
|
||||||
|
result.push_back(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
bool PDFEncoding::hasUnicodeLeadMarkings(const QByteArray& stream)
|
bool PDFEncoding::hasUnicodeLeadMarkings(const QByteArray& stream)
|
||||||
{
|
{
|
||||||
if (stream.size() >= 2)
|
if (stream.size() >= 2)
|
||||||
|
@ -132,6 +132,9 @@ public:
|
|||||||
/// \returns All characters reprezentable by encoding.
|
/// \returns All characters reprezentable by encoding.
|
||||||
static QString getEncodingCharacters(Encoding encoding);
|
static QString getEncodingCharacters(Encoding encoding);
|
||||||
|
|
||||||
|
/// Returns all printable characters
|
||||||
|
static QByteArray getPrintableCharacters();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// Returns true, if byte array has UTF-16BE/LE unicode marking bytes at the
|
/// Returns true, if byte array has UTF-16BE/LE unicode marking bytes at the
|
||||||
/// stream start. If they are present, then byte stream is probably encoded
|
/// stream start. If they are present, then byte stream is probably encoded
|
||||||
|
@ -42,6 +42,9 @@ ObjectViewerWidget::ObjectViewerWidget(bool isPinned, QWidget* parent) :
|
|||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
m_printableCharacters = pdf::PDFEncoding::getPrintableCharacters();
|
||||||
|
m_printableCharacters.push_back('\n');
|
||||||
|
|
||||||
connect(ui->pinButton, &QPushButton::clicked, this, &ObjectViewerWidget::pinRequest);
|
connect(ui->pinButton, &QPushButton::clicked, this, &ObjectViewerWidget::pinRequest);
|
||||||
connect(ui->unpinButton, &QPushButton::clicked, this, &ObjectViewerWidget::pinRequest);
|
connect(ui->unpinButton, &QPushButton::clicked, this, &ObjectViewerWidget::pinRequest);
|
||||||
|
|
||||||
@ -160,7 +163,7 @@ void ObjectViewerWidget::updateUi()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case pdf::PDFObject::Type::Name:
|
case pdf::PDFObject::Type::Name:
|
||||||
ui->descriptionEdit->setText(QString("/%1").arg(QString::fromLatin1(m_currentObject.getString().toPercentEncoding())));
|
ui->descriptionEdit->setText(QString("/%1").arg(QString::fromLatin1(m_currentObject.getString().toPercentEncoding(m_printableCharacters))));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case pdf::PDFObject::Type::Array:
|
case pdf::PDFObject::Type::Array:
|
||||||
@ -216,11 +219,23 @@ void ObjectViewerWidget::updateUi()
|
|||||||
QImage image = pdfImage.getImage(m_cms, &dummyErrorReporter);
|
QImage image = pdfImage.getImage(m_cms, &dummyErrorReporter);
|
||||||
ui->stackedWidget->setCurrentWidget(ui->imageBrowserPage);
|
ui->stackedWidget->setCurrentWidget(ui->imageBrowserPage);
|
||||||
ui->imageBrowser->setPixmap(QPixmap::fromImage(image));
|
ui->imageBrowser->setPixmap(QPixmap::fromImage(image));
|
||||||
|
|
||||||
|
const int width = image.width();
|
||||||
|
const int height = image.height();
|
||||||
|
const int depth = loader.readIntegerFromDictionary(dictionary, "BitsPerComponent", 8);
|
||||||
|
|
||||||
|
QString textDescription = tr("Image Stream [%1 items, %2 data bytes, %3 x %4 pixels, %5 bits per component]");
|
||||||
|
ui->descriptionEdit->setText(textDescription.arg(locale.toString(m_currentObject.getStream()->getDictionary()->getCount()),
|
||||||
|
locale.toString(m_currentObject.getStream()->getContent()->size()),
|
||||||
|
locale.toString(width),
|
||||||
|
locale.toString(height),
|
||||||
|
locale.toString(depth)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
QByteArray data = m_document->getDecodedStream(stream);
|
QByteArray data = m_document->getDecodedStream(stream);
|
||||||
QByteArray percentEncodedData = data.toPercentEncoding(" \n");
|
data.replace('\r', ' ');
|
||||||
|
QByteArray percentEncodedData = data.toPercentEncoding(m_printableCharacters);
|
||||||
ui->contentTextBrowser->setText(QString::fromLatin1(percentEncodedData));
|
ui->contentTextBrowser->setText(QString::fromLatin1(percentEncodedData));
|
||||||
ui->stackedWidget->setCurrentWidget(ui->contentTextBrowserPage);
|
ui->stackedWidget->setCurrentWidget(ui->contentTextBrowserPage);
|
||||||
}
|
}
|
||||||
@ -234,7 +249,7 @@ void ObjectViewerWidget::updateUi()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
QByteArray serializedObject = pdf::PDFDocumentWriter::getSerializedObject(m_currentObject);
|
QByteArray serializedObject = pdf::PDFDocumentWriter::getSerializedObject(m_currentObject);
|
||||||
QByteArray percentEncodedData = serializedObject.toPercentEncoding(" \n");
|
QByteArray percentEncodedData = serializedObject.toPercentEncoding(m_printableCharacters);
|
||||||
ui->contentTextBrowser->setText(QString::fromLatin1(percentEncodedData));
|
ui->contentTextBrowser->setText(QString::fromLatin1(percentEncodedData));
|
||||||
ui->stackedWidget->setCurrentWidget(ui->contentTextBrowserPage);
|
ui->stackedWidget->setCurrentWidget(ui->contentTextBrowserPage);
|
||||||
}
|
}
|
||||||
|
@ -65,6 +65,7 @@ private:
|
|||||||
pdf::PDFObjectReference m_currentReference;
|
pdf::PDFObjectReference m_currentReference;
|
||||||
pdf::PDFObject m_currentObject;
|
pdf::PDFObject m_currentObject;
|
||||||
bool m_isRootObject;
|
bool m_isRootObject;
|
||||||
|
QByteArray m_printableCharacters;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // pdfplugin
|
} // pdfplugin
|
||||||
|
Reference in New Issue
Block a user