LibreOffice Module vcl (master) 1
pdfwriter.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include <vcl/bitmapex.hxx>
21
23
24using namespace vcl;
25
26PDFWriter::AnyWidget::~AnyWidget()
27{
28}
29
30PDFWriter::PDFWriter( const PDFWriter::PDFWriterContext& rContext, const css::uno::Reference< css::beans::XMaterialHolder >& xEnc )
31 :
32 xImplementation( VclPtr<PDFWriterImpl>::Create(rContext, xEnc, *this) )
33{
34}
35
37{
38 xImplementation.disposeAndClear();
39}
40
42{
43 return xImplementation.get();
44}
45
46void PDFWriter::NewPage( double nPageWidth, double nPageHeight, Orientation eOrientation )
47{
48 xImplementation->newPage( nPageWidth, nPageHeight, eOrientation );
49}
50
52{
53 return xImplementation->emit();
54}
55
56void PDFWriter::SetDocumentLocale( const css::lang::Locale& rLoc )
57{
58 xImplementation->setDocumentLocale( rLoc );
59}
60
61void PDFWriter::SetFont( const vcl::Font& rFont )
62{
63 xImplementation->setFont( rFont );
64}
65
66void PDFWriter::DrawText( const Point& rPos, const OUString& rText )
67{
68 xImplementation->drawText( rPos, rText, 0, rText.getLength() );
69}
70
72 const Point& rPos,
73 tools::Long nWidth,
74 FontStrikeout eStrikeout,
75 FontLineStyle eUnderline,
76 FontLineStyle eOverline )
77{
78 xImplementation->drawTextLine( rPos, nWidth, eStrikeout, eUnderline, eOverline, false/*bUnderlineAbove*/ );
79}
80
82 const Point& rStartPt,
83 const OUString& rStr,
86 sal_Int32 nIndex,
87 sal_Int32 nLen )
88{
89 xImplementation->drawTextArray( rStartPt, rStr, pDXAry, pKashidaAry, nIndex, nLen );
90}
91
93 const Point& rStartPt,
94 sal_uLong nWidth,
95 const OUString& rStr,
96 sal_Int32 nIndex,
97 sal_Int32 nLen )
98{
99 xImplementation->drawStretchText( rStartPt, nWidth, rStr, nIndex, nLen );
100}
101
103 const tools::Rectangle& rRect,
104 const OUString& rStr,
105 DrawTextFlags nStyle )
106{
107 xImplementation->drawText( rRect, rStr, nStyle );
108}
109
110void PDFWriter::DrawLine( const Point& rStart, const Point& rStop )
111{
112 xImplementation->drawLine( rStart, rStop );
113}
114
115void PDFWriter::DrawLine( const Point& rStart, const Point& rStop, const LineInfo& rInfo )
116{
117 xImplementation->drawLine( rStart, rStop, rInfo );
118}
119
121{
122 xImplementation->drawPolygon( rPoly );
123}
124
126{
127 xImplementation->drawPolyLine( rPoly );
128}
129
131{
132 xImplementation->drawRectangle( rRect );
133}
134
135void PDFWriter::DrawRect( const tools::Rectangle& rRect, sal_uLong nHorzRound, sal_uLong nVertRound )
136{
137 xImplementation->drawRectangle( rRect, nHorzRound, nVertRound );
138}
139
141{
142 xImplementation->drawEllipse( rRect );
143}
144
145void PDFWriter::DrawArc( const tools::Rectangle& rRect, const Point& rStart, const Point& rStop )
146{
147 xImplementation->drawArc( rRect, rStart, rStop, false, false );
148}
149
150void PDFWriter::DrawPie( const tools::Rectangle& rRect, const Point& rStart, const Point& rStop )
151{
152 xImplementation->drawArc( rRect, rStart, rStop, true, false );
153}
154
155void PDFWriter::DrawChord( const tools::Rectangle& rRect, const Point& rStart, const Point& rStop )
156{
157 xImplementation->drawArc( rRect, rStart, rStop, false, true );
158}
159
160void PDFWriter::DrawPolyLine( const tools::Polygon& rPoly, const LineInfo& rInfo )
161{
162 xImplementation->drawPolyLine( rPoly, rInfo );
163}
164
165void PDFWriter::DrawPolyLine( const tools::Polygon& rPoly, const ExtLineInfo& rInfo )
166{
167 xImplementation->drawPolyLine( rPoly, rInfo );
168}
169
171{
172 xImplementation->drawPolyPolygon( rPolyPoly );
173}
174
175void PDFWriter::DrawPixel( const Point& rPos, const Color& rColor )
176{
177 xImplementation->drawPixel( rPos, rColor );
178}
179
180void PDFWriter::DrawBitmap( const Point& rDestPt, const Size& rDestSize, const Bitmap& rBitmap, const Graphic& rGraphic )
181{
182 xImplementation->drawBitmap( rDestPt, rDestSize, rBitmap, rGraphic );
183}
184
185void PDFWriter::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, const BitmapEx& rBitmap )
186{
187 xImplementation->drawBitmap( rDestPt, rDestSize, rBitmap );
188}
189
190void PDFWriter::DrawHatch( const tools::PolyPolygon& rPolyPoly, const Hatch& rHatch )
191{
192 xImplementation->drawHatch( rPolyPoly, rHatch );
193}
194
195void PDFWriter::DrawGradient( const tools::Rectangle& rRect, const Gradient& rGradient )
196{
197 xImplementation->drawGradient( rRect, rGradient );
198}
199
200void PDFWriter::DrawGradient( const tools::PolyPolygon& rPolyPoly, const Gradient& rGradient )
201{
203 xImplementation->setClipRegion( rPolyPoly.getB2DPolyPolygon() );
204 xImplementation->drawGradient( rPolyPoly.GetBoundRect(), rGradient );
205 xImplementation->pop();
206}
207
208void PDFWriter::DrawWallpaper( const tools::Rectangle& rRect, const Wallpaper& rWallpaper )
209{
210 xImplementation->drawWallpaper( rRect, rWallpaper );
211}
212
213void PDFWriter::DrawTransparent( const tools::PolyPolygon& rPolyPoly, sal_uInt16 nTransparencePercent )
214{
215 xImplementation->drawTransparent( rPolyPoly, nTransparencePercent );
216}
217
219{
220 xImplementation->beginTransparencyGroup();
221}
222
223void PDFWriter::EndTransparencyGroup( const tools::Rectangle& rRect, sal_uInt16 nTransparentPercent )
224{
225 xImplementation->endTransparencyGroup( rRect, nTransparentPercent );
226}
227
229{
230 xImplementation->push( nFlags );
231}
232
234{
235 xImplementation->pop();
236}
237
238void PDFWriter::SetMapMode( const MapMode& rMapMode )
239{
240 xImplementation->setMapMode( rMapMode );
241}
242
243void PDFWriter::SetLineColor( const Color& rColor )
244{
245 xImplementation->setLineColor( rColor );
246}
247
248void PDFWriter::SetFillColor( const Color& rColor )
249{
250 xImplementation->setFillColor( rColor );
251}
252
254{
255 xImplementation->clearClipRegion();
256}
257
259{
260 xImplementation->setClipRegion( rRegion );
261}
262
264{
265 xImplementation->moveClipRegion( nHorzMove, nVertMove );
266}
267
269{
270 xImplementation->intersectClipRegion( rRegion );
271}
272
274{
275 xImplementation->intersectClipRegion( rRect );
276}
277
279{
280 xImplementation->setLayoutMode( nMode );
281}
282
284{
285 xImplementation->setDigitLanguage( eLang );
286}
287
288void PDFWriter::SetTextColor( const Color& rColor )
289{
290 xImplementation->setTextColor( rColor );
291}
292
294{
295 xImplementation->setTextFillColor();
296}
297
299{
300 xImplementation->setTextFillColor( rColor );
301}
302
304{
305 xImplementation->setTextLineColor();
306}
307
309{
310 xImplementation->setTextLineColor( rColor );
311}
312
314{
315 xImplementation->setOverlineColor();
316}
317
319{
320 xImplementation->setOverlineColor( rColor );
321}
322
324{
325 xImplementation->setTextAlign( eAlign );
326}
327
328void PDFWriter::DrawJPGBitmap( SvStream& rStreamData, bool bIsTrueColor, const Size& rSrcSizePixel, const tools::Rectangle& rTargetArea, const AlphaMask& rAlphaMask, const Graphic& rGraphic )
329{
330 xImplementation->drawJPGBitmap( rStreamData, bIsTrueColor, rSrcSizePixel, rTargetArea, rAlphaMask, rGraphic );
331}
332
333sal_Int32 PDFWriter::CreateLink(const tools::Rectangle& rRect, sal_Int32 nPageNr, OUString const& rAltText)
334{
335 return xImplementation->createLink(rRect, nPageNr, rAltText);
336}
337
338sal_Int32 PDFWriter::CreateScreen(const tools::Rectangle& rRect, sal_Int32 nPageNr)
339{
340 return xImplementation->createScreen(rRect, nPageNr);
341}
342
343sal_Int32 PDFWriter::RegisterDestReference( sal_Int32 nDestId, const tools::Rectangle& rRect, sal_Int32 nPageNr, DestAreaType eType )
344{
345 return xImplementation->registerDestReference( nDestId, rRect, nPageNr, eType );
346}
347//--->i56629
348sal_Int32 PDFWriter::CreateNamedDest( const OUString& sDestName, const tools::Rectangle& rRect, sal_Int32 nPageNr, PDFWriter::DestAreaType eType )
349{
350 return xImplementation->createNamedDest( sDestName, rRect, nPageNr, eType );
351}
352sal_Int32 PDFWriter::CreateDest( const tools::Rectangle& rRect, sal_Int32 nPageNr, PDFWriter::DestAreaType eType )
353{
354 return xImplementation->createDest( rRect, nPageNr, eType );
355}
356
357void PDFWriter::SetLinkDest( sal_Int32 nLinkId, sal_Int32 nDestId )
358{
359 xImplementation->setLinkDest( nLinkId, nDestId );
360}
361
362void PDFWriter::SetLinkURL( sal_Int32 nLinkId, const OUString& rURL )
363{
364 xImplementation->setLinkURL( nLinkId, rURL );
365}
366
367void PDFWriter::SetScreenURL(sal_Int32 nScreenId, const OUString& rURL)
368{
369 xImplementation->setScreenURL(nScreenId, rURL);
370}
371
372void PDFWriter::SetScreenStream(sal_Int32 nScreenId, const OUString& rURL)
373{
374 xImplementation->setScreenStream(nScreenId, rURL);
375}
376
377void PDFWriter::SetLinkPropertyID( sal_Int32 nLinkId, sal_Int32 nPropertyId )
378{
379 xImplementation->setLinkPropertyId( nLinkId, nPropertyId );
380}
381
382sal_Int32 PDFWriter::CreateOutlineItem( sal_Int32 nParent, std::u16string_view rText, sal_Int32 nDestID )
383{
384 return xImplementation->createOutlineItem( nParent, rText, nDestID );
385}
386
387void PDFWriter::CreateNote( const tools::Rectangle& rRect, const PDFNote& rNote, sal_Int32 nPageNr )
388{
389 xImplementation->createNote( rRect, rNote, nPageNr );
390}
391
392sal_Int32 PDFWriter::BeginStructureElement( PDFWriter::StructElement eType, std::u16string_view rAlias )
393{
394 return xImplementation->beginStructureElement( eType, rAlias );
395}
396
398{
399 xImplementation->endStructureElement();
400}
401
403{
404 xImplementation->setCurrentStructureElement( nID );
405}
406
408{
409 xImplementation->setStructureAttribute( eAttr, eVal );
410}
411
413{
414 xImplementation->setStructureAttributeNumerical( eAttr, nValue );
415}
416
418{
419 xImplementation->setStructureBoundingBox( rRect );
420}
421
422void PDFWriter::SetActualText( const OUString& rText )
423{
424 xImplementation->setActualText( rText );
425}
426
427void PDFWriter::SetAlternateText( const OUString& rText )
428{
429 xImplementation->setAlternateText( rText );
430}
431
432void PDFWriter::SetPageTransition( PDFWriter::PageTransition eType, sal_uInt32 nMilliSec, sal_Int32 nPageNr )
433{
434 xImplementation->setPageTransition( eType, nMilliSec, nPageNr );
435}
436
438{
439 return xImplementation->createControl( rControl );
440}
441
443{
444}
445
446void PDFWriter::AddStream( const OUString& rMimeType, PDFOutputStream* pStream )
447{
448 xImplementation->addStream( rMimeType, pStream );
449}
450
451std::set< PDFWriter::ErrorCode > const & PDFWriter::GetErrors() const
452{
453 return xImplementation->getErrors();
454}
455
456css::uno::Reference< css::beans::XMaterialHolder >
457PDFWriter::InitEncryption( const OUString& i_rOwnerPassword,
458 const OUString& i_rUserPassword
459 )
460{
461 return PDFWriterImpl::initEncryption( i_rOwnerPassword, i_rUserPassword );
462}
463
465{
466 xImplementation->playMetafile( i_rMTF, i_pData, i_rPlayContext );
467}
468
469/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
DrawTextFlags
PropFlags nPropertyId
Definition: hatch.hxx:47
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
Definition: outdev.hxx:171
A thin wrapper around rtl::Reference to implement the acquire and dispose semantics we want for refer...
Definition: vclptr.hxx:58
::basegfx::B2DPolyPolygon getB2DPolyPolygon() const
tools::Rectangle GetBoundRect() const
virtual ~PDFOutputStream()
Definition: pdfwriter.cxx:442
static css::uno::Reference< css::beans::XMaterialHolder > initEncryption(const OUString &i_rOwnerPassword, const OUString &i_rUserPassword)
void DrawPolygon(const tools::Polygon &rPoly)
Definition: pdfwriter.cxx:120
void DrawEllipse(const tools::Rectangle &rRect)
Definition: pdfwriter.cxx:140
void SetLineColor()
Definition: pdfwriter.hxx:741
void CreateNote(const tools::Rectangle &rRect, const PDFNote &rNote, sal_Int32 nPageNr)
Create a new note on a page.
Definition: pdfwriter.cxx:387
void DrawPie(const tools::Rectangle &rRect, const Point &rStartPt, const Point &rEndPt)
Definition: pdfwriter.cxx:150
void DrawChord(const tools::Rectangle &rRect, const Point &rStartPt, const Point &rEndPt)
Definition: pdfwriter.cxx:155
void AddStream(const OUString &rMimeType, PDFOutputStream *pStream)
Inserts an additional stream to the PDF file.
Definition: pdfwriter.cxx:446
void SetFont(const vcl::Font &rNewFont)
Definition: pdfwriter.cxx:61
void DrawHatch(const tools::PolyPolygon &rPolyPoly, const Hatch &rHatch)
Definition: pdfwriter.cxx:190
void SetTextAlign(::TextAlign eAlign)
Definition: pdfwriter.cxx:323
void SetLinkDest(sal_Int32 nLinkId, sal_Int32 nDestId)
Set the destination for a link will change a URL type link to a dest link if necessary.
Definition: pdfwriter.cxx:357
void SetTextColor(const Color &rColor)
Definition: pdfwriter.cxx:288
void SetScreenURL(sal_Int32 nScreenId, const OUString &rURL)
Sets the URL of a linked screen annotation.
Definition: pdfwriter.cxx:367
void SetActualText(const OUString &rText)
set the ActualText attribute of a structural element
Definition: pdfwriter.cxx:422
void SetLinkURL(sal_Int32 nLinkId, const OUString &rURL)
Set the URL for a link will change a dest type link to a URL type link if necessary.
Definition: pdfwriter.cxx:362
sal_Int32 CreateNamedDest(const OUString &sDestName, const tools::Rectangle &rRect, sal_Int32 nPageNr, DestAreaType eType)
Create a new named destination to be used in a link from another PDF document.
Definition: pdfwriter.cxx:348
void DrawTextLine(const Point &rPos, tools::Long nWidth, FontStrikeout eStrikeout, FontLineStyle eUnderline, FontLineStyle eOverline)
Definition: pdfwriter.cxx:71
void DrawTextArray(const Point &rStartPt, const OUString &rStr, o3tl::span< const sal_Int32 > pDXAry, o3tl::span< const sal_Bool > pKashidaAry, sal_Int32 nIndex, sal_Int32 nLen)
Definition: pdfwriter.cxx:81
void SetOverlineColor()
Definition: pdfwriter.cxx:313
static css::uno::Reference< css::beans::XMaterialHolder > InitEncryption(const OUString &i_rOwnerPassword, const OUString &i_rUserPassword)
Definition: pdfwriter.cxx:457
void Push(PushFlags nFlags=PushFlags::ALL)
Definition: pdfwriter.cxx:228
void DrawPolyLine(const tools::Polygon &rPoly)
Definition: pdfwriter.cxx:125
void NewPage(double nPageWidth, double nPageHeight, Orientation eOrientation=Orientation::Inherit)
Creates a new page to fill If width and height are not set the page size is inherited from the page t...
Definition: pdfwriter.cxx:46
void SetTextFillColor()
Definition: pdfwriter.cxx:293
void SetDigitLanguage(LanguageType eLang)
Definition: pdfwriter.cxx:283
sal_Int32 CreateControl(const AnyWidget &rControlType)
create a new form control
Definition: pdfwriter.cxx:437
void SetCurrentStructureElement(sal_Int32 nElement)
set the current structure element
Definition: pdfwriter.cxx:402
void BeginTransparencyGroup()
Start a transparency group.
Definition: pdfwriter.cxx:218
sal_Int32 RegisterDestReference(sal_Int32 nDestId, const tools::Rectangle &rRect, sal_Int32 nPageNr, DestAreaType eType)
creates a destination which is not intended to be referred to by a link, but by a public destination ...
Definition: pdfwriter.cxx:343
void PlayMetafile(const GDIMetaFile &, const PlayMetafileContext &, vcl::PDFExtOutDevData *pDevDat=nullptr)
Definition: pdfwriter.cxx:464
void DrawStretchText(const Point &rStartPt, sal_uLong nWidth, const OUString &rStr, sal_Int32 nIndex, sal_Int32 nLen)
Definition: pdfwriter.cxx:92
void DrawTransparent(const tools::PolyPolygon &rPolyPoly, sal_uInt16 nTransparencePercent)
Definition: pdfwriter.cxx:213
void DrawJPGBitmap(SvStream &rJPGData, bool bIsTrueColor, const Size &rSrcSizePixel, const tools::Rectangle &rTargetArea, const AlphaMask &rAlphaMask, const Graphic &rGraphic)
Insert a JPG encoded image (optionally with mask)
Definition: pdfwriter.cxx:328
void SetClipRegion()
Definition: pdfwriter.cxx:253
void DrawText(const Point &rPos, const OUString &rText)
Definition: pdfwriter.cxx:66
std::set< ErrorCode > const & GetErrors() const
Definition: pdfwriter.cxx:451
void DrawLine(const Point &rStartPt, const Point &rEndPt)
Definition: pdfwriter.cxx:110
void IntersectClipRegion(const tools::Rectangle &rRect)
Definition: pdfwriter.cxx:273
void DrawPixel(const Point &rPt, const Color &rColor)
Definition: pdfwriter.cxx:175
void DrawBitmapEx(const Point &rDestPt, const Size &rDestSize, const BitmapEx &rBitmapEx)
Definition: pdfwriter.cxx:185
sal_Int32 BeginStructureElement(enum StructElement eType, std::u16string_view rAlias)
begin a new logical structure element
Definition: pdfwriter.cxx:392
sal_Int32 CreateScreen(const tools::Rectangle &rRect, sal_Int32 nPageNr)
Creates a screen annotation.
Definition: pdfwriter.cxx:338
void SetDocumentLocale(const css::lang::Locale &rDocLocale)
Definition: pdfwriter.cxx:56
PDFWriter(const PDFWriter &)=delete
void SetFillColor()
Definition: pdfwriter.hxx:744
OutputDevice * GetReferenceDevice()
Returns an OutputDevice for formatting This Output device is guaranteed to use the same font metrics ...
Definition: pdfwriter.cxx:41
void SetMapMode(const MapMode &rNewMapMode)
Definition: pdfwriter.cxx:238
void DrawRect(const tools::Rectangle &rRect)
Definition: pdfwriter.cxx:130
void SetAlternateText(const OUString &rText)
set the Alt attribute of a strutural element
Definition: pdfwriter.cxx:427
void SetStructureBoundingBox(const tools::Rectangle &rRect)
set the bounding box of a structural element
Definition: pdfwriter.cxx:417
void SetLayoutMode(vcl::text::ComplexTextLayoutFlags nMode)
Definition: pdfwriter.cxx:278
void EndTransparencyGroup(const tools::Rectangle &rBoundRect, sal_uInt16 nTransparencePercent)
End a transparency group with constant transparency factor.
Definition: pdfwriter.cxx:223
void DrawBitmap(const Point &rDestPt, const Size &rDestSize, const Bitmap &rBitmap, const Graphic &rGraphic)
Definition: pdfwriter.cxx:180
void SetTextLineColor()
Definition: pdfwriter.cxx:303
void DrawGradient(const tools::Rectangle &rRect, const Gradient &rGradient)
Definition: pdfwriter.cxx:195
void SetStructureAttributeNumerical(enum StructAttribute eAttr, sal_Int32 nValue)
set a structure attribute on the current structural element
Definition: pdfwriter.cxx:412
void SetPageTransition(PageTransition eType, sal_uInt32 nMilliSec, sal_Int32 nPageNr)
Sets the transitional effect to be applied when the current page gets shown.
Definition: pdfwriter.cxx:432
void MoveClipRegion(tools::Long nHorzMove, tools::Long nVertMove)
Definition: pdfwriter.cxx:263
void DrawPolyPolygon(const tools::PolyPolygon &rPolyPoly)
Definition: pdfwriter.cxx:170
sal_Int32 CreateDest(const tools::Rectangle &rRect, sal_Int32 nPageNr, DestAreaType eType)
Create a new destination to be used in a link.
Definition: pdfwriter.cxx:352
void SetLinkPropertyID(sal_Int32 nLinkId, sal_Int32 nPropertyID)
Resolve link in logical structure.
Definition: pdfwriter.cxx:377
sal_Int32 CreateLink(const tools::Rectangle &rRect, sal_Int32 nPageNr, OUString const &rAltText)
Create a new link on a page.
Definition: pdfwriter.cxx:333
void DrawArc(const tools::Rectangle &rRect, const Point &rStartPt, const Point &rEndPt)
Definition: pdfwriter.cxx:145
void EndStructureElement()
end the current logical structure element
Definition: pdfwriter.cxx:397
void DrawWallpaper(const tools::Rectangle &rRect, const Wallpaper &rWallpaper)
Definition: pdfwriter.cxx:208
void SetStructureAttribute(enum StructAttribute eAttr, enum StructAttributeValue eVal)
set a structure attribute on the current structural element
Definition: pdfwriter.cxx:407
sal_Int32 CreateOutlineItem(sal_Int32 nParent, std::u16string_view rText, sal_Int32 nDestID)
Create a new outline item.
Definition: pdfwriter.cxx:382
void SetScreenStream(sal_Int32 nScreenId, const OUString &rURL)
Sets the URL of an embedded screen annotation.
Definition: pdfwriter.cxx:372
ScopedVclPtr< PDFWriterImpl > xImplementation
Definition: pdfwriter.hxx:80
DocumentType eType
sal_Int16 nValue
FontLineStyle
FontStrikeout
sal_Int32 nIndex
void Create(SwFormatVertOrient &rItem, SvStream &rStrm, sal_uInt16 nVersionAbusedAsSize)
TextAlign
long Long
ComplexTextLayoutFlags
Definition: State.hxx:76
PushFlags
Definition: State.hxx:40
sal_uIntPtr sal_uLong
Play a metafile like an outputdevice would do.
Definition: pdfwriter.hxx:689