609739ab94
- use a more compact encoding for reals by dropping trailing zeros after the decimal point. - ensure the BaseFont property of the standard PS fonts is preserved. Bump revision.
30 lines
1.1 KiB
C++
30 lines
1.1 KiB
C++
$NetBSD: patch-src_base_PdfVariant.cpp,v 1.1 2013/07/16 21:28:43 joerg Exp $
|
|
|
|
--- src/base/PdfVariant.cpp.orig 2011-04-19 17:34:25.000000000 +0000
|
|
+++ src/base/PdfVariant.cpp
|
|
@@ -267,8 +267,24 @@ void PdfVariant::Write( PdfOutputDevice*
|
|
std::ostringstream oss;
|
|
PdfLocaleImbue(oss);
|
|
oss << std::fixed << m_Data.dNumber;
|
|
+ size_t len = oss.str().size();
|
|
|
|
- pDevice->Write( oss.str().c_str(), oss.str().size() );
|
|
+ if( (eWriteMode & ePdfWriteMode_Compact) == ePdfWriteMode_Compact &&
|
|
+ oss.str().find('.') != string::npos )
|
|
+ {
|
|
+ const char *str = oss.str().c_str();
|
|
+ while( str[len - 1] == '0' )
|
|
+ --len;
|
|
+ if( str[len - 1] == '.' )
|
|
+ --len;
|
|
+ if( len == 0 )
|
|
+ {
|
|
+ pDevice->Write( "0", 1 );
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ pDevice->Write( oss.str().c_str(), len );
|
|
break;
|
|
}
|
|
case ePdfDataType_HexString:
|