tdf#148706: map value prop in numericfield to text

Change-Id: Ifc37b0aa8dc657d7a7f05199c8132896d03eb437
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134240
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
Xisco Fauli
2022-05-12 16:37:19 +02:00
parent eac2e7520d
commit 3bd7111fe2
3 changed files with 43 additions and 0 deletions

View File

@@ -313,10 +313,18 @@ namespace toolkitform
Any aText;
static constexpr OUStringLiteral FM_PROP_TEXT = u"Text";
static constexpr OUStringLiteral FM_PROP_LABEL = u"Label";
static constexpr OUStringLiteral FM_PROP_VALUE = u"Value";
if ( xPSI->hasPropertyByName( FM_PROP_TEXT ) )
aText = xModelProps->getPropertyValue( FM_PROP_TEXT );
else if ( xPSI->hasPropertyByName( FM_PROP_LABEL ) )
aText = xModelProps->getPropertyValue( FM_PROP_LABEL );
else if ( xPSI->hasPropertyByName( FM_PROP_VALUE ) )
{
double aValue;
if (xModelProps->getPropertyValue( FM_PROP_VALUE ) >>= aValue)
aText <<= OUString::number(aValue);
}
if ( aText.hasValue() ) {
if( ! (aText >>= Descriptor->Text) ) {
SAL_WARN("toolkit.helper", "describePDFControl: unable to assign aText to Descriptor->Text");

Binary file not shown.

View File

@@ -610,6 +610,41 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf107018)
CPPUNIT_ASSERT_EQUAL(OString("Pages"), pName->GetValue());
}
CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf148706)
{
// Import the bugdoc and export as PDF.
aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export");
saveAsPDF(u"tdf148706.odt");
// Parse the export result with pdfium.
std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parseExport();
CPPUNIT_ASSERT(pPdfDocument);
// The document has one page.
CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = pPdfDocument->openPage(/*nIndex=*/0);
CPPUNIT_ASSERT(pPdfPage);
// The page has one annotation.
CPPUNIT_ASSERT_EQUAL(1, pPdfPage->getAnnotationCount());
std::unique_ptr<vcl::pdf::PDFiumAnnotation> pAnnot = pPdfPage->getAnnotation(0);
CPPUNIT_ASSERT(pAnnot->hasKey("V"));
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFObjectType::String, pAnnot->getValueType("V"));
OUString aV = pAnnot->getString("V");
// Without the fix in place, this test would have failed with
// - Expected: 1821.84
// - Actual :
CPPUNIT_ASSERT_EQUAL(OUString("1821.84"), aV);
CPPUNIT_ASSERT(pAnnot->hasKey("DV"));
CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFObjectType::String, pAnnot->getValueType("DV"));
OUString aDV = pAnnot->getString("DV");
CPPUNIT_ASSERT_EQUAL(OUString("1821.84"), aDV);
}
CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf107089)
{
vcl::filter::PDFDocument aDocument;