26#include <unordered_map>
27#include <unordered_set>
37#include <com/sun/star/lang/Locale.hpp>
38#include <com/sun/star/util/XURLTransformer.hpp>
39#include <com/sun/star/uno/Sequence.h>
40#include <osl/file.hxx>
41#include <rtl/cipher.h>
42#include <rtl/strbuf.hxx>
43#include <rtl/ustring.hxx>
69namespace vcl::font {
class PhysicalFontFace; }
112class PDFObjectElement;
144 bool emit( sal_Int32 nParentPage );
170 void appendMappedLength( sal_Int32 nLength, OStringBuffer& rBuffer,
bool bVertical =
true, sal_Int32* pOutLength =
nullptr )
const;
172 void appendMappedLength(
double fLength, OStringBuffer& rBuffer,
bool bVertical =
true, sal_Int32 nPrecision = 5 )
const;
178 void appendWaveLine( sal_Int32 nLength, sal_Int32 nYOffset, sal_Int32 nDelta, OStringBuffer& rBuffer )
const;
234 std::unique_ptr<SvMemoryStream>
486 PDFScreen(OUString
const& rAltText, OUString
const& rMimeType)
586 ::std::optional<PDFWriter::StructElement>
m_oType;
594 std::map<PDFWriter::StructAttribute, PDFStructureAttribute >
630 sal_Int32 nNativeWidth,
748 css::uno::Reference< css::util::XURLTransformer >
m_xTrans;
773 std::unordered_map< OString, OString >
793 std::map<const vcl::font::PhysicalFontFace*, FontSubset>
m_aSubsets;
837 sal_uInt64 nPosition{};
838 if (osl::File::E_None !=
m_aFile.getPos(nPosition))
884 void appendLiteralStringEncrypt( std::u16string_view rInString,
const sal_Int32 nInObjectNumber, OStringBuffer& rOutBuffer, rtl_TextEncoding nEnc = RTL_TEXTENCODING_ASCII_US );
893 void drawVerticalGlyphs(
const std::vector<PDFGlyph>& rGlyphs, OStringBuffer& rLine,
const Point& rAlignOffset,
const Matrix3& rRotScale,
double fAngle,
double fXScale, sal_Int32 nFontHeight );
894 void drawHorizontalGlyphs(
const std::vector<PDFGlyph>& rGlyphs, OStringBuffer& rLine,
const Point& rAlignOffset,
bool bFirst,
double fAngle,
double fXScale, sal_Int32 nFontHeight, sal_Int32 nPixelFontHeight );
942 const sal_Int32* pEncToUnicodeIndex, uint32_t nGlyphs );
972 bool appendDest( sal_Int32 nDestID, OStringBuffer& rBuffer );
1032 sal_Int32 nItemLevel,
1033 sal_Int32 nCurrentItemId );
1102 sal_Int32 i_nAccessPermissions
1106 std::vector< sal_uInt8 >& io_rOValue,
1107 sal_Int32 i_nKeyLength
1112 sal_Int32 i_nKeyLength,
1113 sal_Int32 i_nAccessPermissions
1118 const OString& i_rCString1,
1119 OString& o_rCString2
1122 sal_Int32& o_rKeyLength, sal_Int32& o_rRC4KeyLength );
1124 bool prepareEncryption(
const css::uno::Reference< css::beans::XMaterialHolder >& );
1145 static css::uno::Reference< css::beans::XMaterialHolder >
1147 const OUString& i_rUserPassword );
1261 void drawText(
const Point& rPos,
const OUString& rText, sal_Int32 nIndex, sal_Int32 nLen,
bool bTextLines =
true );
1264 sal_Int32 nIndex, sal_Int32 nLen );
1316 void setLinkDest( sal_Int32 nLinkId, sal_Int32 nDestId );
1317 void setLinkURL( sal_Int32 nLinkId,
const OUString& rURL );
1322 void setScreenURL(sal_Int32 nScreenId,
const OUString& rURL);
1326 sal_Int32
createOutlineItem( sal_Int32 nParent, std::u16string_view rText, sal_Int32 nDestID );
1353 void addDocumentAttachedFile(OUString
const& rFileName, OUString
const& rMimeType, OUString
const& rDescription, std::unique_ptr<PDFOutputStream> rStream);
1356 sal_Int32
addEmbeddedFile(std::unique_ptr<PDFOutputStream> rStream, OUString
const& rMimeType);
1360 void MARK(
const char* pString );
sal_uInt64 BitmapChecksum
Container for the binary data, whose responsibility is to manage the make it as simple as possible to...
bool IsTransparent() const
A thin wrapper around rtl::Reference to implement the acquire and dispose semantics we want for refer...
Allows creating, updating and writing PDF objects in a container.
static void computeDocumentIdentifier(std::vector< sal_uInt8 > &o_rIdentifier, const vcl::PDFWriter::PDFDocInfo &i_rDocInfo, const OString &i_rCString1, OString &o_rCString2)
std::list< GradientEmit > m_aGradients
void setDocumentLocale(const css::lang::Locale &rLoc)
sal_Int64 m_nSignatureContentOffset
sal_Int32 emitResources()
void drawWallpaper(const tools::Rectangle &rRect, const Wallpaper &rWall)
void setTextAlign(TextAlign eAlign)
std::map< sal_Int32, sal_Int32 > m_aLinkPropertyMap
bool emitScreenAnnotations()
void moveClipRegion(sal_Int32 nX, sal_Int32 nY)
void setLayoutMode(vcl::text::ComplexTextLayoutFlags nLayoutMode)
sal_Int64 m_nSignatureLastByteRangeNoOffset
bool updateObject(sal_Int32 n) override
See vcl::PDFObjectContainer::updateObject().
void beginStructureElement(sal_Int32 id)
void drawEllipse(const tools::Rectangle &rRect)
static bool computeODictionaryValue(const sal_uInt8 *i_pPaddedOwnerPassword, const sal_uInt8 *i_pPaddedUserPassword, std::vector< sal_uInt8 > &io_rOValue, sal_Int32 i_nKeyLength)
void addInternalStructureContainer(PDFStructureElement &rEle)
void putG4Bits(sal_uInt32 i_nLength, sal_uInt32 i_nCode, BitStreamState &io_rState)
void enableStringEncryption(sal_Int32 nObject)
void setFont(const Font &rFont)
sal_Int32 findRadioGroupWidget(const PDFWriter::RadioButtonWidget &rRadio)
void setAlternateText(const OUString &rText)
sal_Int32 emitBuildinFont(const pdf::BuildinFontFace *, sal_Int32 nObject)
~PDFWriterImpl() override
sal_Int32 m_nResourceDict
sal_Int32 emitStructParentTree(sal_Int32 nTreeObject)
sal_Int32 emitFontDescriptor(const vcl::font::PhysicalFontFace *, FontSubsetInfo const &, sal_Int32 nSubsetID, sal_Int32 nStream)
void beginStructureElementMCSeq()
static void convertLineInfoToExtLineInfo(const LineInfo &rIn, PDFWriter::ExtLineInfo &rOut)
std::set< PDFWriter::ErrorCode > m_aErrors
void ImplRefreshFontData(bool bNewFontLists) override
sal_Int32 addEmbeddedFile(BinaryDataContainer const &rDataContainer)
void createNote(const tools::Rectangle &rRect, const PDFNote &rNote, sal_Int32 nPageNr)
std::map< const vcl::font::PhysicalFontFace *, FontSubset > m_aSubsets
void setActualText(const OUString &rText)
static css::uno::Reference< css::beans::XMaterialHolder > initEncryption(const OUString &i_rOwnerPassword, const OUString &i_rUserPassword)
std::map< const vcl::font::PhysicalFontFace *, EmbedFont > m_aSystemFonts
static void emitPopupAnnotationLine(OStringBuffer &aLine, PDFPopupAnnotation const &rPopUp)
static void padPassword(std::u16string_view i_rPassword, sal_uInt8 *o_pPaddedPW)
void drawPolyLine(const tools::Polygon &rPoly)
sal_Int32 m_nRC4KeyLength
std::list< GraphicsState > m_aGraphicsStack
GraphicsState m_aCurrentPDFState
std::map< const vcl::font::PhysicalFontFace *, FontSubset > m_aType3Fonts
std::unordered_map< OString, OString > m_aRoleMap
void createWidgetFieldName(sal_Int32 i_nWidgetsIndex, const PDFWriter::AnyWidget &i_rInWidget)
sal_Int32 createControl(const PDFWriter::AnyWidget &rControl, sal_Int32 nPageNr=-1)
void writeTransparentObject(TransparencyEmit &rObject)
sal_Int32 m_nCurrentStructElement
void drawVerticalGlyphs(const std::vector< PDFGlyph > &rGlyphs, OStringBuffer &rLine, const Point &rAlignOffset, const Matrix3 &rRotScale, double fAngle, double fXScale, sal_Int32 nFontHeight)
const char * getStructureTag(PDFWriter::StructElement)
void drawPolyPolygon(const tools::PolyPolygon &rPolyPoly)
void endStructureElementMCSeq(EndMode=EndMode::Default)
void addRoleMap(OString aAlias, PDFWriter::StructElement eType)
sal_Int32 m_nCatalogObject
OString emitStructureAttributes(PDFStructureElement &rEle)
std::unordered_set< sal_Int32 > m_StructElemObjsWithID
std::vector< PDFLink > m_aLinks
std::vector< PDFEmbeddedFile > m_aEmbeddedFiles
Contains embedded files.
static sal_Int32 computeAccessPermissions(const vcl::PDFWriter::PDFEncryptionProperties &i_rProperties, sal_Int32 &o_rKeyLength, sal_Int32 &o_rRC4KeyLength)
sal_Int32 createLink(const tools::Rectangle &rRect, sal_Int32 nPageNr, OUString const &rAltText)
void appendLiteralStringEncrypt(std::u16string_view rInString, const sal_Int32 nInObjectNumber, OStringBuffer &rOutBuffer, rtl_TextEncoding nEnc=RTL_TEXTENCODING_ASCII_US)
void setTextLineColor(const Color &rColor)
std::map< sal_Int32, sal_Int32 > m_aRadioGroupWidgets
void initStructureElement(sal_Int32 id, PDFWriter::StructElement eType, std::u16string_view rAlias)
sal_Int32 ensureStructureElement()
std::list< StreamRedirect > m_aOutputStreams
void drawGradient(const tools::Rectangle &rRect, const Gradient &rGradient)
void drawTextLine(const Point &rPos, tools::Long nWidth, FontStrikeout eStrikeout, FontLineStyle eUnderline, FontLineStyle eOverline, bool bUnderlineAbove)
OString m_aCreationMetaDateString
void newPage(double nPageWidth, double nPageHeight, PDFWriter::Orientation eOrientation)
static bool computeEncryptionKey(EncHashTransporter *, vcl::PDFWriter::PDFEncryptionProperties &io_rProperties, sal_Int32 i_nAccessPermissions)
bool emitNoteAnnotations()
void drawStraightTextLine(OStringBuffer &aLine, tools::Long nWidth, FontLineStyle eTextLine, Color aColor, bool bIsAbove)
void setOutlineItemDest(sal_Int32 nItem, sal_Int32 nDestID)
bool writeGradientFunction(GradientEmit const &rObject)
void drawText(const Point &rPos, const OUString &rText, sal_Int32 nIndex, sal_Int32 nLen, bool bTextLines=true)
std::map< sal_Int32, sal_Int32 > emitSystemFont(const vcl::font::PhysicalFontFace *, EmbedFont const &)
void createDefaultRadioButtonAppearance(PDFWidget &, const PDFWriter::RadioButtonWidget &rWidget)
void drawStretchText(const Point &rPos, sal_Int32 nWidth, const OUString &rText, sal_Int32 nIndex, sal_Int32 nLen)
void DrawHatchLine_DrawLine(const Point &rStartPoint, const Point &rEndPoint) override
void writeG4Stream(BitmapReadAccess const *i_pBitmap)
bool emitLinkAnnotations()
PDFWriter::PDFWriterContext m_aContext
void createDefaultPushButtonAppearance(PDFWidget &, const PDFWriter::PushButtonWidget &rWidget)
void drawStrikeoutLine(OStringBuffer &aLine, tools::Long nWidth, FontStrikeout eStrikeout, Color aColor)
void drawHorizontalGlyphs(const std::vector< PDFGlyph > &rGlyphs, OStringBuffer &rLine, const Point &rAlignOffset, bool bFirst, double fAngle, double fXScale, sal_Int32 nFontHeight, sal_Int32 nPixelFontHeight)
void setOutlineItemText(sal_Int32 nItem, std::u16string_view rText)
std::list< BitmapEmit > m_aBitmaps
void setTextFillColor(const Color &rColor)
PDFWriterImpl(const PDFWriter::PDFWriterContext &rContext, const css::uno::Reference< css::beans::XMaterialHolder > &, PDFWriter &)
std::vector< PDFNamedDest > m_aNamedDests
bool checkEmitStructure()
checks whether a non struct element lies in the ancestor hierarchy of the current structure element
void setMapMode(const MapMode &rMapMode)
sal_Int32 emitDocumentMetadata()
void setOutlineItemParent(sal_Int32 nItem, sal_Int32 nNewParent)
void checkAndEnableStreamEncryption(sal_Int32 nObject) override
bool emitEmbeddedFiles()
Writes embedded files.
sal_Int32 updateOutlineItemCount(std::vector< sal_Int32 > &rCounts, sal_Int32 nItemLevel, sal_Int32 nCurrentItemId)
void setLinkURL(sal_Int32 nLinkId, const OUString &rURL)
Size getCurPageSize() const
void endTransparencyGroup(const tools::Rectangle &rBoundingBox, sal_uInt32 nTransparentPercent)
std::unique_ptr< SvMemoryStream > m_pMemStream
void disableStreamEncryption() override
::comphelper::Hash m_DocDigest
void setScreenStream(sal_Int32 nScreenId, const OUString &rURL)
void drawArc(const tools::Rectangle &rRect, const Point &rStart, const Point &rStop, bool bWithPie, bool bWidthChord)
void drawStrikeoutChar(const Point &rPos, tools::Long nWidth, FontStrikeout eStrikeout)
void ImplClearFontData(bool bNewFontLists) override
std::vector< PDFPage > m_aPages
void appendBuildinFontsToDict(OStringBuffer &rDict) const
std::vector< sal_uInt8 > m_vEncryptionBuffer
void createDefaultEditAppearance(PDFWidget &, const PDFWriter::EditWidget &rWidget)
StyleSettings m_aWidgetStyleSettings
bool m_bEncryptThisStream
void insertError(PDFWriter::ErrorCode eErr)
const MapMode & getMapMode()
sal_Int32 getFontDictObject()
void writeReferenceXObject(const ReferenceXObjectEmit &rEmit)
Writes the form XObject proxy for the image.
void setStructureBoundingBox(const tools::Rectangle &rRect)
void createDefaultListBoxAppearance(PDFWidget &, const PDFWriter::ListBoxWidget &rWidget)
std::unordered_map< OString, sal_Int32 > m_aFieldNameMap
std::vector< TransparencyEmit > m_aTransparentObjects
bool emitWidgetAnnotations()
void drawEmphasisMark(tools::Long nX, tools::Long nY, const tools::PolyPolygon &rPolyPoly, bool bPolyLine, const tools::Rectangle &rRect1, const tools::Rectangle &rRect2)
void createEmbeddedFile(const Graphic &rGraphic, ReferenceXObjectEmit &rEmit, sal_Int32 nBitmapObject)
Stores the original PDF data from rGraphic as an embedded file.
static const sal_uInt32 ncMaxPDFArraySize
bool writeBufferBytes(const void *pBuffer, sal_uInt64 nBytes) override
See vcl::PDFObjectContainer::writeBuffer().
void setDigitLanguage(LanguageType eLang)
sal_Int32 createScreen(const tools::Rectangle &rRect, sal_Int32 nPageNr, OUString const &rAltText, OUString const &rMimeType)
bool setStructureAttribute(enum PDFWriter::StructAttribute eAttr, enum PDFWriter::StructAttributeValue eVal)
std::vector< OString > m_aStructParentTree
o3tl::lru_map< BitmapChecksum, std::shared_ptr< SvMemoryStream > > m_aPDFBmpCache
Cache some most recent bitmaps we've exported, in case we encounter them again..
void drawRelief(SalLayout &rLayout, const OUString &rText, bool bTextLines)
const BitmapEmit & createBitmapEmit(const BitmapEx &rBitmapEx, const Graphic &rGraphic, std::list< BitmapEmit > &rBitmaps, ResourceDict &rResourceDict, std::list< StreamRedirect > &rOutputStreams)
std::vector< PDFDocumentAttachedFile > m_aDocumentAttachedFiles
void appendStrokingColor(const Color &rColor, OStringBuffer &rBuffer)
void setLinkPropertyId(sal_Int32 nLinkId, sal_Int32 nPropertyId)
void playMetafile(const GDIMetaFile &, vcl::PDFExtOutDevData *, const vcl::PDFWriter::PlayMetafileContext &, VirtualDevice *pDummyDev=nullptr)
void beginTransparencyGroup()
static const char * getAttributeTag(PDFWriter::StructAttribute eAtr)
sal_Int32 getBestBuildinFont(const Font &rFont)
void drawJPGBitmap(SvStream &rDCTData, bool bIsTrueColor, const Size &rSizePixel, const tools::Rectangle &rTargetArea, const AlphaMask &rAlphaMask, const Graphic &rGraphic)
void setStructureAnnotIds(::std::vector< sal_Int32 > const &rAnnotIds)
void endStructureElement()
sal_Int32 createNamedDest(const OUString &sDestName, const tools::Rectangle &rRect, sal_Int32 nPageNr, PDFWriter::DestAreaType eType)
void drawHatch(const tools::PolyPolygon &rPolyPoly, const Hatch &rHatch)
void drawTransparent(const tools::PolyPolygon &rPolyPoly, sal_uInt32 nTransparentPercent)
std::stack< sal_Int32 > m_StructElementStack
sal_Int32 emitStructure(PDFStructureElement &rEle)
void push(PushFlags nFlags)
void setScreenURL(sal_Int32 nScreenId, const OUString &rURL)
std::vector< sal_uInt64 > m_aObjects
void AppendAnnotKid(PDFStructureElement &i_rEle, T &rAnnot)
Font drawFieldBorder(PDFWidget &, const PDFWriter::AnyWidget &, const StyleSettings &)
void implWriteGradient(const tools::PolyPolygon &rPolyPoly, const Gradient &rGradient, VirtualDevice *pDummyVDev, const vcl::PDFWriter::PlayMetafileContext &)
std::vector< TilingEmit > m_aTilings
std::map< sal_Int32, sal_Int32 > m_aBuildinFontToObjectMap
bool ImplNewFont() const override
sal_Int32 m_nAccessPermissions
void beginRedirect(SvStream *pStream, const tools::Rectangle &)
sal_Int32 emitOutputIntent()
void setOverlineColor(const Color &rColor)
sal_Int32 createGradient(const Gradient &rGradient, const Size &rSize)
sal_Int32 createObject() override
See vcl::PDFObjectContainer::createObject().
bool setCurrentStructureElement(sal_Int32 nElement)
void appendNonStrokingColor(const Color &rColor, OStringBuffer &rBuffer)
void createDefaultCheckBoxAppearance(PDFWidget &, const PDFWriter::CheckBoxWidget &rWidget)
void drawLine(const Point &rStart, const Point &rStop)
std::vector< PDFDest > m_aDests
void setFillColor(const Color &rColor)
void drawTextArray(const Point &rPos, const OUString &rText, KernArraySpan pDXArray, o3tl::span< const sal_Bool > pKashidaArray, sal_Int32 nIndex, sal_Int32 nLen)
void drawRectangle(const tools::Rectangle &rRect)
void drawLayout(SalLayout &rLayout, const OUString &rText, bool bTextLines)
sal_Int32 emitStructIDTree(sal_Int32 nTreeObject)
void setTextColor(const Color &rColor)
std::vector< PDFStructureElement > m_aStructure
void appendUnicodeTextStringEncrypt(const OUString &rInString, const sal_Int32 nInObjectNumber, OStringBuffer &rOutBuffer)
void ensureUniqueRadioOnValues()
std::vector< JPGEmit > m_aJPGs
sal_Int32 m_nSignatureObject
bool setStructureAttributeNumerical(enum PDFWriter::StructAttribute eAttr, sal_Int32 nValue)
void drawBitmap(const Point &rDestPt, const Size &rDestSize, const BitmapEmit &rBitmap, const Color &rFillColor)
sal_Int32 getSystemFont(const Font &i_rFont)
void addDocumentAttachedFile(OUString const &rFileName, OUString const &rMimeType, OUString const &rDescription, std::unique_ptr< PDFOutputStream > rStream)
std::vector< PDFScreen > m_aScreens
Contains all screen annotations.
sal_Int32 m_nFontDictObject
static const char * getAttributeValueTag(PDFWriter::StructAttributeValue eVal)
void drawShadow(SalLayout &rLayout, const OUString &rText, bool bTextLines)
void writeJPG(const JPGEmit &rEmit)
void putG4Span(tools::Long i_nSpan, bool i_bWhitePixel, BitStreamState &io_rState)
bool prepareEncryption(const css::uno::Reference< css::beans::XMaterialHolder > &)
bool appendDest(sal_Int32 nDestID, OStringBuffer &rBuffer)
std::vector< PDFNoteEntry > m_aNotes
void setPageTransition(PDFWriter::PageTransition eType, sal_uInt32 nMilliSec, sal_Int32 nPageNr)
void MARK(const char *pString)
void emitComment(const char *pComment)
sal_Int32 createToUnicodeCMap(sal_uInt8 const *pEncoding, const std::vector< sal_Ucs > &CodeUnits, const sal_Int32 *pCodeUnitsPerGlyph, const sal_Int32 *pEncToUnicodeIndex, uint32_t nGlyphs)
ExternalPDFStreams m_aExternalPDFStreams
sal_Int32 registerDestReference(sal_Int32 nDestId, const tools::Rectangle &rRect, sal_Int32 nPageNr, PDFWriter::DestAreaType eType)
sal_Int32 createOutlineItem(sal_Int32 nParent, std::u16string_view rText, sal_Int32 nDestID)
void emitTextAnnotationLine(OStringBuffer &aLine, PDFNoteEntry const &rNote)
sal_Int32 getResourceDictObj()
ResourceDict m_aGlobalResourceDict
sal_Int32 createDest(const tools::Rectangle &rRect, sal_Int32 nPageNr, PDFWriter::DestAreaType eType)
bool emitAppearances(PDFWidget &rWidget, OStringBuffer &rAnnotDict)
void intersectClipRegion(const tools::Rectangle &rRect)
vcl::Region ClipToDeviceBounds(vcl::Region aRegion) const override
Perform actual rect clip against outdev dimensions, to generate empty clips whenever one of the value...
OString m_aCreationDateString
void implWriteBitmapEx(const Point &rPoint, const Size &rSize, const BitmapEx &rBitmapEx, const Graphic &i_pGraphic, VirtualDevice const *pDummyVDev, const vcl::PDFWriter::PlayMetafileContext &)
void setLineColor(const Color &rColor)
void setLinkDest(sal_Int32 nLinkId, sal_Int32 nDestId)
static void pushResource(ResourceKind eKind, const OString &rResource, sal_Int32 nObject, ResourceDict &rResourceDict, std::list< StreamRedirect > &rOutputStreams)
void updateGraphicsState(Mode mode=Mode::DEFAULT)
css::uno::Reference< css::util::XURLTransformer > m_xTrans
void registerGlyph(const sal_GlyphId, const vcl::font::PhysicalFontFace *, const LogicalFontInstance *pFont, const std::vector< sal_Ucs > &, sal_Int32, sal_uInt8 &, sal_Int32 &)
void drawWaveTextLine(OStringBuffer &aLine, tools::Long nWidth, FontLineStyle eTextLine, Color aColor, bool bIsAbove)
std::vector< PDFWidget > m_aWidgets
static bool compressStream(SvMemoryStream *)
sal_uInt64 getCurrentFilePosition()
void setClipRegion(const basegfx::B2DPolyPolygon &rRegion)
sal_Int32 emitNamedDestinations()
bool writeBitmapObject(const BitmapEmit &rObject, bool bMask=false)
static bool computeUDictionaryValue(EncHashTransporter *i_pTransporter, vcl::PDFWriter::PDFEncryptionProperties &io_rProperties, sal_Int32 i_nKeyLength, sal_Int32 i_nAccessPermissions)
static const sal_uInt8 s_nPadString[ENCRYPTED_PWD_SIZE]
bool emitType3Font(const vcl::font::PhysicalFontFace *, const FontSubset &, std::map< sal_Int32, sal_Int32 > &)
::std::map< sal_Int32, sal_Int32 > m_aDestinationIdTranslation
contains destinations accessible via a public Id, instead of being linked to by an ordinary link
Font replaceFont(const Font &rControlFont, const Font &rAppSetFont)
void drawPolygon(const tools::Polygon &rPoly)
const std::set< PDFWriter::ErrorCode > & getErrors() const
std::vector< PDFOutlineEntry > m_aOutline
std::unique_ptr< ZCodec > m_pCodec
void registerSimpleGlyph(const sal_GlyphId, const vcl::font::PhysicalFontFace *, const std::vector< sal_Ucs > &, sal_Int32, sal_uInt8 &, sal_Int32 &)
void drawPixel(const Point &rPt, const Color &rColor)
abstract base class for physical font faces
const std::vector< ColorLayer > & getColorLayers() const
font::RawFontData m_aColorBitmap
void setOutline(basegfx::B2DPolyPolygon aOutline)
void addCode(sal_Ucs i_cCode)
const basegfx::B2DPolyPolygon & getOutline() const
const font::RawFontData & getColorBitmap(tools::Rectangle &rRect) const
void setColorBitmap(font::RawFontData aData, tools::Rectangle aRect)
std::vector< sal_Ucs > m_CodeUnits
const std::vector< sal_Ucs > & codes() const
void addColorLayer(ColorLayer aLayer)
void setGlyphWidth(sal_Int32 nWidth)
basegfx::B2DPolyPolygon m_aOutline
void setGlyphId(sal_uInt8 i_nId)
sal_Ucs getCode(sal_Int32 i_nIndex) const
sal_Int32 countCodes() const
std::vector< ColorLayer > m_aColorLayers
sal_uInt8 m_nSubsetGlyphID
sal_Int32 getGlyphWidth() const
sal_uInt8 getGlyphId() const
constexpr ::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
constexpr OUStringLiteral aData
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
A PhysicalFontFaceCollection is created by a PhysicalFontCollection and becomes invalid when original...
constexpr sal_Int32 g_nInheritedPageWidth
constexpr sal_Int32 g_nInheritedPageHeight
constexpr sal_Int32 MAXIMUM_RC4_KEY_LENGTH
constexpr sal_Int32 MD5_DIGEST_SIZE
constexpr sal_Int32 ENCRYPTED_PWD_SIZE
constexpr sal_Int32 SECUR_128BIT_KEY
css::lang::Locale DocumentLocale
Play a metafile like an outputdevice would do.
ReferenceXObjectEmit m_aReferenceXObject
sal_uInt8 m_nSubsetGlyphID
sal_Int32 m_nNormalFontID
LogicalFontInstance * m_pFontInstance
std::map< sal_GlyphId, GlyphEmit > m_aMapping
std::vector< FontEmit > m_aSubsets
std::map< sal_GlyphId, Glyph > m_aMapping
sal_uInt8 m_nSubsetGlyphID
vcl::text::ComplexTextLayoutFlags m_nLayoutMode
basegfx::B2DPolyPolygon m_aClipRegion
GraphicsStateUpdateFlags m_nUpdateFlags
LanguageType m_aDigitLanguage
std::unique_ptr< SvMemoryStream > m_pStream
ReferenceXObjectEmit m_aReferenceXObject
PDFWriter::DestAreaType m_eType
sal_Int32 mnEmbeddedFileObjectId
BinaryDataContainer m_aDataContainer
Contents of the file.
std::unique_ptr< PDFOutputStream > m_pStream
sal_Int32 m_nObject
ID of the file.
basegfx::B2DPoint const m_aPos
sal_uInt8 const m_nMappedGlyphId
sal_Int32 const m_nMappedFontId
const LogicalFontInstance * m_pFont
sal_Int32 const m_nNativeWidth
const GlyphItem * m_pGlyph
PDFGlyph(const basegfx::B2DPoint &rPos, const GlyphItem *pGlyph, const LogicalFontInstance *pFont, sal_Int32 nNativeWidth, sal_Int32 nFontId, sal_uInt8 nMappedGlyphId, int nCharPos)
sal_Int32 m_nStructParent
PDFLink(OUString const &rAltText)
PDFWriter::DestAreaType m_eType
PDFPopupAnnotation m_aPopUpAnnotation
sal_Int32 m_nParentObject
std::vector< sal_Int32 > m_aChildren
PDFPage(PDFWriterImpl *pWriter, double nPageWidth, double nPageHeight, PDFWriter::Orientation eOrientation)
void appendWaveLine(sal_Int32 nLength, sal_Int32 nYOffset, sal_Int32 nDelta, OStringBuffer &rBuffer) const
sal_uInt64 m_nBeginStreamPos
void appendPoint(const Point &rPoint, OStringBuffer &rBuffer) const
void appendPixelPoint(const basegfx::B2DPoint &rPoint, OStringBuffer &rBuffer) const
void convertRect(tools::Rectangle &rRect) const
VclPtr< PDFWriterImpl > m_pWriter
void appendMatrix3(Matrix3 const &rMatrix, OStringBuffer &rBuffer)
std::vector< sal_Int32 > m_aAnnotations
void appendRect(const tools::Rectangle &rRect, OStringBuffer &rBuffer) const
sal_Int32 m_nUserUnit
A positive number that gives the size of default user space units, in multiples of points.
bool appendLineInfo(const LineInfo &rInfo, OStringBuffer &rBuffer) const
std::vector< sal_Int32 > m_aMCIDParents
void appendMappedLength(sal_Int32 nLength, OStringBuffer &rBuffer, bool bVertical=true, sal_Int32 *pOutLength=nullptr) const
sal_Int32 m_nStreamLengthObject
bool emit(sal_Int32 nParentPage)
void appendPolygon(const tools::Polygon &rPoly, OStringBuffer &rBuffer, bool bClose=true) const
PDFWriter::Orientation m_eOrientation
std::vector< sal_Int32 > m_aStreamObjects
void appendPolyPolygon(const tools::PolyPolygon &rPolyPoly, OStringBuffer &rBuffer) const
PDFWriter::PageTransition m_eTransition
OUString m_aTempFileURL
Embedded video.
sal_Int32 m_nTempFileObject
ID of the EmbeddedFile object.
OUString m_aURL
Linked video.
sal_Int32 m_nStructParent
PDFScreen(OUString const &rAltText, OUString const &rMimeType)
OUString m_AltText
alternative text description
PDFStructureAttribute(sal_Int32 nVal)
PDFWriter::StructAttributeValue eValue
PDFStructureAttribute(PDFWriter::StructAttributeValue eVal)
PDFStructureElementKid(sal_Int32 nObj)
PDFStructureElementKid(sal_Int32 MCID, sal_Int32 nPage)
css::lang::Locale m_aLocale
::std::vector< sal_Int32 > m_AnnotIds
sal_Int32 m_nParentElement
std::map< PDFWriter::StructAttribute, PDFStructureAttribute > m_aAttributes
std::vector< sal_Int32 > m_aChildren
std::list< PDFStructureElementKid > m_aKids
::std::optional< PDFWriter::StructElement > m_oType
sal_Int32 m_nFirstPageObject
Contains information to emit a reference XObject.
sal_Int32 m_nExternalPDFPageIndex
sal_Int32 m_nEmbeddedObject
ID of the vector/embedded object, if m_nFormObject is used.
sal_Int32 m_nFormObject
ID of the Form XObject, if any.
sal_Int32 getObject() const
Returns the ID one should use when referring to this bitmap.
sal_Int32 m_nBitmapObject
ID of the bitmap object, if m_nFormObject is used.
bool hasExternalPDFData() const
sal_Int32 m_nExternalPDFDataIndex
PDF data from the graphic object, if not writing a reference XObject.
Size m_aPixelSize
Size of the bitmap replacement, in pixels.
tools::Rectangle m_aTargetRect
ResourceDict m_aResourceDict
tools::Rectangle m_aRectangle
std::unique_ptr< SvMemoryStream > m_pTilingStream
SvtGraphicFill::Transform m_aTransform
ResourceDict m_aResources
std::unique_ptr< SvMemoryStream > m_pContentStream
tools::Rectangle m_aBoundRect
sal_Int32 m_nExtGStateObject