Microsoft Purview Information Protection content markings in PDF

Last updated on Aug 11, 2026

Learn how Adobe Acrobat represents Microsoft Purview Information Protection (MPIP) content markings in PDF using Form XObjects and the ADBE_MIP dictionary.

Overview

If you create or process PDFs that contain Microsoft Purview Information Protection (MPIP) content markings, this article explains how Adobe Acrobat stores those markings. MPIP is a Microsoft service. It can add markings such as watermarks, headers, and footers to a document. Acrobat saves each marking, so it stays compatible with other PDF tools. It also saves each marking so Acrobat can still recognize it. When the markings are stored correctly, Acrobat maintains the document's sensitivity label, so the label can be updated or removed later without breaking.

How the markings are stored

  • Form XObject:  Each marking is saved as a Form XObject. This is a standard, self-contained piece of PDF content that a page can reuse. It holds what the marking looks like on the page.
  • ADBE_MIP dictionary:  Each marking also includes an ADBE_MIP dictionary. This small data set holds details specific to the marking. Its presence tells Acrobat the object is an MPIP marking. Acrobat can then recognize and manage the marking during later labeling.

Dictionary schema

A given /ADBE_MIP dictionary contains six keys. Five are common to all three marking types; the sixth is /MIP_Layout for watermarks or /MIP_Allignment for headers and footers.

Key Cos type What it holds Present for MIP SDK API source
MIP_Type Name Discriminator identifying the marking: /Watermark, /Header, or /Footer. All Not returned by the SDK. Acrobat derives it from which action class was returned: mip::AddWatermarkAction / mip::AddContentHeaderAction / mip::AddContentFooterAction (mip::Action::GetType()).
MIP_Text Name The marking's display text. All GetText() on the action.
MIP_Font Name Font family name (e.g. Calibri). All GetFontName(). SDK-documented default "Calibri".
MIP_FontSize Real Font size in points. All GetFontSize() (returns an integer; stored as a real).
MIP_Color Array (RGB) Font colour of the marking text. All GetFontColor(). SDK returns a hex string such as "#000000". Acrobat converts the hexadecimal color value into a DeviceRGB color array (see note below the table).
MIP_Layout Integer Watermark orientation, in degrees: 0 = Horizontal, 45 = Diagonal. Watermark only GetLayout() → mip::WatermarkLayout (HORIZONTAL=0, DIAGONAL=1); mapped 0→0°, 1→45°.
MIP_Allignment Integer Horizontal alignment of the header/footer text. Header & Footer only GetAlignment() → mip::ContentMarkAlignment (LEFT=0, RIGHT=1, CENTER=2).

Acrobat converts the hex color value into a DeviceRGB array. It reads the red, green, and blue components from the six hex digits. It converts each component to a decimal value from 0 to 255. It then divides each value by 255 to normalize it to the range 0.0 to 1.0. Acrobat stores the three results in the /MIP_Color array.

Example, for a blue marking color:

GetFontColor() Conversion

GetFontColor() = "#4472C4"

 

R = 0x44 = 68 -> 68 / 255 = 0.26666

G = 0x72 = 114 -> 114 / 255 = 0.44708

B = 0xC4 = 196 -> 196 / 255 = 0.76869

 

stored as

/MIP_Color [0.26666 0.44708 0.76869]    (PDF real numbers, up to 5 decimal places)

Examples

Watermark Header Footer
/ADBE_MIP <<
/MIP_Type /Watermark
/MIP_Text /CONFIDENTIAL
/MIP_Font /Calibri
/MIP_FontSize 24.0
/MIP_Color [0.0 0.0 0.0]
/MIP_Layout 45 % 45 = Diagonal, 0 = Horizontal
>>
/ADBE_MIP <<
/MIP_Type /Header
/MIP_Text /Contoso\040Confidential
/MIP_Font /Calibri
/MIP_FontSize 8.0
/MIP_Color [0.0 0.0 0.0]
/MIP_Allignment 2 % 0 = Left, 1 = Right, 2 = Center
>>
Identical in shape to the header example,
but with /MIP_Type set to /Footer.

Generating and printing to PDF

Some workflows convert an MPIP-labeled document to PDF. Examples include Save as PDF and Print to PDF. When one of these keeps a marking in the output, it must also create the marking's ADBE_MIP dictionary.

If the visible marking is kept without its ADBE_MIP dictionary, Acrobat can't recognize it. Acrobat treats the marking as a normal object rather than a marking. The marking might then not be preserved, updated, replaced, or removed correctly when the document's MPIP label changes.

After generation, the marking appears in the file's object tree as a Form XObject carrying the ADBE_MIP dictionary.