1
#include <QtTest/QtTest>
3
#include <poppler-qt4.h>
5
class TestMetaData: public QObject
9
void checkStrings_data();
11
void checkStrings2_data();
13
void checkStringKeys();
14
void checkLinearised();
18
void checkPortraitOrientation();
19
void checkLandscapeOrientation();
20
void checkUpsideDownOrientation();
21
void checkSeascapeOrientation();
27
void TestMetaData::checkStrings_data()
29
QTest::addColumn<QString>("key");
30
QTest::addColumn<QString>("value");
32
QTest::newRow( "Author" ) << "Author" << "Brad Hards";
33
QTest::newRow( "Title" ) << "Title" << "Two pages";
34
QTest::newRow( "Subject" ) << "Subject"
35
<< "A two page layout for poppler testing";
36
QTest::newRow( "Keywords" ) << "Keywords" << "Qt4 bindings";
37
QTest::newRow( "Creator" ) << "Creator" << "iText: cgpdftops CUPS filter";
38
QTest::newRow( "Producer" ) << "Producer" << "Acrobat Distiller 7.0 for Macintosh";
41
void TestMetaData::checkStrings()
43
Poppler::Document *doc;
44
doc = Poppler::Document::load("../../../test/unittestcases/doublepage.pdf");
47
QFETCH( QString, key );
48
QFETCH( QString, value );
49
QCOMPARE( doc->info(key), value );
54
void TestMetaData::checkStrings2_data()
56
QTest::addColumn<QString>("key");
57
QTest::addColumn<QString>("value");
59
QTest::newRow( "Title" ) << "Title" << "Malaga hotels";
60
QTest::newRow( "Author" ) << "Author" << "Brad Hards";
61
QTest::newRow( "Creator" ) << "Creator" << "Safari: cgpdftops CUPS filter";
62
QTest::newRow( "Producer" ) << "Producer" << "Acrobat Distiller 7.0 for Macintosh";
63
QTest::newRow( "Keywords" ) << "Keywords" << "First\rSecond\rthird";
64
QTest::newRow( "Custom1" ) << "Custom1" << "CustomValue1";
65
QTest::newRow( "Custom2" ) << "Custom2" << "CustomValue2";
68
void TestMetaData::checkStrings2()
70
Poppler::Document *doc;
71
doc = Poppler::Document::load("../../../test/unittestcases/truetype.pdf");
74
QFETCH( QString, key );
75
QFETCH( QString, value );
76
QCOMPARE( doc->info(key), value );
81
void TestMetaData::checkStringKeys()
83
Poppler::Document *doc;
84
doc = Poppler::Document::load("../../../test/unittestcases/truetype.pdf");
88
keyList << "Title" << "Author" << "Creator" << "Keywords" << "CreationDate";
89
keyList << "Producer" << "ModDate" << "Custom1" << "Custom2";
91
QStringList keysInDoc = doc->infoKeys();
93
QCOMPARE( keysInDoc, keyList );
98
void TestMetaData::checkLinearised()
100
Poppler::Document *doc;
101
doc = Poppler::Document::load("../../../test/unittestcases/orientation.pdf");
104
QVERIFY( doc->isLinearized() );
108
doc = Poppler::Document::load("../../../test/unittestcases/truetype.pdf");
110
QCOMPARE( doc->isLinearized(), false );
115
void TestMetaData::checkPortraitOrientation()
117
Poppler::Document *doc;
118
doc = Poppler::Document::load("../../../test/unittestcases/orientation.pdf");
121
Poppler::Page *page = doc->page(0);
122
QCOMPARE( page->orientation(), Poppler::Page::Portrait );
128
void TestMetaData::checkNumPages()
130
Poppler::Document *doc;
131
doc = Poppler::Document::load("../../../test/unittestcases/doublepage.pdf");
133
QCOMPARE( doc->numPages(), 2 );
137
doc = Poppler::Document::load("../../../test/unittestcases/truetype.pdf");
139
QCOMPARE( doc->numPages(), 1 );
144
void TestMetaData::checkDate()
146
Poppler::Document *doc;
148
doc = Poppler::Document::load("../../../test/unittestcases/truetype.pdf");
150
QCOMPARE( doc->date("ModDate"), QDateTime(QDate(2005, 12, 5), QTime(9,44,46), Qt::UTC ) );
151
QCOMPARE( doc->date("CreationDate"), QDateTime(QDate(2005, 8, 13), QTime(1,12,11), Qt::UTC ) );
156
void TestMetaData::checkPageSize()
158
Poppler::Document *doc;
160
doc = Poppler::Document::load("../../../test/unittestcases/truetype.pdf");
162
Poppler::Page *page = doc->page(0);
163
QCOMPARE( page->pageSize(), QSize(595, 842) );
164
QCOMPARE( page->pageSizeF(), QSizeF(595.22, 842) );
171
void TestMetaData::checkLandscapeOrientation()
173
Poppler::Document *doc;
174
doc = Poppler::Document::load("../../../test/unittestcases/orientation.pdf");
177
Poppler::Page *page = doc->page(1);
178
QCOMPARE( page->orientation(), Poppler::Page::Landscape );
184
void TestMetaData::checkUpsideDownOrientation()
186
Poppler::Document *doc;
187
doc = Poppler::Document::load("../../../test/unittestcases/orientation.pdf");
190
Poppler::Page *page = doc->page(2);
191
QCOMPARE( page->orientation(), Poppler::Page::UpsideDown );
197
void TestMetaData::checkSeascapeOrientation()
199
Poppler::Document *doc;
200
doc = Poppler::Document::load("../../../test/unittestcases/orientation.pdf");
203
Poppler::Page *page = doc->page(3);
204
QCOMPARE( page->orientation(), Poppler::Page::Seascape );
210
void TestMetaData::checkVersion()
212
Poppler::Document *doc;
213
doc = Poppler::Document::load("../../../test/unittestcases/doublepage.pdf");
216
QCOMPARE( doc->pdfVersion(), 1.6 );
217
int major = 0, minor = 0;
218
doc->getPdfVersion( &major, &minor );
219
QCOMPARE( major, 1 );
220
QCOMPARE( minor, 6 );
225
void TestMetaData::checkPdfId()
227
Poppler::Document *doc;
228
doc = Poppler::Document::load("../../../test/unittestcases/A6EmbeddedFiles.pdf");
231
const QByteArray referencePermanentId( "00C9D5B6D8FB11D7A902003065D630AA" );
232
const QByteArray referenceUpdateId( "39AECAE6D8FB11D7A902003065D630AA" );
235
// no IDs wanted, just existance check
236
QVERIFY( doc->getPdfId( 0, 0 ) );
240
QByteArray permanentId;
241
QVERIFY( doc->getPdfId( &permanentId, 0 ) );
242
QCOMPARE( permanentId.toUpper(), referencePermanentId );
247
QVERIFY( doc->getPdfId( 0, &updateId ) );
248
QCOMPARE( updateId.toUpper(), referenceUpdateId );
252
QByteArray permanentId;
254
QVERIFY( doc->getPdfId( &permanentId, &updateId ) );
255
QCOMPARE( permanentId.toUpper(), referencePermanentId );
256
QCOMPARE( updateId.toUpper(), referenceUpdateId );
262
void TestMetaData::checkNoPdfId()
264
Poppler::Document *doc;
265
doc = Poppler::Document::load("../../../test/unittestcases/WithActualText.pdf");
268
QVERIFY( !doc->getPdfId( 0, 0 ) );
273
QTEST_MAIN(TestMetaData)
274
#include "check_metadata.moc"