Hello, I've realized that there is a great test code[1] for PDFWriter. It draws some texts and shapes, adds annotations and widgets like buttons, checkboxes, comboboxes etc and saves resulting pdf file in HOME directory. It's very useful since the capabilities of the PDFWriter can be tested with that method. I want to use that method to test PDF signatures quickly. The bad news is it doesn't work now :) I mean it's outdated since it's jailed into a #ifdef DO_TEST_PDF. After some PDFWriter unusedcode.easy cleanups[2,3] some of the calls of that test method is not available any more. I have commented out outdated parts and added a com::sun::star::uno::Reference< com::sun::star::beans::XMaterialHolder > to make it work. Patch is attached. In IRC, Tor said that writing a unit test is a better way. Maybe I can write one. Cheers. [1]: http://opengrok.libreoffice.org/xref/core/vcl/source/gdi/pdfwriter_impl.cxx#123 [2]: http://cgit.freedesktop.org/libreoffice/core/commit/?id=581e7d7057afa87036d84e42c0e0a8a7368e20c7 [3] http://cgit.freedesktop.org/libreoffice/core/commit/?id=09279fe3dad24ab58121e4f0a9564d252b64d81a -- Gökçen Eraslan
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 797159e..9ba22d3 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -134,7 +133,8 @@ void doTestCode() aContext.DocumentInfo.Title = OUString( RTL_CONSTASCII_USTRINGPARAM( "PDF export test document" ) ); aContext.DocumentInfo.Producer = OUString( RTL_CONSTASCII_USTRINGPARAM( "VCL" ) ); - PDFWriter aWriter( aContext ); + com::sun::star::uno::Reference< com::sun::star::beans::XMaterialHolder > xEnc; + PDFWriter aWriter( aContext, xEnc ); aWriter.NewPage( 595, 842 ); aWriter.BeginStructureElement( PDFWriter::Document ); // set duration of 3 sec for first page @@ -179,7 +179,7 @@ void doTestCode() aWriter.SetActualText( String( RTL_CONSTASCII_USTRINGPARAM( "It was the best of PDF, it was the worst of PDF ... or so. This is a pretty nonsensical text to denote a paragraph. I suggest you stop reading it. Because if you read on you might get bored. So continue on your on risk. Hey, you're still here ? Why do you continue to read this as it is of no use at all ? OK, it's your time, but still... . Woah, i even get bored writing this, so let's end this here and now." ) ) ); aWriter.SetAlternateText( String( RTL_CONSTASCII_USTRINGPARAM( "This paragraph contains some lengthy nonsense to test structural element emission of PDFWriter." ) ) ); aWriter.EndStructureElement(); - sal_Int32 nLongPara = aWriter.BeginStructureElement( PDFWriter::Paragraph ); + aWriter.BeginStructureElement( PDFWriter::Paragraph ); aWriter.SetStructureAttribute( PDFWriter::WritingMode, PDFWriter::LrTb ); aWriter.DrawText( Rectangle( Point( 4500, 19000 ), Size( 12000, 1000 ) ), String( RTL_CONSTASCII_USTRINGPARAM( "This paragraph is nothing special either but ends on the next page structurewise" ) ), @@ -215,13 +215,19 @@ void doTestCode() sal_Int32 nFirstDest = aWriter.CreateDest( aTargetRect ); // enable structure aWriter.EndStructureElement(); + // add something to the long paragraph as an afterthought + /* PDFWriter::aWriter.GetCurrentStructureElement removed as an unusedcode.easy item: + http://cgit.freedesktop.org/libreoffice/core/commit/?id=09279fe3dad24ab58121e4f0a9564d252b64d81a + sal_Int32 nSaveStruct = aWriter.GetCurrentStructureElement(); aWriter.SetCurrentStructureElement( nLongPara ); aWriter.DrawText( Rectangle( Point( 4500,4500 ), Size( 12000, 1000 ) ), String( RTL_CONSTASCII_USTRINGPARAM( "Add something to the longish paragraph above." ) ), TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK ); aWriter.SetCurrentStructureElement( nSaveStruct ); + */ + aWriter.EndStructureElement(); aWriter.EndStructureElement(); aWriter.BeginStructureElement( PDFWriter::Figure ); @@ -287,6 +293,11 @@ void doTestCode() aTranspRect = Rectangle( Point( 1500, 16500 ), Size( 4800, 3000 ) ); aWriter.SetFillColor( Color( COL_LIGHTRED ) ); aWriter.DrawRect( aTranspRect ); + + /* + EndTransparencyGroup( const Rectangle& rBoundRect, const Bitmap& rAlphaMask ) is removed as an unusedcode.easy item: + http://cgit.freedesktop.org/libreoffice/core/commit/?id=581e7d7057afa87036d84e42c0e0a8a7368e20c7 + aWriter.BeginTransparencyGroup(); aWriter.SetFillColor( Color( COL_LIGHTGREEN ) ); aWriter.DrawEllipse( aTranspRect ); @@ -295,6 +306,7 @@ void doTestCode() String( RTL_CONSTASCII_USTRINGPARAM( "Some transparent text" ) ), TEXT_DRAW_CENTER | TEXT_DRAW_VCENTER | TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK ); aWriter.EndTransparencyGroup( aTranspRect, aTransMask ); + */ Bitmap aImageBmp( Size( 256, 256 ), 24 ); pAcc = aImageBmp.AcquireWriteAccess(); @@ -332,6 +344,10 @@ void doTestCode() aWall.SetStyle( WALLPAPER_TILE ); aWriter.DrawWallpaper( Rectangle( Point( 4400, 4200 ), Size( 10200, 6300 ) ), aWall ); + /* + BeginPattern/EndPattern is removed as an unusedcode.easy item: + http://cgit.freedesktop.org/libreoffice/core/commit/?id=581e7d7057afa87036d84e42c0e0a8a7368e20c7 + aWriter.Push( PUSH_ALL ); aWriter.BeginPattern(Rectangle(Point(0,0),Size(2000,1000))); aWriter.SetFillColor( Color( COL_RED ) ); @@ -349,6 +365,7 @@ void doTestCode() aWriter.SetFillColor(); aWriter.SetLineColor( Color( COL_LIGHTBLUE ) ); aWriter.DrawRect( aPolyRect ); + */ aWriter.NewPage( 595, 842 ); aWriter.SetMapMode( MapMode( MAP_100TH_MM ) );
Attachment:
signature.asc
Description: OpenPGP digital signature