# Container Class

> A container class represents a group of elements on a page in a PDF file.

- Product: Adobe PDF Library 21
- Language: .NET Framework
- Version: APDFL21.0.0PlusP1e
- HTML page: https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Container
- Version index: https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/llms.txt

```csharp
class Container : Element
```

**Namespace:** `Datalogics::PDFL`

**Inherits from:** [`Element`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Element.md)

## Description

A container class represents a group of elements on a page in a PDF file.

In the PDF file, every container has a set of Marked Content tags, starting with Begin Marked Content (BMC or BDC) and ending with End Marked Content (EMC), so each container has a BMC/EMC or BDC/EMC pair of tags. These tags can be used to define the beginning and end of metadata around objects, providing information about the text and shapes within a PDF file. Containers can be nested within other containers.

**Referenced by:** [`Container`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Container.md), [`StructElement`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/StructElement.md)

**Uses types:** [`Clip`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Clip.md), [`ColorProfile`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/enum/ColorProfile.md), [`Container`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Container.md), [`Content`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Content.md), [`Document`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Document.md), [`ElementCloneFlags`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/enum/ElementCloneFlags.md), [`Matrix`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Matrix.md), [`OptionalContentContext`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/OptionalContentContext.md), [`OptionalContentMembershipDict`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/OptionalContentMembershipDict.md), [`PDFDict`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/PDFDict.md), [`Rect`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Rect.md), [`RenderIntent`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/enum/RenderIntent.md)

## Constructors

### Container

```csharp
Datalogics.PDFL.Container.Container()
```

*constructor*

Create a new Container.

The new Container has no tag and is not associated with a dictionary.

### Container

```csharp
Datalogics.PDFL.Container.Container(string mcTag)
```

*constructor*

**Parameters**

- `mcTag` (`string`): The tag name for the Container.

Create a new Container with a given Marked Content Tag.

The new Container has a Marked Content tag but is not associated with a dictionary.

### Container

```csharp
Datalogics.PDFL.Container.Container(string mcTag, PDFDict propertyList, bool isInline)
```

*constructor*

**Parameters**

- `mcTag` (`string`): The tag name for the Container.
- `propertyList` ([`PDFDict`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/PDFDict.md)): The dictionary representing the Property List to associate with the Container.
- `isInline` (`bool`): If true, it's part of content stream. If false, its emitted outside of the content stream and referenced by name.

Create a new Container with a given Marked Content Tag and Property list.

The new Container has a Marked Content tag and is associated with a dictionary.

## Properties

### BoundingBox

```csharp
Rect Datalogics.PDFL.Element.BoundingBox { get; }
```

The bounding box for this element.

The bounding box is a rectangle that is guaranteed to encompass the element, but it is not guaranteed to be the smallest box that could contain the element. For example, if the element is a Path that contains an arc, the bounding box encompasses the bezier control points, and not just the curve itself.

### Clip

```csharp
Clip Datalogics.PDFL.Element.Clip { get; set; }
```

Gets the current Clip for an Element.

### Content

```csharp
Content Datalogics.PDFL.Container.Content { get; set; }
```

Obtain the content of a container.

### MarkedContentTag

```csharp
string Datalogics.PDFL.Container.MarkedContentTag { get; set; }
```

The container's Marked Content Tag.

### Matrix

```csharp
Matrix Datalogics.PDFL.Element.Matrix { get; set; }
```

The transformation matrix for the element.

### OptionalContentMembershipDict

```csharp
OptionalContentMembershipDict Datalogics.PDFL.Container.OptionalContentMembershipDict { get; set; }
```

The OptionalContentMembershipDict property for this Container.

Setting this property will attach the Container to an OptionalContentMembershipDict; it will then be associated with the OptionalContentGroups and be subject to the VisibilityPolicy and VisibilityExpression of that MembershipDict.

By setting this property to null, the Container is detached from any OptionalContentMembershipDict.

### PDFDict

```csharp
PDFDict Datalogics.PDFL.Container.PDFDict { get; }
```

Retrieve the PDFObject representation of this object

## Methods

### Clone

```csharp
new Container Datalogics.PDFL.Container.Clone()
```

**Returns:** `new Container`

The copied container.

Makes a copy of the container.

