2020-06-15 13:50:18 +02:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
|
|
/*
|
|
|
|
* This file is part of the LibreOffice project.
|
|
|
|
*
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config_features.h>
|
|
|
|
|
|
|
|
#if HAVE_FEATURE_PDFIUM
|
|
|
|
|
|
|
|
#include <cppunit/TestAssert.h>
|
|
|
|
#include <cppunit/extensions/HelperMacros.h>
|
|
|
|
|
|
|
|
#include <unotest/bootstrapfixturebase.hxx>
|
|
|
|
#include <unotest/directories.hxx>
|
2020-06-18 13:50:15 +02:00
|
|
|
#include <unotools/datetime.hxx>
|
|
|
|
|
|
|
|
#include <com/sun/star/util/DateTime.hpp>
|
2020-06-15 13:50:18 +02:00
|
|
|
|
|
|
|
#include <vcl/graph.hxx>
|
|
|
|
#include <vcl/graphicfilter.hxx>
|
|
|
|
#include <tools/stream.hxx>
|
|
|
|
|
|
|
|
#include <vcl/filter/PDFiumLibrary.hxx>
|
|
|
|
|
|
|
|
class PDFiumLibraryTest : public test::BootstrapFixtureBase
|
|
|
|
{
|
|
|
|
OUString getFullUrl(const OUString& sFileName)
|
|
|
|
{
|
|
|
|
return m_directories.getURLFromSrc("/vcl/qa/cppunit/data/") + sFileName;
|
|
|
|
}
|
|
|
|
|
|
|
|
void testDocument();
|
|
|
|
void testPages();
|
2020-06-28 10:12:17 +02:00
|
|
|
void testPageObjects();
|
2020-06-15 14:44:19 +02:00
|
|
|
void testAnnotationsMadeInEvince();
|
|
|
|
void testAnnotationsMadeInAcrobat();
|
2020-09-03 20:15:36 +02:00
|
|
|
void testAnnotationsDifferentTypes();
|
2020-06-18 13:50:15 +02:00
|
|
|
void testTools();
|
2020-06-15 13:50:18 +02:00
|
|
|
|
|
|
|
CPPUNIT_TEST_SUITE(PDFiumLibraryTest);
|
|
|
|
CPPUNIT_TEST(testDocument);
|
|
|
|
CPPUNIT_TEST(testPages);
|
2020-06-28 10:12:17 +02:00
|
|
|
CPPUNIT_TEST(testPageObjects);
|
2020-06-15 14:44:19 +02:00
|
|
|
CPPUNIT_TEST(testAnnotationsMadeInEvince);
|
|
|
|
CPPUNIT_TEST(testAnnotationsMadeInAcrobat);
|
2020-09-03 20:15:36 +02:00
|
|
|
CPPUNIT_TEST(testAnnotationsDifferentTypes);
|
2020-06-18 13:50:15 +02:00
|
|
|
CPPUNIT_TEST(testTools);
|
2020-06-15 13:50:18 +02:00
|
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
|
};
|
|
|
|
|
|
|
|
void PDFiumLibraryTest::testDocument()
|
|
|
|
{
|
|
|
|
OUString aURL = getFullUrl("Pangram.pdf");
|
|
|
|
SvFileStream aStream(aURL, StreamMode::READ);
|
|
|
|
GraphicFilter& rGraphicFilter = GraphicFilter::GetGraphicFilter();
|
|
|
|
Graphic aGraphic = rGraphicFilter.ImportUnloadedGraphic(aStream);
|
|
|
|
aGraphic.makeAvailable();
|
|
|
|
|
|
|
|
auto pVectorGraphicData = aGraphic.getVectorGraphicData();
|
|
|
|
CPPUNIT_ASSERT(pVectorGraphicData);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(VectorGraphicDataType::Pdf,
|
|
|
|
pVectorGraphicData->getVectorGraphicDataType());
|
|
|
|
|
|
|
|
const void* pData = pVectorGraphicData->getVectorGraphicDataArray().getConstArray();
|
|
|
|
int nLength = pVectorGraphicData->getVectorGraphicDataArrayLength();
|
|
|
|
|
|
|
|
auto pPdfium = vcl::pdf::PDFiumLibrary::get();
|
|
|
|
CPPUNIT_ASSERT(pPdfium);
|
|
|
|
auto pDocument = pPdfium->openDocument(pData, nLength);
|
|
|
|
CPPUNIT_ASSERT(pDocument);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, pDocument->getPageCount());
|
|
|
|
|
|
|
|
auto aSize = pDocument->getPageSize(0);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(612.0, aSize.getX());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(792.0, aSize.getY());
|
2020-06-28 10:12:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void PDFiumLibraryTest::testPages()
|
|
|
|
{
|
|
|
|
OUString aURL = getFullUrl("Pangram.pdf");
|
|
|
|
SvFileStream aStream(aURL, StreamMode::READ);
|
|
|
|
GraphicFilter& rGraphicFilter = GraphicFilter::GetGraphicFilter();
|
|
|
|
Graphic aGraphic = rGraphicFilter.ImportUnloadedGraphic(aStream);
|
|
|
|
aGraphic.makeAvailable();
|
|
|
|
|
|
|
|
auto pVectorGraphicData = aGraphic.getVectorGraphicData();
|
|
|
|
CPPUNIT_ASSERT(pVectorGraphicData);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(VectorGraphicDataType::Pdf,
|
|
|
|
pVectorGraphicData->getVectorGraphicDataType());
|
|
|
|
|
|
|
|
const void* pData = pVectorGraphicData->getVectorGraphicDataArray().getConstArray();
|
|
|
|
int nLength = pVectorGraphicData->getVectorGraphicDataArrayLength();
|
|
|
|
|
|
|
|
auto pPdfium = vcl::pdf::PDFiumLibrary::get();
|
|
|
|
auto pDocument = pPdfium->openDocument(pData, nLength);
|
|
|
|
CPPUNIT_ASSERT(pDocument);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, pDocument->getPageCount());
|
2020-06-15 13:50:18 +02:00
|
|
|
|
|
|
|
auto pPage = pDocument->openPage(0);
|
|
|
|
CPPUNIT_ASSERT(pPage);
|
|
|
|
}
|
|
|
|
|
2020-06-28 10:12:17 +02:00
|
|
|
void PDFiumLibraryTest::testPageObjects()
|
2020-06-15 13:50:18 +02:00
|
|
|
{
|
|
|
|
OUString aURL = getFullUrl("Pangram.pdf");
|
|
|
|
SvFileStream aStream(aURL, StreamMode::READ);
|
|
|
|
GraphicFilter& rGraphicFilter = GraphicFilter::GetGraphicFilter();
|
|
|
|
Graphic aGraphic = rGraphicFilter.ImportUnloadedGraphic(aStream);
|
|
|
|
aGraphic.makeAvailable();
|
|
|
|
|
|
|
|
auto pVectorGraphicData = aGraphic.getVectorGraphicData();
|
|
|
|
CPPUNIT_ASSERT(pVectorGraphicData);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(VectorGraphicDataType::Pdf,
|
|
|
|
pVectorGraphicData->getVectorGraphicDataType());
|
|
|
|
|
|
|
|
const void* pData = pVectorGraphicData->getVectorGraphicDataArray().getConstArray();
|
|
|
|
int nLength = pVectorGraphicData->getVectorGraphicDataArrayLength();
|
|
|
|
|
|
|
|
auto pPdfium = vcl::pdf::PDFiumLibrary::get();
|
|
|
|
auto pDocument = pPdfium->openDocument(pData, nLength);
|
|
|
|
CPPUNIT_ASSERT(pDocument);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, pDocument->getPageCount());
|
|
|
|
|
|
|
|
auto pPage = pDocument->openPage(0);
|
|
|
|
CPPUNIT_ASSERT(pPage);
|
2020-06-28 10:12:17 +02:00
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(12, pPage->getObjectCount());
|
|
|
|
|
|
|
|
auto pPageObject = pPage->getObject(0);
|
|
|
|
auto pTextPage = pPage->getTextPage();
|
|
|
|
|
2020-11-10 21:12:29 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFPageObjectType::Text, pPageObject->getType());
|
2020-06-28 13:46:41 +02:00
|
|
|
|
2020-06-28 10:12:17 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("The quick, brown fox jumps over a lazy dog. DJs flock by when "
|
|
|
|
"MTV ax quiz prog. Junk MTV quiz "),
|
|
|
|
pPageObject->getText(pTextPage));
|
2020-06-28 13:46:41 +02:00
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(12.0, pPageObject->getFontSize());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Liberation Serif"), pPageObject->getFontName());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(0, pPageObject->getTextRenderMode()); // FPDF_TEXTRENDERMODE_FILL
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_BLACK, pPageObject->getFillColor());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_BLACK, pPageObject->getStrokeColor());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, pPageObject->getMatrix().isIdentity());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(057.01, pPageObject->getBounds().getMinX(), 1E-2);
|
|
|
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(721.51, pPageObject->getBounds().getMinY(), 1E-2);
|
|
|
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(539.48, pPageObject->getBounds().getMaxX(), 1E-2);
|
|
|
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(732.54, pPageObject->getBounds().getMaxY(), 1E-2);
|
2020-06-15 13:50:18 +02:00
|
|
|
}
|
|
|
|
|
2020-06-15 14:44:19 +02:00
|
|
|
void PDFiumLibraryTest::testAnnotationsMadeInEvince()
|
|
|
|
{
|
|
|
|
OUString aURL = getFullUrl("PangramWithAnnotations.pdf");
|
|
|
|
SvFileStream aStream(aURL, StreamMode::READ);
|
|
|
|
GraphicFilter& rGraphicFilter = GraphicFilter::GetGraphicFilter();
|
|
|
|
Graphic aGraphic = rGraphicFilter.ImportUnloadedGraphic(aStream);
|
|
|
|
aGraphic.makeAvailable();
|
|
|
|
|
|
|
|
auto pVectorGraphicData = aGraphic.getVectorGraphicData();
|
|
|
|
CPPUNIT_ASSERT(pVectorGraphicData);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(VectorGraphicDataType::Pdf,
|
|
|
|
pVectorGraphicData->getVectorGraphicDataType());
|
|
|
|
|
|
|
|
const void* pData = pVectorGraphicData->getVectorGraphicDataArray().getConstArray();
|
|
|
|
int nLength = pVectorGraphicData->getVectorGraphicDataArrayLength();
|
|
|
|
|
|
|
|
auto pPdfium = vcl::pdf::PDFiumLibrary::get();
|
|
|
|
auto pDocument = pPdfium->openDocument(pData, nLength);
|
|
|
|
CPPUNIT_ASSERT(pDocument);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, pDocument->getPageCount());
|
|
|
|
|
|
|
|
auto pPage = pDocument->openPage(0);
|
|
|
|
CPPUNIT_ASSERT(pPage);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(2, pPage->getAnnotationCount());
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(0);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
2020-08-31 07:53:55 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Text, pAnnotation->getSubType());
|
2020-06-15 14:44:19 +02:00
|
|
|
|
|
|
|
OUString aPopupString = pAnnotation->getString(vcl::pdf::constDictionaryKeyTitle);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("quikee"), aPopupString);
|
|
|
|
|
|
|
|
OUString aContentsString = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Annotation test"), aContentsString);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, pAnnotation->hasKey(vcl::pdf::constDictionaryKeyPopup));
|
|
|
|
auto pPopupAnnotation = pAnnotation->getLinked(vcl::pdf::constDictionaryKeyPopup);
|
|
|
|
CPPUNIT_ASSERT(pPopupAnnotation);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, pPage->getAnnotationIndex(pPopupAnnotation));
|
2020-08-31 07:53:55 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Popup, pPopupAnnotation->getSubType());
|
2020-06-18 13:50:15 +02:00
|
|
|
|
|
|
|
OUString sDateTimeString
|
|
|
|
= pAnnotation->getString(vcl::pdf::constDictionaryKeyModificationDate);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("D:20200612201322+02'00"), sDateTimeString);
|
2020-06-15 14:44:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(1);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
2020-08-31 07:53:55 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Popup, pAnnotation->getSubType());
|
2020-06-15 14:44:19 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void PDFiumLibraryTest::testAnnotationsMadeInAcrobat()
|
|
|
|
{
|
|
|
|
OUString aURL = getFullUrl("PangramAcrobatAnnotations.pdf");
|
|
|
|
SvFileStream aStream(aURL, StreamMode::READ);
|
|
|
|
GraphicFilter& rGraphicFilter = GraphicFilter::GetGraphicFilter();
|
|
|
|
Graphic aGraphic = rGraphicFilter.ImportUnloadedGraphic(aStream);
|
|
|
|
aGraphic.makeAvailable();
|
|
|
|
|
|
|
|
auto pVectorGraphicData = aGraphic.getVectorGraphicData();
|
|
|
|
CPPUNIT_ASSERT(pVectorGraphicData);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(VectorGraphicDataType::Pdf,
|
|
|
|
pVectorGraphicData->getVectorGraphicDataType());
|
|
|
|
|
|
|
|
const void* pData = pVectorGraphicData->getVectorGraphicDataArray().getConstArray();
|
|
|
|
int nLength = pVectorGraphicData->getVectorGraphicDataArrayLength();
|
|
|
|
|
|
|
|
auto pPdfium = vcl::pdf::PDFiumLibrary::get();
|
|
|
|
auto pDocument = pPdfium->openDocument(pData, nLength);
|
|
|
|
CPPUNIT_ASSERT(pDocument);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, pDocument->getPageCount());
|
|
|
|
|
|
|
|
auto pPage = pDocument->openPage(0);
|
|
|
|
CPPUNIT_ASSERT(pPage);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(4, pPage->getAnnotationCount());
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(0);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
2020-08-31 07:53:55 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Text, pAnnotation->getSubType());
|
2020-06-15 14:44:19 +02:00
|
|
|
|
|
|
|
OUString aPopupString = pAnnotation->getString(vcl::pdf::constDictionaryKeyTitle);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("quikee"), aPopupString);
|
|
|
|
|
|
|
|
OUString aContentsString = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("YEEEY"), aContentsString);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, pAnnotation->hasKey(vcl::pdf::constDictionaryKeyPopup));
|
|
|
|
auto pPopupAnnotation = pAnnotation->getLinked(vcl::pdf::constDictionaryKeyPopup);
|
|
|
|
CPPUNIT_ASSERT(pPopupAnnotation);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, pPage->getAnnotationIndex(pPopupAnnotation));
|
2020-08-31 07:53:55 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Popup, pPopupAnnotation->getSubType());
|
2020-06-15 14:44:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(1);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
2020-08-31 07:53:55 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Popup, pAnnotation->getSubType());
|
2020-06-15 14:44:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(2);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
2020-08-31 07:53:55 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Text, pAnnotation->getSubType());
|
2020-06-15 14:44:19 +02:00
|
|
|
|
|
|
|
OUString aPopupString = pAnnotation->getString(vcl::pdf::constDictionaryKeyTitle);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("quikee"), aPopupString);
|
|
|
|
|
|
|
|
OUString aContentsString = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Note"), aContentsString);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, pAnnotation->hasKey(vcl::pdf::constDictionaryKeyPopup));
|
|
|
|
auto pPopupAnnotation = pAnnotation->getLinked(vcl::pdf::constDictionaryKeyPopup);
|
|
|
|
CPPUNIT_ASSERT(pPopupAnnotation);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(3, pPage->getAnnotationIndex(pPopupAnnotation));
|
2020-08-31 07:53:55 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Popup, pPopupAnnotation->getSubType());
|
2020-06-15 14:44:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(3);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
2020-08-31 07:53:55 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Popup, pAnnotation->getSubType());
|
2020-06-15 14:44:19 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-09-03 20:15:36 +02:00
|
|
|
void PDFiumLibraryTest::testAnnotationsDifferentTypes()
|
|
|
|
{
|
|
|
|
OUString aURL = getFullUrl("PangramWithMultipleTypeOfAnnotations.pdf");
|
|
|
|
SvFileStream aStream(aURL, StreamMode::READ);
|
|
|
|
GraphicFilter& rGraphicFilter = GraphicFilter::GetGraphicFilter();
|
|
|
|
Graphic aGraphic = rGraphicFilter.ImportUnloadedGraphic(aStream);
|
|
|
|
aGraphic.makeAvailable();
|
|
|
|
|
|
|
|
auto pVectorGraphicData = aGraphic.getVectorGraphicData();
|
|
|
|
CPPUNIT_ASSERT(pVectorGraphicData);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(VectorGraphicDataType::Pdf,
|
|
|
|
pVectorGraphicData->getVectorGraphicDataType());
|
|
|
|
|
|
|
|
const void* pData = pVectorGraphicData->getVectorGraphicDataArray().getConstArray();
|
|
|
|
int nLength = pVectorGraphicData->getVectorGraphicDataArrayLength();
|
|
|
|
|
|
|
|
auto pPdfium = vcl::pdf::PDFiumLibrary::get();
|
|
|
|
auto pDocument = pPdfium->openDocument(pData, nLength);
|
|
|
|
CPPUNIT_ASSERT(pDocument);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, pDocument->getPageCount());
|
|
|
|
|
|
|
|
auto pPage = pDocument->openPage(0);
|
|
|
|
CPPUNIT_ASSERT(pPage);
|
|
|
|
|
2020-09-29 11:49:58 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(6, pPage->getAnnotationCount());
|
2020-09-03 20:15:36 +02:00
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(0);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::FreeText, pAnnotation->getSubType());
|
2020-09-29 11:49:58 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(0, pAnnotation->getObjectCount());
|
|
|
|
OUString aContentsString = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Inline Note"), aContentsString);
|
2020-10-15 14:11:54 +02:00
|
|
|
auto const& rLineGeometry = pAnnotation->getLineGeometry();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rLineGeometry.empty());
|
2020-09-03 20:15:36 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(1);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
2020-09-29 11:49:58 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Ink, pAnnotation->getSubType());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(0, pAnnotation->getObjectCount());
|
|
|
|
OUString aContentsString = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Freehand Text"), aContentsString);
|
2020-10-03 11:02:34 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pAnnotation->getInkStrokes().size());
|
|
|
|
auto const& aInkStrokes = pAnnotation->getInkStrokes();
|
|
|
|
auto const& aPoints = aInkStrokes[0];
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(74), aPoints.size());
|
2020-10-14 22:54:38 +02:00
|
|
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(2.0f, pAnnotation->getBorderWidth(), 1E-2);
|
2020-10-15 14:11:54 +02:00
|
|
|
auto const& rLineGeometry = pAnnotation->getLineGeometry();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rLineGeometry.empty());
|
2020-09-29 11:49:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(2);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
2020-09-03 20:15:36 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Line, pAnnotation->getSubType());
|
2020-09-29 11:49:58 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(0, pAnnotation->getObjectCount());
|
|
|
|
OUString aContentsString = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Line Text"), aContentsString);
|
2020-10-15 14:11:54 +02:00
|
|
|
auto const& rLineGeometry = pAnnotation->getLineGeometry();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, rLineGeometry.empty());
|
2020-09-29 11:49:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(3);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Polygon, pAnnotation->getSubType());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(0, pAnnotation->getObjectCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, pAnnotation->hasKey("Vertices"));
|
|
|
|
OUString aContentsString = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Polygon Text"), aContentsString);
|
2020-10-03 11:02:34 +02:00
|
|
|
auto const& aVertices = pAnnotation->getVertices();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(3), aVertices.size());
|
2020-10-14 22:54:38 +02:00
|
|
|
CPPUNIT_ASSERT_DOUBLES_EQUAL(2.0f, pAnnotation->getBorderWidth(), 1E-2);
|
2020-10-15 14:11:54 +02:00
|
|
|
auto const& rLineGeometry = pAnnotation->getLineGeometry();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rLineGeometry.empty());
|
2020-09-29 11:49:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(4);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Circle, pAnnotation->getSubType());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(0, pAnnotation->getObjectCount());
|
|
|
|
OUString aContentsString = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Ellipse Text"), aContentsString);
|
2020-10-15 14:11:54 +02:00
|
|
|
auto const& rLineGeometry = pAnnotation->getLineGeometry();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rLineGeometry.empty());
|
2020-09-29 11:49:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pAnnotation = pPage->getAnnotation(5);
|
|
|
|
CPPUNIT_ASSERT(pAnnotation);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFAnnotationSubType::Square, pAnnotation->getSubType());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(0, pAnnotation->getObjectCount());
|
|
|
|
OUString aContentsString = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Rectangle Text"), aContentsString);
|
2020-10-15 09:07:31 +02:00
|
|
|
CPPUNIT_ASSERT_EQUAL(Color(0xFF, 0xE0, 0x00), pAnnotation->getColor());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, pAnnotation->hasKey(vcl::pdf::constDictionaryKeyInteriorColor));
|
2020-10-15 14:11:54 +02:00
|
|
|
auto const& rLineGeometry = pAnnotation->getLineGeometry();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rLineGeometry.empty());
|
2020-09-03 20:15:36 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-18 13:50:15 +02:00
|
|
|
void PDFiumLibraryTest::testTools()
|
|
|
|
{
|
|
|
|
OUString sConverted = vcl::pdf::convertPdfDateToISO8601("D:20200612201322+02'00");
|
|
|
|
|
|
|
|
css::util::DateTime aDateTime;
|
|
|
|
CPPUNIT_ASSERT(utl::ISO8601parseDateTime(sConverted, aDateTime));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int16(2020), aDateTime.Year);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_uInt16(6), aDateTime.Month);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_uInt16(12), aDateTime.Day);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_uInt16(20), aDateTime.Hours);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_uInt16(13), aDateTime.Minutes);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_uInt16(22), aDateTime.Seconds);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), aDateTime.NanoSeconds);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, bool(aDateTime.IsUTC));
|
|
|
|
}
|
|
|
|
|
2020-06-15 13:50:18 +02:00
|
|
|
CPPUNIT_TEST_SUITE_REGISTRATION(PDFiumLibraryTest);
|
|
|
|
|
|
|
|
CPPUNIT_PLUGIN_IMPLEMENT();
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|