Make a copy of an container to obtain a new container that has a distinct set of attributes.

### Clone

```csharp
new Container Datalogics.PDFL.Container.Clone(ElementCloneFlags cloneFlags)
```

**Parameters**

- `cloneFlags` ([`ElementCloneFlags`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/enum/ElementCloneFlags.md)): Flags that modify the cloning operation.

**Returns:** `new Container`

The copied container.

Makes a copy of the container.

Make a copy of an container to obtain a new container that has a distinct set of attributes.

### ColorConvert

```csharp
Container Datalogics.PDFL.Container.ColorConvert(Document document, ColorProfile prof, RenderIntent intent, bool embed)
```

**Parameters**

- `document` ([`Document`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Document.md)): The document the element belongs to.
- `prof` ([`ColorProfile`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/enum/ColorProfile.md)): The ICC ColorProfile to be applied.
- `intent` ([`RenderIntent`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/enum/RenderIntent.md)): The ICC Rendering Intent for the ColorProfile
- `embed` (`bool`): If true, embed the color space and make the objects calibrated. If it is false and the target profile is CMYK, RGB, or Gray, the colors space of the resulting objects, after conversion, will be DeviceCMYK, DeviceRGB, or DeviceGray, respectively.

**Returns:** [`Container`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Container.md)

A new Container with the applied ICC ColorProfile.

Applies the specified ICC ColorProfile to the objects in the Container

### Dispose

```csharp
void Datalogics.PDFL.Element.Dispose()
```

**Returns:** `void`

### IsCurrentlyVisible

```csharp
bool Datalogics.PDFL.Container.IsCurrentlyVisible(OptionalContentContext occ)
```

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/OptionalContentContext.md)): The optional content context to check visibility against.

**Returns:** `bool`

true if the container is currently visible.

Tests whether a container is visible in a given optional content context, considering the current ON-OFF states of the optional-content groups in the optional-content dictionary (OCMD) and the dictionary's visibility policy.

If the container occurs more than once within the content, this method only checks the visibility of the first occurrence of the container.

This method determines visibility without considering the visbility of the Content object that the container belongs to. To determine the visibility of a container while taking the Content's visibility into consideration, use the alternate version of this method.

### IsCurrentlyVisible

```csharp
bool Datalogics.PDFL.Container.IsCurrentlyVisible(OptionalContentContext occ, Content content)
```

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/OptionalContentContext.md)): The optional content context to check visibility against.
- `content` ([`Content`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Content.md)): The Content containing the container, used to determine container visibility within the content hierarchy.

**Returns:** `bool`

true if the container is currently visible.

Tests whether a container is visible in a given optional content context and content.

If the container occurs more than once within the content, this method only checks the visibility of the first occurrence of the container.

### MakeVisible

```csharp
bool Datalogics.PDFL.Container.MakeVisible(OptionalContentContext occ, Content content)
```

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/OptionalContentContext.md)): The optional content context in which the container is made visible.
- `content` ([`Content`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Content.md)): The content containing the container.

**Returns:** `bool`

true if the container is successfully made visible in the given context and content, false otherwise

Makes a container visible in a given optional content context and content by manipulating the ON-OFF states of the optional content groups.

### Rotate

```csharp
void Datalogics.PDFL.Element.Rotate(double theta)
```

**Parameters**

- `theta` (`double`): The rotation angle in degrees.

**Returns:** `void`

Rotate an element by theta degrees counterclockwise using the matrix [ cos T sin T -sin T cos T 0 0 ].

### Scale

```csharp
void Datalogics.PDFL.Element.Scale(double sx, double sy)
```

**Parameters**

- `sx` (`double`): The horizontal scale factor.
- `sy` (`double`): The vertical scale factor.

**Returns:** `void`

Scale an element by (sx,sy) units using the matrix [ sx 0 0 sy 0 0 ].

### Translate

```csharp
void Datalogics.PDFL.Element.Translate(double tx, double ty)
```

**Parameters**

- `tx` (`double`): The horizontal translation distance in user space units.
- `ty` (`double`): The vertical translation distance in user space units.

**Returns:** `void`

Translate an element by (tx,ty) units using the matrix [ 1 0 0 1 tx ty ].
