# PDFL Library Layer

> PDFL Library Layer: 11 components, 187 items.

- Product: Adobe PDF Library 21
- Language: Adobe C++
- Version: APDFL21.0.0PlusP1f
- HTML page: https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer
- Version index: https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/llms.txt

## ASFileSys

### Functions (2)

#### ASFileSysGetDefaultTempPath

```cpp
ASPathName ASFileSysGetDefaultTempPath(ASFileSys fileSys)
```

Header: `PDFLProcs.h:159`

Gets the default temporary path that was set by ASFileSysSetDefaultTempPath().

**Parameters**

- `fileSys` ([`ASFileSys`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFileSys)): The file system in which the ASPathname is set.

**Returns:** [`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASPathName)

The ASPathName if the operation was successful, `NULL` otherwise.

**See also:** [`ASFileSysSetDefaultTempPath`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#ASFileSysSetDefaultTempPath)

#### ASFileSysSetDefaultTempPath

```cpp
ASBool ASFileSysSetDefaultTempPath(ASFileSys fileSys, ASPathName pathName)
```

Header: `PDFLProcs.h:148`

Sets the default temporary path for the specified file system to the specified path name. The method copies the passed `pathname` object on success; the client is responsible for releasing the object when it is no longer needed, using ASFileSysReleasePath(). Pass a pathname of `NULL` to reset the default temporary path to the file system default.

**Parameters**

- `fileSys` ([`ASFileSys`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFileSys)): (May be `NULL`) The file system in which to set the default temporary path.
- `pathName` ([`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASPathName)): The path name for the new default temporary path, or `NULL` to reset to the file system default.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)

`false` if the path provided is not writable, `true` otherwise.

**See also:** [`ASFileSysGetDefaultTempPath`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#ASFileSysGetDefaultTempPath)

## CosDoc

### Definitions (1)

#### cosSaveWriteXref

Header: `PDFLExpT.h:2511`

Value: `0x20`

Flags for CosDocSave saveFlags parameter. This is specific to the PDF Library.

## General

### Functions (23)

#### ASAtomGetCount

```cpp
ASInt32 ASAtomGetCount(void)
```

Header: `PDFLProcs.h:128`

Gets the number of ASAtom objects that have been allocated. The maximum number of ASAtom objects is `0xFFFFFFFF`. (This was a 16-bit value in Acrobat 4.x, and changed to a 32-bit value in Acrobat 5.0). ASAtom objects cannot be deleted or freed. Use this method to determine if it is necessary to re-initialize the library before creating more ASAtom objects.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)

The number of ASAtom objects currently allocated.

**See also:** [`ASAtomExistsForString`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASAtomExistsForString), [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLInit), [`PDFLTerm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLTerm)

#### ASPurgeMemory

```cpp
ASSize_t ASPurgeMemory(ASSize_t amount)
```

Header: `PDFLProcs.h:111`

Attempts to free memory from the PDF Library caches. The caches in the PDF Library can grow in complex and unexpected ways. A client can manage memory use with the PDFLInit memory callbacks, or by explicitly calling this function after certain functions, such as PDDocClose(). To manage memory use with the memory callbacks, a client can call ASPurgeMemory() during the allocation callback if it is low on memory, or to limit the amount of memory used by the library. Use this approach only with extreme caution and extensive testing. The run-time memory requirements are very document-specific.

**Parameters**

- `amount` ([`ASSize_t`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASSize_t)): The desired amount of memory to free.

**Returns:** [`ASSize_t`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASSize_t)

The approximate amount of memory freed.

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLInit), [`PDFLTerm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLTerm)

#### AVExtensionMgrRegisterNotification

```cpp
void AVExtensionMgrRegisterNotification(NSelector nsel, ASExtension owner, void *proc, void *clientData)
```

Header: `PDFLProcs.h:593`

Registers a user-supplied procedure to call when the event of the specified type occurs. This is exactly the same as the AVAppRegisterNotification() method. All of the PD level notifications are available with the Adobe PDF Library.

**Parameters**

- `nsel` ([`NSelector`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#NSelector)): Notification type. It must be one of the notification selectors. The notification selector is the name of the notification with the characters `NSEL` appended. For example, the selector for PDDocDidPrintPage() is `PDDocDidPrintPageNSEL`. Only the PD-level notifications are available with the Adobe PDF Library.
- `owner` ([`ASExtension`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASExtension)): Identifies the owner. For the Adobe PDF Library, if there is only one owner of the PDFEdit subsystem, `owner` should be zero. If there are multiple owners, each should specify a nonzero, non-negative owner. (A negative owner is reserved for the implementation).
- `proc` (`void *`): A user-supplied callback to be called when the notification occurs. Its declaration depends on the notification type.
- `clientData` (`void *`): A pointer to user-supplied data to pass to `proc` each time it is called.

**Returns:** `void`

**See also:** [`AVExtensionMgrUnregisterNotification`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#AVExtensionMgrUnregisterNotification), `AVAppRegisterNotification`

#### AVExtensionMgrUnregisterNotification

```cpp
void AVExtensionMgrUnregisterNotification(NSelector nsel, ASExtension owner, void *proc, void *clientData)
```

Header: `PDFLProcs.h:613`

Unregisters a user-supplied procedure to call when the specified event occurs. This is exactly the same as the AVAppUnregisterNotification() method.

**Parameters**

- `nsel` ([`NSelector`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#NSelector)): Notification type. It must be one of the notification selectors. The notification selector is the name of the notification with the characters `NSEL` appended. For example, the selector for PDDocDidOpen() is `PDDocDidOpenNSEL`.
- `owner` ([`ASExtension`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASExtension)): Identifies the owner with which the notification was registered.
- `proc` (`void *`): A user-supplied callback with which the notification was registered.
- `clientData` (`void *`): A pointer to user-supplied data that was used when the notification was registered.

**Returns:** `void`

**See also:** [`AVExtensionMgrRegisterNotification`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#AVExtensionMgrRegisterNotification), `AVAppUnregisterNotification`

#### CosSetExternalFilePermissionProc

```cpp
void CosSetExternalFilePermissionProc(ExternalFilePermissionProc proc)
```

Header: `PDFLProcs.h:820`

**Parameters**

- `proc` ([`ExternalFilePermissionProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#ExternalFilePermissionProc))

**Returns:** `void`

#### PDFLGetCoreHFT

```cpp
HFT PDFLGetCoreHFT(void)
```

Header: `PDFInit.h:1006`

Gets the Core HFT.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`HFT`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#HFT)

The Core HFT object.

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLInit)

#### PDFLGetFlags

```cpp
ASUns32 PDFLGetFlags(void)
```

Header: `PDFLProcs.h:719`

Gets the flags set when the PDF Library was initialized. Currently `kPDFLInitIgnoreDefaultDirectories` , `kPDFLInitIgnoreSystemFonts` and `kDontLoadPlugIns` flags are supported. When `kPDFLInitIgnoreDefaultDirectories` flag is set, the initialization process does not search through the default font directories (currently Adobe font directories installed by some Adobe applications), but only searches for fonts in those directories specified in `dirList`. A default directory could appear as follows: C:\Program Files\Common Files\Adobe\PDFL\[*version number*]\Fonts C:\Program Files\Common Files\Adobe\PDFL\[*version number*]\CMaps When `kPDFLInitIgnoreSystemFonts` flag is set, the initialization process does not search through default System fonts also. When the `kDontLoadPlugIns` flag is set, plug-ins are ignored during initialization process.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)

The initialization flags value.

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLInit)

#### PDFLGetInitCount

```cpp
ASUns32 PDFLGetInitCount(void)
```

Header: `PDFLProcs.h:697`

Gets the number of times the PDF Library has been initialized.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)

The number of times the PDF Library has been initialized.

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLInit)

#### PDFLGetVersion

```cpp
ASUns32 PDFLGetVersion(void)
```

Header: `PDFLProcs.h:668`

Gets the value of the Adobe PDF Library version (kPDFLVersion). The most significant 16 bits are the major version number; the least significant 16 bits are the minor version number. The major version number indicates whether any incompatible API changes have been made. The minor version number indicates that the API has changed, but in a compatible fashion. **Note:** Obsolete in PDF Library 6.0. Use HFTGetVersion() instead.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)

Adobe PDF Library version (kPDFLVersion).

**See also:** [`PDFLTerm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLTerm)

#### PDFLInit

```cpp
ASInt32 PDFLInit(PDFLData data)
```

Header: `PDFInit.h:974`

Initializes the Adobe PDF Library. This method must be called before any other Library calls can be made, printing or otherwise.

**Parameters**

- `data` (`PDFLData`): Initialization data for Adobe PDF Library.

**Returns:** [`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)

`0` if initialization was successful, or an error code if it was not. Use `ASGetErrorString()` to convert any error code to a string.

**See also:** [`PDFLGetFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLGetFlags), [`PDFLGetInitCount`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLGetInitCount), [`PDFLTerm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLTerm)

#### PDFLInitHFT

```cpp
ASInt32 PDFLInitHFT(PDFLData data)
```

Header: `PDFInit.h:981`

**Parameters**

- `data` (`PDFLData`)

**Returns:** [`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)

#### PDFLInitThreadLocalData

```cpp
void * PDFLInitThreadLocalData(ThreadLocalKey *key, ASUns32 size)
```

Header: `PDFInit.h:999`

**Parameters**

- `key` ([`ThreadLocalKey *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#ThreadLocalKey))
- `size` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32))

**Returns:** `void *`

#### PDFLReinitHFT

```cpp
ASInt32 PDFLReinitHFT(void)
```

Header: `PDFInit.h:993`

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)

#### PDFLTerm

```cpp
void PDFLTerm(void)
```

Header: `PDFLProcs.h:678`

Terminates the Adobe PDF Library. Call this method after you are completely done using the library. Call this once to terminate and release memory used by the library. After the library has been shut down, the process should terminate.

**Parameters**

- (unnamed) (`void`)

**Returns:** `void`

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLInit)

#### PDFLTermHFT

```cpp
void PDFLTermHFT(void)
```

Header: `PDFInit.h:983`

**Parameters**

- (unnamed) (`void`)

**Returns:** `void`

#### PDFLibraryRegisterNotification

```cpp
void PDFLibraryRegisterNotification(NSelector nsel, ASExtension owner, void *proc, void *clientData)
```

Header: `PDFLProcs.h:62`

Registers a user-supplied procedure to call when the specified event occurs. This is exactly the same as the AVAppRegisterNotification method. All of the PD level notifications are available with the Adobe PDF Library.

**Parameters**

- `nsel` ([`NSelector`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#NSelector)): Notification type. It must be one of the notification selectors. The notification selector is the name of the notification with the characters `NSEL` appended. For example, the selector for PDDocDidPrintPage() is `PDDocDidPrintPageNSEL`. Only the PD-level notifications are available with the Adobe PDF Library.
- `owner` ([`ASExtension`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASExtension)): Identifies the owner. For the Adobe PDF Library, if there is only one owner of the PDFEdit subsystem, `owner` should be zero. If there are multiple owners, each should specify a nonzero, non-negative owner. (A negative owner is reserved for the implementation).
- `proc` (`void *`): A user-supplied callback to be called when the notification occurs. Its declaration depends on the notification type.
- `clientData` (`void *`): A pointer to user-supplied data to pass to `proc` each time it is called.

**Returns:** `void`

**See also:** [`AVExtensionMgrRegisterNotification`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#AVExtensionMgrRegisterNotification), `AVAppRegisterNotification`, [`PDFLibraryUnregisterNotification`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLibraryUnregisterNotification)

#### PDFLibraryRegisterNotificationEx

```cpp
void PDFLibraryRegisterNotificationEx(NSelector nsel, ASExtension owner, void *proc, void *clientData, ASInt32 priority)
```

Header: `PDFLProcs.h:818`

Registers a user-supplied procedure to call when the specified event occurs. Many notifications appear in Will/Did pairs (for example, AVDocWillPerformAction() and AVDocDidPerformAction()). It is possible that an operation may fail after the Will notification and before the Did notification. When this occurs, the Did notification is still broadcast, but the `err` parameter in the Did notification is nonzero, and represents the error that occurred. When `err` is nonzero, the other parameters are not necessarily valid. Always check `err` in a Did notification before using the other parameters. When calling AVAppUnregisterNotification() to un-register for a notification, you must pass the `proc`, `clientData`, and `owner` that were used when the notification was registered using AVAppRegisterNotification(). You must use the same callback that was used to register; you cannot use a newly created callback. To accomplish this, call ASCallbackCreateNotification() once before registering, and use the value returned from this call both to register and un-register; do not call ASCallbackCreateNotification() a second time when un-registering. You will then need to destroy the pointer to the callback using the ASCallbackDestroy() method.

**Parameters**

- `nsel` ([`NSelector`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#NSelector)): The notification type. It must be one of the notification selectors . The notification selector is the name of the notification with the characters `NSEL` appended. For example, the selector for AVDocDidOpen() is `AVDocDidOpenNSEL`.
- `owner` ([`ASExtension`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASExtension)): The gExtensionID of the client registering the notification.
- `proc` (`void *`): A user-supplied callback to call when the notification occurs. Its declaration depends on the notification type. Remember to use ASCallbackCreateNotification() to convert `proc` to a callback before passing it to AVAppRegisterNotification().
- `clientData` (`void *`): A pointer to user-supplied data to pass to `proc` each time it is called.
- `priority` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The callbacks are enumerated in priority order, starting with the highest priority.

**Returns:** `void`

#### PDFLibraryRegisterRNG

```cpp
void PDFLibraryRegisterRNG(PDFLClientRNGProc clientRNG)
```

Header: `PDFLProcs.h:833`

Registers a user-supplied random number generator. By default, the PDF Library obtains high-quality random values from the operating system (`CryptGenRandom()` on Windows, and `/dev/random` on Mac OS and many UNIX operating systems). This method allows an alternate handler to be used. The random numbers returned should be of high quality, and it is the responsibility of the developer to ensure this. A `NULL` parameter will reset to default behavior.

**Parameters**

- `clientRNG` ([`PDFLClientRNGProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLClientRNGProc)): A client-supplied function that supplies the strong random values.

**Returns:** `void`

**See also:** [`PDFLClientRNGProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLClientRNGProc)

#### PDFLibraryUnregisterNotification

```cpp
void PDFLibraryUnregisterNotification(NSelector nsel, ASExtension owner, void *proc, void *clientData)
```

Header: `PDFLProcs.h:87`

Unregisters a user-supplied procedure to call when the specified event occurs. This is exactly the same as the AVAppUnregisterNotification() method.

**Parameters**

- `nsel` ([`NSelector`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#NSelector)): Notification type. It must be one of the notification selectors. The notification selector is the name of the notification with the characters `NSEL` appended. For example, the selector for PDDocDidOpen() is `PDDocDidOpenNSEL`.
- `owner` ([`ASExtension`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASExtension)): Identifies the owner. For the PDF Library, if there is only one owner of the PDFEdit subsystem, `owner` should be zero. If there are multiple owners, each should specify a nonzero, non-negative owner. (A negative owner is reserved for the implementation).
- `proc` (`void *`): A user-supplied callback to be called when the notification occurs. Its declaration depends on the notification type. You must use the same callback that you called AVExtensionMgrRegisterNotification() with.
- `clientData` (`void *`): A pointer to user-supplied data to pass to `proc` each time it is called.

**Returns:** `void`

**See also:** [`PDFLibraryRegisterNotification`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLibraryRegisterNotification), `AVAppUnregisterNotification`

#### PDOCRegisterFindOutAutoStatePrefProc

```cpp
void PDOCRegisterFindOutAutoStatePrefProc(PDOCFindOutAutoStatePrefProc proc)
```

Header: `PDFLProcs.h:853`

Registers a callback to the client user interface that can tell the core what the current AutoState preference is.

**Parameters**

- `proc` ([`PDOCFindOutAutoStatePrefProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDOCFindOutAutoStatePrefProc))

**Returns:** `void`

#### PDOCRegisterFindOutLanguageProc

```cpp
void PDOCRegisterFindOutLanguageProc(PDOCFindOutLanguageProc proc)
```

Header: `PDFLProcs.h:843`

Registers a callback to the client user interface that can tell the core what the current language is.

**Parameters**

- `proc` ([`PDOCFindOutLanguageProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDOCFindOutLanguageProc))

**Returns:** `void`

#### PDOCRegisterFindOutUserProc

```cpp
void PDOCRegisterFindOutUserProc(PDOCFindOutUserProc proc)
```

Header: `PDFLProcs.h:848`

Registers a callback to the client user interface that can tell the core what the current user is.

**Parameters**

- `proc` ([`PDOCFindOutUserProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDOCFindOutUserProc))

**Returns:** `void`

#### PDOCRegisterFindOutZoomProc

```cpp
void PDOCRegisterFindOutZoomProc(PDOCFindOutZoomProc proc)
```

Header: `PDFLProcs.h:838`

Registers a callback to the client user interface that can tell the core what the current zoom level is.

**Parameters**

- `proc` ([`PDOCFindOutZoomProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDOCFindOutZoomProc))

**Returns:** `void`

### Typedefs (17)

#### NSelector

```cpp
typedef Int32 NSelector
```

Header: `PDFLExpT.h:73`

#### PDDuplexEnum

```cpp
typedef ASEnum8 PDDuplexEnum
```

Header: `PDFLExpT.h:406`

**Used in:** [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec)

#### PDEncodingType

```cpp
typedef ASInt32 PDEncodingType
```

Header: `PDFLExpT.h:1571`

#### PDFarEastFont

```cpp
typedef ASEnum8 PDFarEastFont
```

Header: `PDFLExpT.h:163`

CJK font related option for PostScript printing.

**Used in:** [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec)

#### PDInclusion

```cpp
typedef ASEnum8 PDInclusion
```

Header: `PDFLExpT.h:120`

Specifies how to include a resource in a file.

**Used in:** [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec)

#### PlatformBitmapPtr

```cpp
typedef void* PlatformBitmapPtr
```

Header: `PDFLExpT.h:52`

#### PlatformWindowPtr

```cpp
typedef void* PlatformWindowPtr
```

Header: `PDFLExpT.h:51`

#### ThreadLocalKey

```cpp
typedef pthread_key_t ThreadLocalKey
```

Header: `PDFInit.h:421`

PDFLData structure for PDFLInit.

#### ExternalFilePermissionProc

```cpp
typedef ASBool(*) ExternalFilePermissionProc(CosDoc dP, ASFileSys *fileSys, ASPathName *path)(CosDoc dP, ASFileSys *fileSys, ASPathName *path)
```

Header: `PDFLExpT.h:87`

#### PDDoExtGStateProc

```cpp
typedef ASBool(*) PDDoExtGStateProc(ASAtom egsKey, CosObj egsValue, PDPrintClient printClient)(ASAtom egsKey, CosObj egsValue, PDPrintClient printClient)
```

Header: `PDFLExpT.h:1820`

A callback method that is called when an ExtGState object is encountered. This method is called for each key/value pair in the ExtGState object. If this method returns `true`, then the key/value will be emitted into the print job. If this method returns `false`, then nothing will be emitted for this key/value. If `emitHalftones` is `false`, then this method will not be called for the HT key.

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDocPrintPages)

#### PDFLClientRNGProc

```cpp
typedef ASSize_t(*) PDFLClientRNGProc(ASSize_t len, ASUns8P buffer)(ASSize_t len, ASUns8P buffer)
```

Header: `PDFLExpT.h:106`

A callback for PDFLibraryRegisterRNG(). It is called once to provide random data for encryption. Normally an operating system supplied source of highly random numbers is used (`/dev/urandom` on Mac OS and Unix, `CryptGenRandom()` on Windows). For some supported Unix environments, the `/dev/urandom` device does not exist. While it is preferable to install this device, the PDFLibraryRegisterRNG() function is provided for the client to register an alternate source for strong random data.

**See also:** [`PDFLibraryRegisterRNG`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLibraryRegisterRNG)

#### PDOCFindOutAutoStatePrefProc

```cpp
typedef ASBool(*) PDOCFindOutAutoStatePrefProc()()
```

Header: `PDFLExpT.h:2508`

Declare the type PDOCFindOutAutoStatePrefProc, which is a callback that lets the client set the AutoState preference.

#### PDOCFindOutLanguageProc

```cpp
typedef char *(*) PDOCFindOutLanguageProc()()
```

Header: `PDFLExpT.h:2502`

Declare the type PDOCFindOutLanguageProc, which is a callback that lets the client set the current user interface language level.

#### PDOCFindOutUserProc

```cpp
typedef ASText(*) PDOCFindOutUserProc(ASAtom indTtlOrOrg)(ASAtom indTtlOrOrg)
```

Header: `PDFLExpT.h:2505`

Declare the type PDOCFindOutUserProc, which is a callback that lets the client set the current user interface user level.

#### PDOCFindOutZoomProc

```cpp
typedef float(*) PDOCFindOutZoomProc(PDDoc pdDoc)(PDDoc pdDoc)
```

Header: `PDFLExpT.h:2499`

Declare the type PDOCFindOutZoomProc, which is a callback that lets the client set the current user interface zoom level.

#### TKResourceAcquireProc

```cpp
typedef void *(*) TKResourceAcquireProc(char *resourceName, ASInt32 resType, void *registry, ASInt32 *size, void *clientData, ASStm *rdStm)(char *resourceName, ASInt32 resType, void *registry, ASInt32 *size, void *clientData, ASStm *rdStm)
```

Header: `PDFInit.h:286`

A callback in the [`TKResourceProcs`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TKResourceProcs) structure in the Adobe PDF Library. It acquires the specified resource and uses it to fill in the `rdStm` parameter.

**See also:** [`TKResourceReleaseProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TKResourceReleaseProc), [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLInit)

**Used in:** [`TKResourceProcs`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TKResourceProcs)

#### TKResourceReleaseProc

```cpp
typedef void(*) TKResourceReleaseProc(ASStm rdStm, void *data, void *clientData)(ASStm rdStm, void *data, void *clientData)
```

Header: `PDFInit.h:303`

A callback in the [`TKResourceProcs`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TKResourceProcs) structure in the Adobe PDF Library. It releases the resources previously acquired and closes the ASStm passed in as `rdStm`.

**See also:** [`PMSetTextProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#PMSetTextProc), [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLInit)

**Used in:** [`TKResourceProcs`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TKResourceProcs)

### Structures (8)

#### PDFLDataRec

```cpp
struct PDFLDataRec
```

Header: `PDFInit.h:422`

PDFLData structure.

**Fields**

- `size` ([`ASSize_t`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASSize_t)): The size of the data structure. It must be set to `sizeof(PDFLDataRec)`.
- `flags` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Currently `kPDFLInitIgnoreDefaultDirectories` , `kPDFLInitIgnoreSystemFonts` and `kDontLoadPlugIns` flags are supported. When `kPDFLInitIgnoreDefaultDirectories` flag is set, the initialization process does not search through the default font directories(currently Adobe font directories installed by some Adobe
  applications), but only in those specified in `dirList`. When `kPDFLInitIgnoreSystemFonts` flag is set, the initialization process does not search through default System fonts also. When `kDontLoadPlugIns` flag is set, plug-ins are ignored during initialization process.
- `inst` (`HINSTANCE`): (Windows only)

  The location of resources for the Library. For a static library, you link them into your application and use `NULL` for `inst`. For a DLL version of the library, call `LoadLibrary` on the DLL and set `inst` equal to the `HINSTANCE` returned:

  `libData.inst = LoadLibrary("PDFL50.DLL");`

  If you are linking the static library into a DLL, pass the `HINSTANCE` passed into `DllMain` or `WinMain` for `inst`, and link the resources into the DLL.

  Free the `HINSTANCE` with `FreeLibrary` after you call PDFLTerm.
- `dirList` ([`ASUTF16Val **`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUTF16Val)): List of directories with fonts. @par Example For Windows:

  `libData.listLen=3L;`
  `libData.dirList=(ASUTF16Val**)malloc(sizeof(ASUTF16Val*)*3);`
  `libData.dirList[0]=(ASUTF16Val*)myFontDir0;`
  `libData.dirList[1]=(ASUTF16Val*)myFontDir1;`
  `libData.dirList[2]=(ASUTF16Val*)myFontDir2;`

  A list of directories with fonts. @par Example For Windows:
  `libData.listLen=3L;`
  `libData.dirList=(ASPathName *)malloc(sizeof(ASPathName)*3);`
  `libData.dirList[0]=(ASPathName)"c:\\PSFonts";`
  `libData.dirList[1]=(ASPathName)"c:\\Fonts";`
  `libData.dirList[2]=(ASPathName)"c:\\CMap";`
- `listLen` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The number of directories listed in `dirList`.
- `allocator` (`TKAllocatorProcsP`): The structure containing function pointers for memory allocation callbacks. The library manages its own memory. Most applications linking with the library should pass `NULL` for this member. Applications wishing more control over memory allocation can fill out this structure and will be responsible for providing and freeing memory, as well as reporting available memory as requested by the library.
- `resProcs` (`TKResourceProcsP`): The structure containing function pointers for resource management callbacks. The library manages its own resources. Most applications linking with the library should pass `NULL` for this member. Applications wishing more control over resource allocation can fill out this structure and will be responsible for providing and freeing resources requested by the library.
- `extProcs` (`TKExtensionProcsP`): The structure containing function pointers for ASExtension callbacks used by the PDF Library.
- `cacheFileList` ([`ASUTF16Val **`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUTF16Val)): A list of font cache file names. It is parallel to `dirList`, but contains separately configurable target files for CoolType cache files for use in cases where the specified font directory may not be writable by the client. If same font cache file name is provided for different font directories, font cache file created for the earlier font directory will get overwritten. Either `cacheFileList` or any/all of its subsidiary pointers may be `NULL`, in which case CoolType will default to the font directory passed in `dirList`.
- `systemCacheFile` ([`ASUTF16Val *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUTF16Val)): A separately configurable target file where CoolType should store the system font cache file. It may be `NULL`, in which case CoolType will choose a default path.

  Separately configurable target file where CoolType should store the system font cache file. It may be `NULL`, in which case CoolType will choose a default path.
- `commonCacheFile` ([`ASUTF16Val *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUTF16Val)): Separately configurable target file where CoolType should store the common font cache file. It may be `NULL`, in which case CoolType will choose a default path.
- `cMapDirectory` ([`ASUTF16Val *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUTF16Val)): The complete `NULL`-terminated path of the directory where CoolType can find CMap files. This directory will be the preferred location for CMaps that are associated with the system fontset. If CMaps with the same name are found in this directory and common fonts directory, the copy in this directory will be preferred. It may be `NULL`, in which case CoolType will only associate CMaps present in the common fonts directory with the system font set.

  The complete `NULL`-terminated path of the directory where CoolType can find CMap files. This directory will be the preferred location for CMaps that are associated with the system fontset. If CMaps with the same name are found in this directory and common fonts directory, the copy in this directory will be preferred. May be `NULL`, in which case CoolType will only associate CMaps present in common fonts directory with the system font set.
- `unicodeDirectory` ([`ASUTF16Val *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUTF16Val)): The complete, `NULL`-terminated path of the directory in which the Unicode mapping files can be found.
- `pluginDirListLen` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Specifies the number of directories listed in `pluginDirList`. With regards to loading plug-ins, PDF Library behavior is now as follows:

  • If `pluginDirListLen > 0`, then PDF Library will only look for plug-ins in the paths passed in `pluginDirList`. It will not search the earlier locations, (for example, `"pdfplug_ins"` folder on Windows, `"PDFPlug-Ins"` on Mac OS, and the list of directories passed in `dirList` on Unix.

  • If `pluginDirListLen <= 0` or is not a part of the `PDFLDataRec` structure passed by the PDF Library client, then PDF Library will search the earlier locations for plug-ins.
- `pluginDirList` ([`ASUTF16Val **`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUTF16Val)): An array of plug-in directories.

  If a PDF Library client wants PDFL to load headless PDF Library plug-ins from desired locations, the client can pass a list
  of paths in `pluginDirList`. The 2 fields `pluginDirList` and `pluginDirListLen` are similar
  to the existing fields `dirList` and `listLen`.

  Clients can pass an array of plug-in directories in the field `pluginDirList`:

  On Windows, `pluginDirList` is an array of `ASUTF16Val` paths. Each path should be `NULL`-terminated.
  On Mac OS, the paths passed in `pluginDirList` should be `NULL`-terminated UTF-8 POSIX strings. Hence,
  the type of `pluginDirList` on Mac is `char **`.
  On Unix, the paths passed in `pluginDirList` should be simple `NULL`-terminated `char` strings.
- `colorProfileDirListLen` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Specifies the number of directories listed in `colorProfileDirList`.
- `colorProfileDirList` ([`ASUTF16Val **`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUTF16Val)): An array of color profile directories.

  If a PDF Library client wants to search for color profiles from custom
  directories, the client can pass a list of paths in `colorProfileDirList`.
  The 2 fields `colorProfileDirList` and `colorProfileDirListLen`
  are similar to the existing fields `dirList` and `listLen`.

  If the client does not set this parameter then PDF Library will search
  for the color profiles from default locations such as Creative Suites and
  Acrobat installation directories. If the clients sets this parameter then
  PDF Library will search for the color profiles from it's default directory
  as well as from the custom directories specified by the client through
  parameter `colorProfileDirList`. However the order of searching for
  these profiles from default and custom directories is not fixed.

  On Windows, `colorProfileDirList` is an array of `ASUTF16Val` paths.
  Each path should be `NULL`-terminated.
  On Mac OS, the paths passed in `colorProfileDirList` should be `NULL`-terminated
  UTF-8 POSIX strings. Hence, the type of `colorProfileDirList` on Mac is `char **`.
  On Unix, the paths passed in `colorProfileDirList` should be simple `NULL`-terminated
  `char` strings.
- `initDC` (`HDC`): A valid Device Context or NULL. In most cases it should be set to NULL. It means APDFL will create a compatible DC (PlatformRenderData::InitPlatformGlyphCode) and will delete it later (PlatformRenderData::CleanupPlatformGlyphCode). This parameter should be set to a valid DC if APDFL is used in a printer driver on 64-bit Vista. It is because the spooler on 64-bit Vista should not call CreateDC() if a print job was requested from a 32bit app. (See [http://msdn.microsoft.com/en-us/library/aa505681.aspx](http://msdn.microsoft.com/en-us/library/aa505681.aspx))
- `officeMetricsDirectory` ([`ASUTF16Val *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUTF16Val)): No longer used, deprecated.
- `dirList` (`char **`): A list of directories with fonts. @par Example For Windows:
  `libData.listLen=3L;`
  `libData.dirList=(ASPathName *)malloc(sizeof(ASPathName)*3);`
  `libData.dirList[0]=(ASPathName)"c:\\PSFonts";`
  `libData.dirList[1]=(ASPathName)"c:\\Fonts";`
  `libData.dirList[2]=(ASPathName)"c:\\CMap";`
- `resFile` (`short`): (Mac only)

  The resources location, if they are not in the application itself. Set them using OpenResFile:

  **Example libData.resFile = OpenResFile("\\pMyResFileGoesHere")**
- `cacheFileList` (`char **`): A list of font cache file names. It is parallel to `dirList`, but contains separately configurable target files for CoolType cache files for use in cases where the specified font directory may not be writable by the client. If same font cache file name is provided for different font directories, font cache file created for the earlier font directory will get overwritten. Either `cacheFileList` or any/all of its subsidiary pointers may be `NULL`, in which case CoolType will default to the font directory passed in `dirList`.
- `systemCacheFile` (`char *`): Separately configurable target file where CoolType should store the system font cache file. It may be `NULL`, in which case CoolType will choose a default path.
- `commonCacheFile` (`char *`): Separately configurable target file where CoolType should store the common font cache file. It may be `NULL`, in which case CoolType will choose a default path.
- `cMapDirectory` (`char *`): The complete `NULL`-terminated path of the directory where CoolType can find CMap files. This directory will be the preferred location for CMaps that are associated with the system fontset. If CMaps with the same name are found in this directory and common fonts directory, the copy in this directory will be preferred. May be `NULL`, in which case CoolType will only associate CMaps present in common fonts directory with the system font set.
- `unicodeDirectory` (`char *`): The complete, `NULL`-terminated path of the directory in which the Unicode mapping files can be found.
- `pluginDirList` (`char **`): An array of plug-in directories.

  If a PDF Library client wants PDFL to load headless PDF Library plug-ins from desired locations, the client can pass a list
  of paths in `pluginDirList`. The 2 fields `pluginDirList` and `pluginDirListLen` are similar
  to the existing fields `dirList` and `listLen`.

  Clients can pass an array of plug-in directories in the field `pluginDirList`:

  On Windows, `pluginDirList` is an array of `ASUTF16Val` paths. Each path should be `NULL`-terminated.
  On Mac OS, the paths passed in `pluginDirList` should be `NULL`-terminated UTF-8 POSIX strings. Hence,
  the type of `pluginDirList` on Mac is `char **`.
  On Unix, the paths passed in `pluginDirList` should be simple `NULL`-terminated `char` strings.
- `colorProfileDirList` (`char **`): An array of color profile directories.

  If a PDF Library client wants to search for color profiles from custom
  directories, the client can pass a list of paths in `colorProfileDirList`.
  The 2 fields `colorProfileDirList` and `colorProfileDirListLen`
  are similar to the existing fields `dirList` and `listLen`.

  If the client does not set this parameter then PDF Library will search
  for the color profiles from default locations such as Creative Suites and
  Acrobat installation directories. If the clients sets this parameter then
  PDF Library will search for the color profiles from it's default directory
  as well as from the custom directories specified by the client through
  parameter `colorProfileDirList`. However the order of searching for
  these profiles from default and custom directories is not fixed.

  On Windows, `colorProfileDirList` is an array of `ASUTF16Val` paths.
  Each path should be `NULL`-terminated.
  On Mac OS, the paths passed in `colorProfileDirList` should be `NULL`-terminated
  UTF-8 POSIX strings. Hence, the type of `colorProfileDirList` on Mac is `char **`.
  On Unix, the paths passed in `colorProfileDirList` should be simple `NULL`-terminated
  `char` strings.

#### PDFLMemStats

```cpp
struct PDFLMemStats
```

Header: `PDFLExpT.h:77`

**Fields**

- `numAllocs` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32))
- `curUsage` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32))
- `highUsage` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32))

#### PDFlattenRec

```cpp
struct PDFlattenRec
```

Header: `PDFLExpT.h:308`

Controls tile flattening. It is primarily of interest to resource limited (embedded) systems developers.

**Fields**

- `size` ([`ASSize_t`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASSize_t)): The size of the structure. Set it to `sizeof(PDFlattenRec)`.
- `tilingMode` ([`PDFlattenTilingMode`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFlattenTilingMode)): `0` = no tiling; `1` = constant tiling; `2` = adaptive tiling
- `useTextOutlines` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Output text outlines instead of native text.
- `allowShadingOutput` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Allow shading ouput.
- `allowLevel3ShadingOutput` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Allow level 3 shading output.
- `strokeToFill` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): For converting stroke to outline.
- `clipComplexRegions` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Clip complex checkbox.
- `internalDPI` (`float`): Resolution for flattening the interior of an atomic region.
- `externalDPI` (`float`): Resolution for flattening edges of atomic regions.
- `pathDPI` (`float`): Flattener path resolution; the default is `800`.
- `tileSizePts` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Target tile size in points.
- `maxFltnrImageSize` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Maximum image size when flattening. The default is `0`.
- `adaptiveThreshold` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Adaptive flattening threshold.
- `preserveOverprint` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Attempt to preserve overprint.
- `disableCurveToLineOptmization` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Disable Curve to Line Optimization.
- `maxPageFlatteningTime` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): New parameter to set the maximum allowed time for flattening a page before rasterizing the content. Default value 0 : Enables the two minute limit default value < 0 : Disables the time limit > 0 : Sets the time limit (in seconds)
- `permitType3Fonts` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If false, such fonts are rasterized, this is the legacy behavior because many PDF processors don't handle Type 3 fonts correctly. If true, such fonts are preserved instead.
- `ignoreOverprint` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): DLADD 19Oct2023 - Normally every Page is checked if it has Transparency or Overprint features and when found the Page is Flattened. If false, Pages that have Overprinting are considered for Flattening. If true, Pages that have Overprinting aren't considered for Flattening.

#### PDTileRecEx

```cpp
struct PDTileRecEx
```

Header: `PDFLExpT.h:409`

**Fields**

- `pubRec` ([`PDTileRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTileRec)): Used for giving information to and from the user.
- `imageablePaperWidth` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): (pts)
- `imageablePaperHeight` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): (pts)
- `unprintablePaperWidth` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Unprintable left edge (pts).
- `unprintablePaperHeight` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Unprintable bottom edge (pts).
- `indent` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The amount tile indented within the imageable area (pts).
- `rotateAngle` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The clockwise rotation angle in degrees for tile.
- `labelTemplate` ([`ASText`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASText)): The optional label string template has 6 parameters it can fill in. If it is `NULL`, the label template `"$DOC$ $DATE$ $TIME$ $PAGE$ ($ROW$, $COL$)"` is used.

  **Example "page $PAGE$, row=$ROW$, column=$COL$"**
- `driverScale` (`double`): The scale selected by the user in the Print Setup or Printer Properties dialog box.
- `tileScale` (`double`): The scale for tiled pages.

#### TKAllocatorProcs

```cpp
struct TKAllocatorProcs
```

Header: `PDFInit.h:218`

A structure for memory allocation callbacks used by the PDF Library.

**Fields**

- `allocProc` (`ASClientAllocProc`): Called when the PDF Library needs to allocate memory.
- `reallocProc` (`ASClientReallocProc`): Called when the PDF Library needs to reallocate a block of memory.
- `freeProc` (`ASClientFreeProc`): Called when the PDF Library needs to free a block of memory.
- `memAvailProc` (`ASClientMemAvailProc`): Called when the PDF Library needs to determine the amount of memory available.
- `clientData` (`void *`): A pointer to data to pass into each of the memory management callbacks.

#### TKExtensionProcs

```cpp
struct TKExtensionProcs
```

Header: `PDFInit.h:401`

Called periodically during plug-in loading with the ASExtension currently being loaded, and a selector indicating what phase of loading is happening. A structure containing function pointers for ASExtension callbacks used by the PDF Library.

**Fields**

- `progressProc` (`ASExtensionProgressProc`): Called when the PDF Library needs to allocate memory.
- `reportErrProc` (`ASExtensionReportErrorProc`): Called when the PDF Library needs to reallocate a block of memory.
- `clientData` (`void *`): A `void*` of data to pass into each of the memory management callbacks.

#### TKResourceProcs

```cpp
struct TKResourceProcs
```

Header: `PDFInit.h:310`

Structure for resource acquisition callbacks used by the PDF Library.

**Fields**

- `acquireProc` ([`TKResourceAcquireProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TKResourceAcquireProc)): Called when the PDF Library needs to acquire resources.
- `releaseProc` ([`TKResourceReleaseProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TKResourceReleaseProc)): Called when the PDF Library needs to release resources.
- `clientData` (`void *`): A pointer to data to pass into every call to the PMSetTextProc() or TKResourceReleaseProc() as the `clientData` argument.

#### TextServer

```cpp
typedef struct _t_TextServer* TextServer
```

Header: `PDFLExpT.h:1517`

Text server.

### Definitions (7)

#### AVPS_MAC_ROMAN_ENC

Header: `PDFLExpT.h:1782`

Value: `101`

Encoding identifiers (for TE).

#### AVPS_WIN_ANSI_ENC

Header: `PDFLExpT.h:1784`

Value: `102`

#### BAD_NSELECTOR

Header: `PDFLExpT.h:74`

Value: `(-1)`

#### DLADD_disableFlattening

Header: `PDFLExpT.h:1032`

Value: `1`

#### _T_NSELECTOR

Header: `PDFLExpT.h:72`

#### __defedPlatformTypes

Header: `PDFLExpT.h:54`

#### kPDFLVersion

Header: `PDFInit.h:49`

Value: `0x00120003`

## PDDoc

### Functions (1)

#### PDDocPrintPages

```cpp
void PDDocPrintPages(PDPrintClient client)
```

Header: `PDFLProcs.h:186`

Prints a range of pages from a document, controlled by a structure of data and callbacks. **Note:** This low-level method should be avoided; use the higher-level PDFLPrintDoc() instead.

**Parameters**

- `client` ([`PDPrintClient`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintClient)): Control structure for the operation, containing data and callback procedures.

**Returns:** `void`

**Exceptions**

- `genErrBadParm`: @notify PSPrintAfterBeginPageSetup @notify PSPrintAfterBeginProlog @notify PSPrintAfterBeginSetup @notify PSPrintAfterEmitExtGState @notify PSPrintAfterPageTrailer @notify PSPrintAfterTrailer @notify PSPrintBeforeEndComments @notify PSPrintBeforeEndSetup

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLInit), [`PDFLPrintDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintDoc)

## PDFLPrint

### Functions (3)

#### PDFLPrintDoc

```cpp
void PDFLPrintDoc(PDDoc doc, PDFLPrintUserParams userParams)
```

Header: `PDFLProcs.h:743`

Prints a PDF document or pages from a PDF document allowing the caller to specify options such as page size, rotation, and shrink-to-fit. **Note:** Users of the PDFLPrintDoc() method do not have to create the PDPrintClient() callbacks. That detail is handled by the library.

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDDoc)): The PDDoc for the document to print.
- `userParams` ([`PDFLPrintUserParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParams)): Parameters to control printing.

**Returns:** `void`

**Exceptions**

- `cosErrWriteError`
- `pdErrOpNotPermitted`
- `genErrBadParm`: @notify PSPrintAfterBeginPageSetup @notify PSPrintAfterBeginProlog @notify PSPrintAfterBeginSetup @notify PSPrintAfterEmitExtGState @notify PSPrintAfterPageTrailer @notify PSPrintAfterTrailer @notify PSPrintBeforeEndComments @notify PSPrintBeforeEndSetup

#### PDFLPrintDocEx

```cpp
void PDFLPrintDocEx(PDDoc doc, PDFLPrintUserParamsEx userParams)
```

Header: `PDFLProcs.h:774`

Prints a PDF document or pages from a PDF document allowing the caller to specify options such as page size, rotation, and shrink-to-fit. **Note:** Users of the PDFLPrintDoc() method do not have to create the PDPrintClient() callbacks. That detail is handled by the library. **Note:** Platform: (WIN_ENV)

**Parameters**

- `doc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDDoc)): The PDDoc for the document to print.
- `userParams` ([`PDFLPrintUserParamsEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsEx)): Parameters to control printing.

**Returns:** `void`

**Exceptions**

- `cosErrWriteError`
- `pdErrOpNotPermitted`
- `genErrBadParm`: @notify PSPrintAfterBeginPageSetup @notify PSPrintAfterBeginProlog @notify PSPrintAfterBeginSetup @notify PSPrintAfterEmitExtGState @notify PSPrintAfterPageTrailer @notify PSPrintAfterTrailer @notify PSPrintBeforeEndComments @notify PSPrintBeforeEndSetup

#### PDFLPrintPDF

```cpp
void PDFLPrintPDF(PDDoc pdDoc, ASPathName pathName, PDPrintParams psParams)
```

Header: `PDFLProcs.h:749`

Deprecated: use PDFLPrintDoc() instead.

**Parameters**

- `pdDoc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDDoc))
- `pathName` ([`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASPathName))
- `psParams` ([`PDPrintParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParams))

**Returns:** `void`

### Typedefs (10)

#### PDOutputType

```cpp
typedef ASEnum8 PDOutputType
```

Header: `PDFLExpT.h:142`

Specifies what kind of file to emit.

**Used in:** [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec)

#### PDPrintMarkStyles

```cpp
typedef ASInt32 PDPrintMarkStyles
```

Header: `PDFLExpT.h:1539`

#### PDPrintTrapType

```cpp
typedef ASEnum8 PDPrintTrapType
```

Header: `PDFLExpT.h:492`

#### PDPrintWhatAnnot

```cpp
typedef ASEnum8 PDPrintWhatAnnot
```

Header: `PDFLExpT.h:480`

**Used in:** [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec)

#### PDPrintWhatFlip

```cpp
typedef ASEnum8 PDPrintWhatFlip
```

Header: `PDFLExpT.h:489`

#### PDFLPrintCancelProc

```cpp
typedef ASBool(*) PDFLPrintCancelProc(PDDoc pdDoc, void *clientData)(PDDoc pdDoc, void *clientData)
```

Header: `PDFLPrint.h:69`

This is called once per page of a document being printed. In addition to giving the ability to cancel the print job, a developer can use this callback to return control briefly to an application to handle events, update UI elements, and so on. The library pauses printing until the return from this procedure, because it is single-threaded.

**See also:** [`ASCancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASCancelProc), [`CancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#CancelProc), [`PDFLPrintUserParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRec)

**Used in:** [`PDFLPrintUserParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRec), [`PDFLPrintUserParamsRecEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRecEx)

#### PDFLPrintProgressProc

```cpp
typedef ASBool(*) PDFLPrintProgressProc(ASInt32 pageNum, ASInt32 totalPages, float current, const char *name, ASInt32 stage, void *progMonClientData)(ASInt32 pageNum, ASInt32 totalPages, float current, const char *name, ASInt32 stage, void *progMonClientData)
```

Header: `PDFLPrint.h:112`

A print progress callback.

**See also:** [`PDFLFlattenProgressMarker`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#PDFLFlattenProgressMarker)

**Used in:** [`PDFLPrintUserParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRec), [`PDFLPrintUserParamsRecEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRecEx)

#### PDPrintCanEmitFontProc

```cpp
typedef ASBool(*) PDPrintCanEmitFontProc(PDFont fontP, PDPrintClient printClient)(PDFont fontP, PDPrintClient printClient)
```

Header: `PDFLExpT.h:1875`

(Optional) A callback for PDPrintClient. It is called to determine whether a font can be emitted into the print job. This is used to determine whether a font is a document-included resource. Only used for PostScript printing. If it is `NULL`, the default is to assume that any font can be emitted.

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDocPrintPages)

**Used in:** [`PDFLPrintUserCallbacksRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserCallbacksRec), [`PDPrintClientRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintClientRec)

#### PDPrintEmitFontProc

```cpp
typedef ASBool(*) PDPrintEmitFontProc(ASStm stm, PDFont fontP, PDPrintClient printClient, ASUns32 flags)(ASStm stm, PDFont fontP, PDPrintClient printClient, ASUns32 flags)
```

Header: `PDFLExpT.h:1857`

(Required) A callback for PDPrintClient. It emits a font. For Type0 fonts that require font substition, this routine may emit multiple font definitions. The caller can get the list of fonts used by calling GetFontComponentList().

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDocPrintPages)

**Used in:** [`PDPrintClientRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintClientRec)

#### PDPrintGetFontEncodingMethodProc

```cpp
typedef ASInt32(*) PDPrintGetFontEncodingMethodProc(PDFont fontP, PDPrintClient printClient)(PDFont fontP, PDPrintClient printClient)
```

Header: `PDFLExpT.h:1841`

(Required for PostScript printing) A callback for PDPrintClient. It asks the client which encoding method should be used for the font. Method Description kPDDoReencode Use for Type 1 fonts and substituted fonts. kPDDoNothing Use for TrueType Windows font or built-in encoding font. kPDDoXlate Use for a TrueType custom font or font with Mac OS encoding.

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDocPrintPages)

**Used in:** [`PDPrintClientRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintClientRec)

### Structures (23)

#### ImageInks

```cpp
struct ImageInks
```

Header: `PDFLExpT.h:1693`

Image inks.

**Fields**

- `type` ([`ImageInk`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#ImageInk)): Image ink type.
- `mono` ([`MonoInkList *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#MonoInkList)): Image ink monochrome list. This is defined only if `type == ImageInk_Monochrome`.

**Used in:** [`OPI20dict`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#OPI20dict)

#### MonoInkList

```cpp
struct MonoInkList
```

Header: `PDFLExpT.h:1683`

Image ink monochrome list.

**Fields**

- `name` (`char *`): Name of the colorant.
- `level` (`float`): Concentration of the colorant.
- `next` (`struct _t_monoInkList *`): Pointer to next list element.

**Used in:** [`ImageInks`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#ImageInks)

#### OPI13dict

```cpp
struct OPI13dict
```

Header: `PDFLExpT.h:1619`

OPI 1.3 dictionary.

**Fields**

- `aldImageAsciiTags` ([`TIFFASCIITagList *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TIFFASCIITagList)): TIFF ASCII tags.
- `aldImageColor` (`struct OPI13dict::@164170005106075354303133154044037375003257157232`)
- `aldImageColorType` ([`ALDImageColorType`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#ALDImageColorType)): Image color type.
- `aldImageCropFixed` (`float`): The portion of the image to be used.
- `aldImageCropRect` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The portion of the image to be used (`[left top right bottom]`). REQUIRED.
- `aldImageDimensions` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Included image dimensions. `[width height]` REQUIRED. `/Size` in PDF.
- `aldImageFileName` ([`PDFileSpec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDFileSpec)): REQUIRED. Image file name.
- `aldImageGrayMap` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Changes to the brightness or contrast of the image.
- `aldImageGrayMapLength` ([`ASUns16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Length of the GrayMap array (`2`, `16`, or `256`).
- `aldImageID` (`char *`): Image identifier.
- `aldImageOverprint` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Determines whether the image is to overprint (`true`) or knock out (`false`) underlying marks on other separations.
- `aldImagePosition` (`float`): The location on the page of the cropped image (`[llx lly ulx uly urx ury lrx lry]`. REQUIRED.
- `aldImageResolution` (`float`): Image resolution (`[horiz vert]`).
- `aldImageTint` (`float`): The concentration of the color in which the image is to be rendered.
- `aldImageTransparency` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Specifies whether white pixels in the image are to be treated as transparent.
- `aldImageType` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Specifies the number of samples per pixel and bits per sample in the image (`[samplesPerPixel bitsPerSample]`).
- `aldObjectComments` (`char *`): A human-readable comment, typically containing instructions or suggestions to the operator of the OPI server on how to handle the image.
- `defined` (`struct OPI13dict::@021265151007226160124004164366313351272373363105`)

**Used in:** [`OPI13dict`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#OPI13dict)

#### OPI20dict

```cpp
struct OPI20dict
```

Header: `PDFLExpT.h:1701`

OPI 2.0 dictionary.

**Fields**

- `imageCropRect` (`float`): The portion of the image to be used (`[left top right bottom]`). OPTIONAL.
- `imageDimensions` (`float`): The dimensions of the included image (`[width height]`). OPTIONAL.
- `imageFileName` ([`PDFileSpec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDFileSpec)): The external file containing the image. The following values are required if `imageCropRect` and `imageDimensions` are defined: `0 <= left < right <= width`
  `0 <= top < bottom <= height`

  REQUIRED.
- `imageInks` ([`ImageInks`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#ImageInks)): The colorants to be applied to the image.
- `imageOverprint` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Specifies whether the image is to overprint (`true`) or knock out (`false`) underlying marks on other separations.
- `includedImageDimensions` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Included image dimensions.
- `includedImageQuality` (`float`): The quality of the included image.
- `mainImage` (`char *`): The path name of the file containing the full-resolution image.
- `tiffAsciiTags` ([`TIFFASCIITagList *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TIFFASCIITagList))
- `defined` (`struct OPI20dict::@375101161202225025025114144164376116222125162175`)

**Used in:** [`OPI20dict`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#OPI20dict)

#### OPIdict

```cpp
struct OPIdict
```

Header: `PDFLExpT.h:1745`

OPI dictionary.

**Fields**

- `version` ([`OPIversion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#OPIversion)): OPI version (`1.3` or `2.0`).
- `dict` (`union OPIdict::@311243253320231056061260114214213233170330263070`)

**Used in:** [`OPIdict`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#OPIdict)

#### PDFLPrintUserCallbacks

```cpp
typedef struct _t_PDFLPrintUserCallbacks* PDFLPrintUserCallbacks
```

Header: `PDFLExpT.h:2488`

**Used in:** [`PDFLPrintUserParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRec), [`PDFLPrintUserParamsRecEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRecEx)

#### PDFLPrintUserCallbacksRec

```cpp
struct PDFLPrintUserCallbacksRec
```

Header: `PDFLExpT.h:2483`

The structure holding pointers to certain optional Callbacks available with the PDFLPrintDoc() API.

**Fields**

- `size` ([`ASSize_t`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASSize_t))
- `CanEmitFont` ([`PDPrintCanEmitFontProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintCanEmitFontProc))

#### PDFLPrintUserParams

```cpp
typedef struct _t_PDFLPrintUserParams* PDFLPrintUserParams
```

Header: `PDFLExpT.h:2494`

Declare the type PDFLPrintUserParams, which is a pointer to a structure and is passed into PDFLPrintDoc. This structure is defined in `PDFLPrint.h`, but it is complex and platform-specific. This declaration avoids the need to include the platform specific details into files that just need a decaration of this pointer.

#### PDFLPrintUserParamsEx

```cpp
typedef struct _t_PDFLPrintUserParamsEx* PDFLPrintUserParamsEx
```

Header: `PDFLExpT.h:2496`

#### PDFLPrintUserParamsRec

```cpp
struct PDFLPrintUserParamsRec
```

Header: `PDFLPrint.h:135`

Used to control printing with PDFLPrintDoc. To print to a PostScript file, set `emitToFile` to `true`, fill in `printParams`, and create a writeable stream. To print to a printer, set `emitToPrinter` to `true`, fill in `printParams`, and optionally fill in the command. @note UNIX supports only PostScript to a file or printer, as controlled by the (mutually exclusive) `emitToFile` and `emitToPrinter` parameters. Used to control printing with PDFLPrintDoc. See PDFLPrint.h for details about printing on specific platforms. To print to a PostScript file, set `emitToFile` to `true`, fill in `printParams`, and create a writeable stream. To print to a printer, set `emitToPrinter` to `true`, fill in `printParams`, and optionally fill in the command. @note UNIX supports only PostScript to a file or printer, as controlled by the mutually exclusive `emitToFile` and `emitToPrinter` parameters. Used to control printing with PDFLPrintDoc. To print to a PostScript file, set `emitToFile` to true, fill in `printParams`, and create a writeable stream. To print to a printer, set `emitToPrinter` to `true`, fill in `printParams`, and optionally fill in the command. @note UNIX supports only PostScript to a file or printer, as controlled by the (mutually exclusive) `emitToFile` and `emitToPrinter` parameters.

**Fields**

- `size` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Size of the data structure. Must be set to sizeof(PDFLPrintUserParamsRec).

  Size of the data structure. It must be set to `sizeof(PDFLPrintUserParamsRec)`.
- `printParams` ([`PDPrintParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParams)): PDPrintParams structure. Used for both creating a PostScript file and printing to a printer.

  PDPrintParams structure. It is used for both creating a PostScript file and printing to a printer.

  PDPrintParams structure. It is used both for creating a PostScript file and printing to a printer.
- `emitToFile` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Create a PostScript file. You set either this parameter or emitToPrinter, but not both.

  Create a PostScript file. Set either this parameter or `emitToPrinter`, but not both.
- `printStm` ([`ASStm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASStm)): Writable ASStm that points to a file stream or proc stream. It applies to both a PostScript printer and a file.

  Writable ASStm that points to file stm or proc stm. It applies to both a PostScript printer and a file.
- `paperWidth` ([`ASUns16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Width of paper in points. The default value is 612. Applies to a PostScript printer.

  Width of paper in points. The default value is 612. It applies to a PostScript printer.

  Width of paper in points. The default value is `612`. It applies to a PostScript printer.
- `paperHeight` ([`ASUns16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Height of paper in points. The default value is 792. Applies to a PostScript printer.

  Height of paper in points. The default value is 792. It applies to a PostScript printer.

  Height of paper in points. The default value is `792`. It applies to a PostScript printer.
- `dontEmitListLen` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Number of fonts that should not be downloaded. Applies to both a PostScript printer and a file.

  Number of fonts that should not be downloaded. It applies to both a PostScript printer and a file.
- `dontEmitList` (`char **`): List of fonts (T1, TrueType, CID) that should not be downloaded. Applies to both a PostScript printer and a file.

  List of fonts (T1, TT, CID) that should not be downloaded. It applies to both a PostScript printer and a file.

  List of fonts (T1, TrueType, CID) that should not be downloaded. It applies to both a PostScript printer and a file.
- `emitToPrinter` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Output PDF file to a PostScript printer. Set either this parameter or `emitToFile`, but not both.

  Output a PDF file to a PostScript printer. Set either this parameter or `emitToFile`, but not both.
- `command` (`char *`): Optional command line arguments. It is used only if
  `emitToPrinter` is `true`. For example, `"lp"` or
  `"lpr"` applies to a PostScript printer.
- `cancelProc` ([`PDFLPrintCancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintCancelProc)): Optional PDFLPrintCancelProc. It applies to both a a PostScript printer and a file.

  Optional PDFLPrintCancelProc. It applies to both a PostScript printer and a file.
- `clientData` (`void *`): Optional pointer to data passed to `cancelProc`. Applies to both a PostScript printer and a file.

  Optional pointer to data passed to `cancelProc`. It applies to both a PostScript printer and a file.
- `startResult` (`int`): Spooler ID from StartDoc

  Spooler ID from StartDoc().
- `userCallbacks` ([`PDFLPrintUserCallbacks`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserCallbacks)): Optional pointer to structure containing pointers to user callback functions
- `nCopies` (`int`): (Optional) Number of copies to print. It applies to a PostScript file.

  Number of copies to print. It applies to a printer and to a PostScript file.

  The number of copies to print. It applies to a printer and to a PostScript file.
- `PPDFeatures` (`PPDFeaturesP`): Optional pointer to a structure where you can add additional PPD features like staple, input tray, output tray, duplex mode etc. for output to PostScript file. For more details, see `_t_PPDFeatures`
- `ppdFileName` ([`ASText`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASText)): (Optional)The name and path of the PPD file from which the PPD features will be emitted to a PostScript file. Use this field alongwith `PPDFeaturesP PPDFeatures`. For more details, see `_t_PPDFeatures`.
- `progressProc` ([`PDFLPrintProgressProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintProgressProc))
- `progressClientData` (`void *`)
- `transQuality` (`int`): Transparency flattening quality control. `1` is fastest; `5` is best. It applies to a printer. The default is `3`.

  Transparency flattening quality control. `1` is fastest; `5` is
  best. It applies to a printer. The default is `3`.
- `inFileName` (`char *`): Deprecated. Use the Unicode version `inFileNameW`.

  Used for the Windows DOCINFO structure (`lpszDocName`)
  that points to a `NULL`-terminated string that specifying the name of
  the document. In case of printing/exporting to Postscript, this field sets
  the Title DSC comment in the generated Postscript file. inFileNameW has precedence over the deprecated inFileName. If neither is provided, the Title DSC comment is filled with the name of pdf document.
- `outFileName` (`char *`): Deprecated. Use the Unicode version `outFileNameW`.

  Used for the Windows DOCINFO structure (`lpszOutput`). It points to a `NULL`-terminated string that specifies the name of an output file. If this pointer is `NULL`, the output will be sent to the device identified by `deviceName`, `driverName`, and `portName`. It applies to a printer.
- `deviceName` (`char *`): Deprecated. Use the Unicode version `deviceNameW`.

  The name of the device on which to print (for example, `"Distiller Assistant v3.01"`). Available devices can be found in the Windows Registry at `HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices`. It applies to a printer.
- `driverName` (`char *`): Deprecated. Use the Unicode version `driverNameW`.

  The name of the driver (for example, `"winspool"`). See the registry key
  for `deviceName`. It applies to the printer.
- `portName` (`char *`): Deprecated. Use the Unicode version `portNameW`.

  The name of the port (for example, `"Ne00"`). See the registry key for `deviceName`. It applies to the printer.
- `pDevMode` (`DEVMODEA *`): Deprecated. Use the Unicode version `pDevModeW`.

  (Optional) Allows you to pass a DEVMODE structure in if you have one.

  If you do not pass in your own DEVMODE structure, PDFL creates its own by calling OpenPrinter(), DocumentProperties(), and ClosePrinter().

  PDFL never calls SetPrinter() and has no facility to offer the features provided by SetPrinter() (for example, pause/resume, deleting jobs, changing printer status, etc.). DocumentProperties() is called only in the case where the client does not provide a DEVMODE.

  **Note:** If you provide your own DEVMODE, you will certainly want to call DocumentProperties() to populate it and/or display the print dialog box.
- `startPage` (`int`): Page to start printing with, using zero-based numbering. It applies to a printer.

  The page on which to start printing, using zero-based numbering. It applies to a printer.
- `endPage` (`int`): Page on which to finish printing. It applies to a printer.

  The page on which to finish printing. It applies to a printer.
- `shrinkToFit` (`int`): `1` turns on shrink to fit, `0` turns it off. It applies to a PostScript printer.
- `printAnnots` (`int`): `1` turns on printing annotations, `0` turns it off. It applies to a printer.

  `1` turns on printing annots, `0` turns it off. It applies to a printer.
- `psLevel` (`int`): PostScript level. It applies to a PostScript printer.
- `binaryOK` (`int`): `1` turns on binary data, `0` turns it off. It applies to a PostScript printer.
- `emitHalftones` (`int`): `1` turns on emit half-tones, `0` turns it off. It applies to a PostScript printer.

  `1` turns on emit half-tones, `0` turns them off. It applies to a PostScript printer.
- `reverse` (`int`): `1` reverses print order, `0` does regular order. It applies to a printer.
- `farEastFontOpt` (`int`): One of PDFarEastFont.The default value is PDPDFarEastFont_Download_All. It applies to a PostScript printer. `PDPDFarEastFont_Print_As_Image` will not be honored.
- `doOPP` (`int`): `1` uses OverPrint Preview, `0` does not. It applies to a printer.

  The default is `0`.
- `inFileNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Used for the Windows DOCINFO structure (`lpszDocName`)
  that points to a `NULL`-terminated string that specifying the name of
  the document. In case of printing/exporting to Postscript, this field sets
  the Title DSC comment in the generated Postscript file. inFileNameW has precedence over the deprecated inFileName. If neither is provided, the Title DSC comment is filled with the name of pdf document.
- `outFileNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Used for the Windows DOCINFO structure (`lpszOutput`). It points to a `NULL`-terminated string that specifies the name of an output file. If this pointer is `NULL`, the output will be sent to the device identified by `deviceName`, `driverName`, and `portName`. It applies to a printer.
- `deviceNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): The name of the device to print to (for example, `"Distiller Assistant v3.01"`). Available devices can be found in the Windows Registry at `HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices`. It applies to a printer.
- `driverNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): The name of the driver (for example, `"winspool"`). See the registry key for `deviceName`. It applies to the printer.
- `portNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): The name of the port (for example, `"Ne00"`). See the registry key for `deviceName`. It applies to the printer.
- `pDevModeW` (`DEVMODEW *`): (Optional) Allows you to pass a DEVMODE structure in if you have one.

  If you do not pass in your own DEVMODE structure, PDFL creates its own by calling `OpenPrinter()`, `DocumentProperties()`, and `ClosePrinter()`.

  PDFL never calls `SetPrinter()` and has no facility to offer the features provided by `SetPrinter()` (for example, pause/resume, deleting jobs, changing printer status, etc.). `DocumentProperties()` is called only in the case where the client does not provide a DEVMODE.

  **Note:** If you provide your own DEVMODE, call `DocumentProperties()` to populate it or display the print dialog box.
- `pDC` (`HDC`): (Optional) Allows you to pass a DeviceContext structure.

  If you do not pass in your own DeviceContext structure PDFL creates its own.

  **Note:** you should provide your own DeviceContext only if you register to the PDPageDirectDrawToPlatform notification and wish to draw extra content to a page after PDFL has finished printing it.
- `forceGDIPrint` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Optional value used for Postscript printing that allows printing with the code path used by the nonps printer instead of the code used by the PS printer
- `hDC` (`HDC`): Optional device handle used to allow the device handle used in the user's sample with StartDoc and EndDoc to be passed to the library to be used in StartPage and EndPage.
- `useCustomPaperSize` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Force the use of the paper size provided in the [`PDFLPrintUserParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRec) paperWidth and paperHeight parameters instead of searching for best fit size provided by printer. [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec) setPageSize must also be set for this option.
- `printRecord` (`void *`): DO NOT USE: Classic (non-Carbon) printing is no longer supported.
- `printSession` (`PMPrintSession`): Carbon print session - may be `NULL`. It applies to a printer.
- `printSettings` (`PMPrintSettings`): Carbon print settings - may be `NULL`. It applies to a printer.
- `pageFormat` (`PMPageFormat`): Carbon page format - may be `NULL`. It applies to a printer.

**See also:** [`PDFLPrintDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintDoc), [`PDFLPrintCancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintCancelProc), [`PDFLPrintDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintDoc), [`PDFLPrintCancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintCancelProc), [`PDFLPrintDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintDoc), [`PDFLPrintCancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintCancelProc)

#### PDFLPrintUserParamsRecEx

```cpp
struct PDFLPrintUserParamsRecEx
```

Header: `PDFLPrint.h:758`

Used to control the emitting of PPD dependent features to a PostScript file when printing with PDFLPrintDoc. These features are emitted only if `emitToFile` is set to `true`. Please see PDFLPrintDoc for more details. This can be used to generate PPD dependent PostScript file on all platforms. All PPD features in the structure are optional. Set only the ones you want to be emit to the output PostScript file. The PPD file and its path should be passed in as `ppdFileName` inside `PDFLPrintUserParamsRec`. If the PPD feature specified here does not exist in the passed PPD file, then it will not be outputted in the generated PostScript file. For eg. if Upper is passed as `InputSlot` and there is no tray as Upper in the PPD file, then the generated PostScript file will not contain an entry setting InputSlot to Upper. Note: If no PPD file is passed then this structure would be ignored. Used to control printing with PDFLPrintDoc. See `PDFLPrint.h` for details about printing on specific platforms. To print to a PostScript file, set `emitToFile` to `true`, fill in `printParams`, and create a writeable stream. To print to a printer, set `emitToPrinter` to `true`, fill in `printParams`, and optionally fill in the command. **Note:** UNIX supports only PostScript to a file or printer, as controlled by the mutually exclusive `emitToFile` and `emitToPrinter` parameters.

**Fields**

- `size` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Size of the data structure. Must be set to sizeof(PDFLPrintUserParamsRec).
- `emitToFile` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Create a PostScript file. You set either this parameter or emitToPrinter, but not both.
- `printParams` ([`PDPrintParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParams)): PDPrintParams structure. It is used for both creating a PostScript file and printing to a printer.
- `printStm` ([`ASStm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASStm)): Writable ASStm that points to file stm or proc stm. It applies to both a PostScript printer and a file.
- `paperWidth` ([`ASUns16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Width of paper in points. The default value is 612. It applies to a PostScript printer.
- `paperHeight` ([`ASUns16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Height of paper in points. The default value is 792. It applies to a PostScript printer.
- `dontEmitListLen` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Number of fonts that should not be downloaded. It applies to both a PostScript printer and a file.
- `dontEmitList` (`char **`): List of fonts (T1, TT, CID) that should not be downloaded. It applies to both a PostScript printer and a file.
- `emitToPrinter` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Output PDF file to a PostScript printer. Set either this parameter or `emitToFile`, but not both.
- `inFileName` (`char *`): Deprecated. Use the Unicode version `inFileNameW`.

  Used for the Windows DOCINFO structure (`lpszDocName`) that points to a `NULL`-terminated string that specifying the name of the document. In case of printing/exporting to Postscript, this field sets the Title DSC comment in the generated Postscript file. inFileNameW has precedence over the deprecated inFileName. If neither is provided, the Title DSC comment is filled with the name of pdf document.
- `outFileName` (`char *`): Deprecated. Use the Unicode version `outFileNameW`.

  Used for the Windows DOCINFO structure (`lpszOutput`). It points to a `NULL`-terminated string that specifies the name of an output file. If this pointer is `NULL`, the output will be sent to the device identified by `deviceName`, `driverName`, and `portName`. It applies to a printer.
- `deviceName` (`char *`): Deprecated. Use the Unicode version `deviceNameW`.

  The name of the device on which to print (for example, `"Distiller Assistant v3.01"`). Available devices can be found in the Windows Registry at `HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices`. It applies to a printer.
- `driverName` (`char *`): Deprecated. Use the Unicode version `driverNameW`.

  The name of the driver (for example, `"winspool"`). See the registry key for `deviceName`. It applies to the printer.
- `portName` (`char *`): Deprecated. Use the Unicode version `portNameW`.

  The name of the port (for example, `"Ne00"`). See the registry key for `deviceName`. It applies to the printer.
- `pDevMode` (`DEVMODEA *`): Deprecated. Use the Unicode version `pDevModeW`.

  (Optional) Allows you to pass a DEVMODE structure in if you have one.

  If you do not pass in your own DEVMODE structure, PDFL creates its own by calling OpenPrinter(), DocumentProperties(), and ClosePrinter().

  PDFL never calls SetPrinter() and has no facility to offer the features provided by SetPrinter() (for example, pause/resume, deleting jobs, changing printer status, etc.). DocumentProperties() is called only in the case where the client does not provide a DEVMODE.

  **Note:** If you provide your own DEVMODE, you will certainly want to call DocumentProperties() to populate it and/or display the print dialog box.
- `startPage` (`int`): Page to start printing with, using zero-based numbering. It applies to a printer.
- `endPage` (`int`): Page on which to finish printing. It applies to a printer.
- `shrinkToFit` (`int`): `1` turns on shrink to fit, `0` turns it off. It applies to a PostScript printer.
- `printAnnots` (`int`): `1` turns on printing annotations, `0` turns it off. It applies to a printer.
- `psLevel` (`int`): PostScript level. It applies to a PostScript printer.
- `nCopies` (`int`): Number of copies to print. It applies to a printer and to a PostScript file.
- `binaryOK` (`int`): `1` turns on binary data, `0` turns it off. It applies to a PostScript printer.
- `emitHalftones` (`int`): `1` turns on emit half-tones, `0` turns it off. It applies to a PostScript printer.
- `reverse` (`int`): `1` reverses print order, `0` does regular order. It applies to a printer.
- `farEastFontOpt` (`int`): One of PDFarEastFont.The default value is PDPDFarEastFont_Download_All. It applies to a PostScript printer. `PDPDFarEastFont_Print_As_Image` will not be honored.
- `transQuality` (`int`): Transparency flattening quality control. `1` is fastest; `5` is best. It applies to a printer. The default is `3`.
- `doOPP` (`int`): `1` uses OverPrint Preview, `0` does not. It applies to a printer.

  The default is `0`.
- `cancelProc` ([`PDFLPrintCancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintCancelProc)): Optional PDFLPrintCancelProc. It applies to both a PostScript printer and a file.
- `clientData` (`void *`): Optional pointer to data passed to `cancelProc`. It applies to both a PostScript printer and a file.
- `startResult` (`int`): Spooler ID from StartDoc().
- `inFileNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Used for the Windows DOCINFO structure (`lpszDocName`) that points to a `NULL`-terminated string that specifying the name of the document. In case of printing/exporting to Postscript, this field sets the Title DSC comment in the generated Postscript file. inFileNameW has precedence over the deprecated inFileName. If neither is provided, the Title DSC comment is filled with the name of pdf document.
- `outFileNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): Used for the Windows DOCINFO structure (`lpszOutput`). It points to a `NULL`-terminated string that specifies the name of an output file. If this pointer is `NULL`, the output will be sent to the device identified by `deviceName`, `driverName`, and `portName`. It applies to a printer.
- `deviceNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): The name of the device to print to (for example, `"Distiller Assistant v3.01"`). Available devices can be found in the Windows Registry at `HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices`. It applies to a printer.
- `driverNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): The name of the driver (for example, `"winspool"`). See the registry key for `deviceName`. It applies to the printer.
- `portNameW` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): The name of the port (for example, `"Ne00"`). See the registry key for `deviceName`. It applies to the printer.
- `pDevModeW` (`DEVMODEW *`): (Optional) Allows you to pass a DEVMODE structure in if you have one.

  If you do not pass in your own DEVMODE structure, PDFL creates its own by calling `OpenPrinter()`, `DocumentProperties()`, and `ClosePrinter()`.

  PDFL never calls `SetPrinter()` and has no facility to offer the features provided by `SetPrinter()` (for example, pause/resume, deleting jobs, changing printer status, etc.). `DocumentProperties()` is called only in the case where the client does not provide a DEVMODE.

  **Note:** If you provide your own DEVMODE, call `DocumentProperties()` to populate it or display the print dialog box.
- `pDC` (`HDC`): (Optional) Allows you to pass a DeviceContext structure.

  If you do not pass in your own DeviceContext structure PDFL creates its own.

  **Note:** you should provide your own DeviceContext only if you register to the PDPageDirectDrawToPlatform notification and wish to draw extra content to a page after PDFL has finished printing it.
- `userCallbacks` ([`PDFLPrintUserCallbacks`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserCallbacks)): Optional pointer to structure containing pointers to user callback functions
- `forceGDIPrint` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Optional value used for Postscript printing that allows printing with the code path used by the nonps printer instead of the code used by the PS printer
- `hDC` (`HDC`): Optional device handle used to allow the device handle used in the user's sample with StartDoc and EndDoc to be passed to the library to be used in StartPage and EndPage.
- `PPDFeatures` (`PPDFeaturesP`): Optional pointer to a structure where you can add additional PPD features like staple, input tray, output tray, duplex mode etc. for output to PostScript file. For more details, see `_t_PPDFeatures`
- `ppdFileName` ([`ASText`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASText)): (Optional)The name and path of the PPD file from which the PPD features will be emitted to a PostScript file. Use this field alongwith `PPDFeaturesP PPDFeatures`. For more details, see `_t_PPDFeatures`.
- `progressProc` ([`PDFLPrintProgressProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintProgressProc))
- `progressClientData` (`void *`)
- `useCustomPaperSize` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Force the use of the paper size provided in the [`PDFLPrintUserParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRec) paperWidth and paperHeight parameters instead of searching for best fit size provided by printer. [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec) setPageSize must also be set for this option.
- `oneJobwithNCopies` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool))

#### PDPrintClient

```cpp
typedef struct _t_PDPrintClient* PDPrintClient
```

Header: `PDFLExpT.h:1556`

A data structure used by PDDocPrintPages(). It contains methods to be implemented by the client. Unless otherwise indicated, methods may be `NULL`, indicating that they do nothing. The methods are called in the order listed in this structure.

#### PDPrintClientRec

```cpp
struct PDPrintClientRec
```

Header: `PDFLExpT.h:1895`

A data structure used by PDDocPrintPages. It contains methods to be implemented by the client. Unless otherwise indicated, methods may be `NULL`, indicating that they do nothing. The methods are called in the order listed in this structure.

**Fields**

- `size` ([`ASSize_t`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASSize_t)): The size of the structure.
- `pdDoc` ([`PDDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDDoc)): The document to print.
- `params` ([`PDPrintParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParams)): A control structure describing how to print the document.
- `DocBegin` (`void(*)`): (Optional) A callback for PDPrintClient. Begin processing a document for printing.
- `DocSetup` (`ASBool(*)`): (Optional) A callback for PDPrintClient. Set up a document for printing.
- `EndSetup` (`void(*)`): (Optional) A callback for PDPrintClient. End the setup for printing a document.

  One task that might be performed here is to broadcast a notification for each range of pages that will be printed, as in this pseudo code:

  `for i = 0 to numRanges-1 ... {`

  `NOTIFY( PDDocWillPrintPages)(doc, fromPage, toPage, psLevel, binaryOK);`

  `for pageNum = ranges[ i]-> startPage to ranges[ i]-> lastPage ...`

  `}`
- `NotifyNewPage` (`void(*)`): (Optional) A callback for PDPrintClient. It is called once for each page printed.

  A client can use this notification to update the page number in the message pane, for example.
- `PageBegin` (`void(*)`): (Optional) A callback for PDPrintClient. It is called before a page begins printing.
- `BeforePageSetup` (`ASBool(*)`): (Optional) A callback for PDPrintClient. It is called before a page is printed to set it up. (And before the %BeginpageSetup DCS)
- `PageSetup` (`ASBool(*)`): (Optional) A callback for PDPrintClient. It is called before a page is printed to set it up.
- `PageSetupPostResource` (`void(*)`): A callback for PDPrintClient. `PageSetupPostResource()` is called from PDPrintPageBegin() after the resource tree has been processed (all fonts and other resources emitted into the PostScript stream).
- `PageCleanup` (`void(*)`): (Optional) A callback for PDPrintClient. It mirrors PageSetup; PageCleanup is called before we clean our dictionaries.
- `EmitPageContents` (`void(*)`): (Optional) A callback for PDPrintClient. It emits the page contents for printing. It broadcasts a notification that the page has been printed:

  `NOTIFY( PDDocDidPrintPage) (doc, page, stm, error)`

  There is a default callback for PostScript printing.
- `PageEnd` (`void(*)`): (Optional) A callback for PDPrintClient. It is called after a page has printed. It broadcasts a notification that the page has printed:

  `NOTIFY( PDDocDidPrintPages) (doc, fromPage, toPage, error);`
- `DocEnd` (`void(*)`): In order for the Mac platform to emit color comments, the controller needs to be passed to the `DocEnd` client callback. The client then calls PDPrintFillColorUsageBuf() to fill in the data for the injection point used by the print manager to emit the custom color comments.

  (Optional) A callback for PDPrintClient. It ends processing a document for printing.
- `GetFontEncodingMethod` ([`PDPrintGetFontEncodingMethodProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintGetFontEncodingMethodProc)): This routine is called to ask the client what encoding method should be used for the font. This cannot be `NULL` for PostScript printing.
- `GetFontVMUsage` (`ASInt32(*)`): (Optional) A callback for PDPrintClient. It asks the client what the VM usage is for the font.
- `EmitPSFontBegin` (`void(*)`): (Optional) A callback for PDPrintClient. It is called before a font is emitted (outside DSC comments).
- `EmitPSFontEnd` (`void(*)`): (Optional) A callback for PDPrintClient. It is called after a font is emitted (outside DSC comments).
- `EmitPSFontEncodingBegin` (`ASBool(*)`): (Optional) A callback for PDPrintClient. It is called before a font encoding is emitted.
- `EmitPSFontEncodingEnd` (`void(*)`): (Optional) A callback for PDPrintClient. It is called after a font encoding is emitted.
- `EmitPSResourceBegin` (`void(*)`): (Optional) A callback for PDPrintClient. It is called before a PostScript resource is emitted.
- `EmitPSResourceEnd` (`void(*)`): (Optional) A callback for PDPrintClient. It is called after a PostScript resource is emitted.
- `ShouldCancel` (`ASBool(*)`): A callback for PDPrintClient. `ShouldCancel` is called at least once per page. It should return `true` if the print job should be cancelled (typically, the user hit a key combination to cancel printing).
- `CancelPrintJob` (`ASBool(*)`): A callback for PDPrintClient. `CancelPrintJob` is called to actually cause the print job to be cancelled. It should stop further printing and preferably should remove the incomplete print job.
- `FlushString` (`ASInt32(*)`): (Required) A callback for PDPrintClient. It is called when the ASStm buffer is full. Buffered data should be sent to the printer, driver, file, or other destination. Not used for non-PostScript printing.
- `EmitPrologString` (`ASInt32(*)`): (Optional) A callback for PDPrintClient. It emits a prolog string.

  It defaults to a method that calls `FlushString()`.
- `CanEmitFont` ([`PDPrintCanEmitFontProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintCanEmitFontProc)): This routine is called to determine whether a font can be emitted into the print job. This is used to determine whether a font is a document-included resource. It is only used for PostScript.

  OPTIONAL: The default is to assume that any font can be emitted.
- `EmitFont` ([`PDPrintEmitFontProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintEmitFontProc)): REQUIRED. This routine is called to emit a font. For Type0 fonts that require font substition, this routine may emit multiple font definitions. The caller can get the list of fonts used by calling GetFontComponentList().
- `UndefineFont` (`ASBool(*)`): (Required) `UndefineFont()` is called to remove the font from the list of fonts that have been downloaded and to undefine the font from PostScript VM. It may be called during a page, at the end of the page, or between pages. After this routine is called, if the font is required again, the `EmitFont()` routine will be called.
- `EmitFontProcSet` (`ASBool(*)`): (Optional) A callback for PDPrintClient. EmitFontProcSet() is
  called while emitting the document prolog. It should emit
  any procsets required to download the font. The routine
  will be called once for each font in the document. However,
  each procset only needs to be downloaded once per document.

  @param stm IN/OUT The stream where the procset should be written.

  @param fontP IN/OUT The PDFont for the font.
  @param printClient IN/OUT The PDPrintClient from which this is
  invoked.
  @return `false` if the PDPrintClient `fontDownloadContext` is not
  specified; `true` otherwise.
- `EmitGlyphsIncr` (`ASBool(*)`): A callback for PDPrintClient. It emits glyphs incrementally.
- `GetComponentFontList` (`void(*)`): (Required) A callback for PDPrintClient. `GetComponentFontList()` is called to get the list of component font names used for substitution. For fonts that do not require substitution or are substituted by only one font, the list returned should only have one element. For a Type 0 font that requires several fonts for font substitution, the list will have multiple fonts. The font names returned are the names used by the font definitions downloaded to PostScript. The font definitions themselves are downloaded by a call to the `EmitFont()` routine.
- `FlushIncrGlyphList` (`void(*)`): (Required) A callback for PDPrintClient. `FlushIncrGlyphList()` is called to flush the list of glyphs that have been incrementally download since the calls to EmitFont or the last call of FlushIncrGlyphList. This routine will be called if the caller generates PostScript code that would flush glyphs procedures that have been downloaded to the PostScript interpreter. For example, if at the beginning of each page, a save is executed and then at the end of a page, a restore is executed, any glyph procedures downloaded after the beginning of the page will be removed when the restore is executed.

  The call to `FlushIncrGlyphList()` indicates that all the glyphs need to be redownloaded, by calls to `EmitGlyphsIncr()`.
- `OPIhandler` (`ASBool(*)`): (Optional) A callback for PDPrintClient. If this method is supplied, then during PostScript printing, it will be called when a form or image containing an OPI dictionary is encountered. If it returns `true`, then the client is presumed to have taken care of the entire form or image, and PDFL will emit nothing. Otherwise, PDFL will generate OPI comments based on the dictionary.

  **Note:** The method may not store the `OPIdict` pointer or any pointers within it.
- `DataSourceString` (`ASUns32(*)`): (Optional) If this method is supplied, and the `emitExternalStreamRef` parameter in the [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec) is `true`, then during PostScript printing this method will be called when an external stream is encountered. If the method is not supplied, or if it returns `NULL`, then the simple path name will be written as the `DataSource` for the stream; otherwise, the returned string will be written as the `DataSource`.

  The DataSource is used thus:

  `/ DataSource (xxxxx) (r) file`

  where `xxxxx` is the returned string or the simple path name.

  **Note:** The method may not store the `PDFileSpec` pointer or any pointers (strings) within it.
- `sequentialPageNum` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The current page, starting at `1`.
- `clientData` (`void *`): Data for the client's use. This data is passed to the `OPIhandler` and `DataSourceString` methods.
- `fontDownloadContext` (`void *`): For the client's use to hold a font download context for the EmitFontProcSet.
- `vmUsed` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The amount of virtual memory used. It is incremented by routines that download fonts and resources.
- `ProgressMonitor` (`ASBool(*)`): Optional. If `ProgressMonitor`, then during PostScript printing, it will be called when page uses the flattener to print.
- `progMonClientData` (`void *`)
- `GetTimeDate` (`void(*)`): For use in the Exchange product, when emitting the time/date of the print job (the `PageInfo` mark for separations), this callback takes an ASText object and the client side fills in the `timeDate` with a localized representation of the current date and time. This could be called from the Tiling code as well.
- `seps` (`PDHostSepsSpec`): Pro product only. @product_exclude RDR @product_exclude STD
- `GetClientPaperSize` (`void(*)`): For internal use of PDFL. SDK clients must set this parameter to `NULL`.
- `outStm` ([`ASStm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASStm)): Output stream for creating postscript file.

#### PDPrintController

```cpp
typedef struct _t_PDPrintController* PDPrintController
```

Header: `PDFLExpT.h:1557`

#### PDPrintFontArrayP

```cpp
typedef  struct PDPrintFontArray * PDPrintFontArrayP
```

Header: `PDFLExpT.h:274`

#### PDPrintFontP

```cpp
typedef  struct PDPrintFontRec * PDPrintFontP
```

Header: `PDFLExpT.h:257`

**Used in:** [`PDPrintFontArray`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintFontArray)

#### PDPrintFontRec

```cpp
struct PDPrintFontRec
```

Header: `PDFLExpT.h:226`

**Fields**

- `name` (`const char *`): The font name.
- `encoding` (`const char *`): The font encoding.
- `cidFontName` (`const char *`): CID font name.
- `style` ([`ASInt16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt16)): Gothic or Mincho.
- `syntheticStyle` ([`PDFontStyle`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontStyle)): Roman, Italic, Bold, or BoldItalic.
- `used` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Set to `true` if glyphs from this component are used.
- `emitted` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Set to `true` if this component is emmitted.
- `baseLineAdj` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Baseline adjustment.
- `flags` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Flags bits.

#### PDPrintParams

```cpp
typedef  struct PDPrintParamsRec * PDPrintParams
```

Header: `PDFLExpT.h:1024`

**Used in:** [`PDFLPrintUserParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRec), [`PDFLPrintUserParamsRecEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintUserParamsRecEx), [`PDPrintClientRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintClientRec)

#### PDPrintParamsRec

```cpp
struct PDPrintParamsRec
```

Header: `PDFLExpT.h:499`

A data structure indicating how a document should be printed. **Note:** All fields in the PDPrintParams structure apply to PostScript file creation. PDPrintParams are ignored when printing to non-PostScript devices.

**Fields**

- `size` ([`ASSize_t`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASSize_t)): The size of the data structure. It must be set to `sizeof(PDPrintParams)`.
- `ranges` ([`PDPageRange *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageRange)): Ranges of pages to print. Use `NULL` to print the entire document.
- `numRanges` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The number of ranges of pages to print in ranges. The default value is `0`.
- `shrinkToFit` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` if the page is scaled to fit the printer page size, `false` otherwise. This field overrides the scale. The default value is `false`.
- `expandToFit` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` if small pages are to be scaled up to fit the printer page size, `false` otherwise. It overrides the scale. The default value is `false`.
- `rotateAndCenter` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` if the page is to be rotated to fit the printer's orientation and centered in the printer's page size; `false` otherwise.The default value is `false`. Rotation and centering (`true`) only occur, however, if the page contents are too wide to fit on a narrow page (or vice versa) and the page contents are less than an inch smaller than the target page in one direction.
- `printWhat` ([`PDPrintWhat`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrintWhat)): Print the document, the document and comments, or document form fields only.
- `printWhatAnnot` ([`PDPrintWhatAnnot`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintWhatAnnot)): Annotation flags which modify PDPrintWhat to enable Pro product behavior.
- `emitPS` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If `true`, emit a PostScript file. The default value is `true`.
- `psLevel` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): PostScript level: `1`, `2`, or `3`. The default value is `2`.
- `outputType` ([`PDOutputType`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDOutputType)): Print PostScript or EPS with or without a preview.

  **Note:** EPS preview generation is not currently available on UNIX.
- `incBaseFonts` ([`PDInclusion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDInclusion)): Embed the base fonts. The default value is kIncludeNever.
- `incEmbeddedFonts` ([`PDInclusion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDInclusion)): Embed fonts that are embedded in the PDF file. This overrides the `incType1Fonts`, `incTrueTypeFonts`, and `incCIDFonts` fields. The default value is kIncludeOncePerDoc.
- `incType1Fonts` ([`PDInclusion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDInclusion)): Embed Type 1 fonts. The default value is kIncludeOncePerDoc.
- `incType3Fonts` ([`PDInclusion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDInclusion)): Embed Type 3 fonts. The default value is kIncludeOnEveryPage.

  **Note:** This parameter must always be set to kIncludeOnEveryPage. PDF files exist with Type 3 fonts that contain different encodings on different pages.
- `incTrueTypeFonts` ([`PDInclusion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDInclusion)): Embed TrueType fonts. The default value is kIncludeOncePerDoc.
- `incCIDFonts` ([`PDInclusion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDInclusion)): Embed CID fonts. The default value is kIncludeOncePerDoc.
- `incProcsets` ([`PDInclusion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDInclusion)): Include Procsets in the file. The default value is kIncludeOncePerDoc.

  **Note:** This is not honored anymore: its value is always `false`. Procsets are always emitted at the document level.
- `incOtherResources` ([`PDInclusion`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDInclusion)): Include all other types of resources in the file. The default value is kIncludeOncePerDoc.
- `fontPerDocVM` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The amount of VM available for font downloading at the document level. It is ignored if it is less than or equal to `0`.

  **Note:** This must be set to `0` for the toolkit; it is only used by the viewer.
- `emitShowpage` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Emit save and restore `showpage` in PostScript files. The default value is `true`.
- `emitTTFontsFirst` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Emit TrueType fonts before any other fonts. The default value is `false`.
- `setPageSize` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): (PostScript level 2 only) Set the page size on each page. Use the media box for outputting to PostScript files, use the crop box for EPS files. Default is `false`.
- `emitDSC` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Write DSC (Document Structuring Conventions) comments. The default value is `true`.

  **Note:** This is not honored anymore: its value is always `true`.
- `setupProcsets` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If procsets are included, also include init/term code. The default value is `true`.

  **Note:** This must be set to `true` for the toolkit.
- `emitColorSeps` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Emit images for Level-1 separations. The default value is `false`.

  **Note:** This will be honored only when printing to a printer.
- `binaryOK` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` if binary data is permitted in the PostScript file, `false` otherwise. It is overridden by the printer's "Output Protocol" device settings. The default value is `true`.
- `useSubFileDecode` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Add `SubFileDecode` filter to work around stream problems [`false`]. The `SubFileDecode` filter will always be emitted when you print as binary.
- `emitRawData` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` if adding no unnecessary filters when emitting image data, `false` otherwise. The default value is `true`.
- `TTasT42` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If including TrueType fonts, convert to Type 42 fonts instead of Type 1 fonts. The default value is `false`. This parameter is valid only for the Export to PS workflow and not for printing to a printer.
- `scale` (`float`): The document-wide scale factor. `100.0` = full size. The default value is `100`.
- `emitExternalStreamRef` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If an Image resource uses an external stream, emit code that points to the external file. The default value is `false`.

  **Note:** This must be set to `false`.
- `emitHalftones` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Preserve any halftone screening in the PDF file. The default value is `false`.
- `emitPSXObjects` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Emit PostScript XObjects into the PostScript stream [`false`].
- `centerCropBox` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` if CropBox output is centered on the page when the `CropBox < MediaBox`, `false` otherwise. The default value is `true`.
- `emitSeparableImagesOnly` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If emitting EPS, include only CMYK and gray images.
- `emitDeviceExtGState` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): When emitting the extended graphics state, include the device-dependent parameters (overprint, black generation, undercolor removal, transfer, halftone, halftone phase, smoothness, flatness, rendering intent) in addition to the device-independent parameters (font, line width, line cap, line join, miter limit, dash pattern). If this flag is `false`, only the device-independent parameters will be emitted. This flag overrides `emitHalftones`; if this is `false`, then halftones are not emitted. [true]
- `boundingBox` ([`ASFixedRect`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFixedRect)): If all zeroes, it is ignored. Otherwise, it is used for `%BoundingBox` DSC comment and in `centerCropBox` calculations and for `setpagedevice`. The default value is `[0 0 0 0]`.
- `useFontAliasNames` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Used when printing with system fonts. The default value is `false`.
- `emitPageRotation` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Emit a concat at the beginning of each page so that the page is properly rotated. Used when emitting EPS. The default value is `false`.
- `reverse` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If set to `true`, reverse the order of page output.
- `tCropBox` ([`ASFixedRect *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFixedRect)): Temporary crop box to represent the selected region.
- `emitPageClip` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Emit page clip.
- `emitTransfer` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Emit transfer.
- `emitBG` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Emit black generation.
- `emitUCR` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Emit undercolor removal.
- `farEastFontOpt` ([`PDFarEastFont`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFarEastFont)): GDI to PS or download CJK fonts. `PDPDFarEastFont_Print_As_Image` will not be honored.
- `suppressCJKSubstitution` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If `true`, do not perform CJK substitution on the printer. This will work only when `farEastFontOpt` is `PDPDFarEastFont_Download_None`.
- `suppressCSA` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Do not emit CSAs for 4-component (CMYK) colors. This will take precedence over the `hostbasedCM` settings.
- `hostBased` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): For separator, do host-based color management.
- `hostBasedOutputCS` ([`ASAtom`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASAtom)): The output color space when `hostBased` color management is `true`.
- `duplex` ([`PDDuplexEnum`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDuplexEnum)): Sets the duplex mode if the device supports duplex printing. The default value is `kPDDuplexOff`.
- `doTiling` ([`PDPageTilingMode`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageTilingMode)): Determines whether to tile none, all, or only large pages.
- `tileInfo` ([`PDTileEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDTileEx)): If non-`NULL`, tiling is desired with these parameters.
- `rotate` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Enable the auto-rotating behavior from past versions of Acrobat.
- `hostBasedCM` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Do `hostBased` color management using the `destination` profile. The default is `false`, which means doing CSA generation for profiles instead of converting all colors on the host.
- `destProfile` (`char`): If `hostBasedCM` color management is `true`, use this profile. It should be the name of the profile like "U.S. Web Coated (SWOP) v2" and not the name of the file.
- `destCSAtom` ([`ASAtom`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASAtom)): An ASAtom representing the device color space (DeviceGray, DeviceRGB, and so on).
- `saveVM` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` means try to save VM when printing to PostScript.
- `doOPP` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Do the overprint preview operation.
- `suppressOPPWhenNoSpots` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): When `true`, suppress OPP for pages that do not contain spot colors
- `optimizeForSpeed` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If `true`, do it fast; `false` means PostScript code must be page-independent. If it is set to `true`, font downloads are forced from kIncludeOnEveryPage to kIncludeOncePerDoc.
- `brokenCRDs` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If `true`, do not set rendering intent in PostScript stream due to broken non-default CRDs.

  **Note:** This is not honored anymore: its value is always `false`.
- `useMaxVM` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): If `true`, store all possible resources in VM.
- `lastWidth` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Used when `setPageSize` is `true` to prevent unneeded `setpagedevice` calls.
- `lastHeight` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Used when `setPageSize` is `true` to prevent unneeded `setpagedevice` calls.
- `bitmapResolution` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): DPI for bitmaps. The default is `300`. This will only work when you set `useFullResolutionJP2KData` to `false`; it should not be less then `50`.
- `gradientResolution` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): DPI for gradients interior to the object (not edges). It can generally be lower than the `bitmapResolution`. The default is `150`.
- `transparencyQuality` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The transparency level. The range is `0-100`.
- `ocContext` ([`PDOCContext`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDOCContext)): The optional-content context to use for visibility state information, or `NULL` to use the document's current states in the default context.
- `applyOCGPrintOverrides` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Print-specific visiblity state settings are always applied from the optional-content group. applyOCGPrintOverrides is no longer honored. It is always considered as true whatever may be the value passed to it.
- `useFullResolutionJP2KData` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Determines whether to use the maximum available JPEG2000 resolution.
- `emitInRipSeps` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): When `true`, it requests that separations, one sheet per ink, be generated in the RIP (printer). It is available only in Acrobat Professional. @product_exclude RDR @product_exclude STD
- `whichMarks` ([`PDPageMarkFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageMarkFlags)): Page mark indication. It is a bit-wise `OR` of the PDPageMarkFlags values.

  It applies to print separations, which are available only in Acrobat Professional.

  @product_exclude RDR @product_exclude STD
- `westernMarksStyle` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): When `true`, use western style for page marks. It applies to print separations, which are available only in Acrobat Professional. Obsoleted by `markStyle` below. @product_exclude RDR @product_exclude STD
- `doProofing` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): When `true`, print using proofing settings.
- `proofProfile` (`char`): Description string for the proofing profile.
- `inkBlack` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Proofing settings: simulate ink black.
- `paperWhite` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Proofing settings: simulate paper white.
- `useExecForm` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): When `true`, emit `execform` calls when emitting Form XObjects.
- `flattenInfo` ([`PDFlatten`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFlatten)): A structure containing parameters that control tile flattening.
- `negative` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): When `true`, invert the plate.
- `mirrorprint` ([`ASEnum8`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASEnum8)): One of the following constants: `kPDPrintFlipNone = 0x01`
  `kPDPrintFlipX = 0x02`
  `kPDPrintFlipY = 0x04`
  `kPDPrintFlipXY = 0x08`

  Mirroring is done in the PostScript output stream.
- `numCollatedCopies` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Enables collation for the viewer.
- `emitFlatness` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Honors the flatness settings over `gstate` flatness.
- `trapType` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The trap type:

  • `kPDPrintTrapNone = 0x01`.

  • `kPDPrintTrapOnHost = 0x02` is not supported in Acrobat 7.

  • `kPDPrintTrapInRIP = 0x04`.
- `TTasCIDT2` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): This parameter is obsolete from PDFL 10.0. When this is set, emit TrueType fonts as CIDType2 instead of as CIDFontType0.
- `markStyle` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Specify the style to use for page marks. The `PDPrintMarkStyles` enum contains possible styles. It applies to print separations, which are available only in Acrobat Pro. @product_exclude RDR @product_exclude STD
- `lineWidth` (`float`): The line weight to use for printer marks.
- `macQDPrinter` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` if the printer is a Mac QuickDraw printer, `false` otherwise.
- `customMarksFileName` ([`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASPathName)): If `markStyle == -1`, this should be a valid file name pointing to a valid .mrk file for custom printer marks.
- `pAGMPI` (`void *`)
- `disableFlattening` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Disable flattening of the PDF file; transparency data will be ignored. Also note the preprocessor define below.
- `doNotDownloadFauxFonts` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool))
- `grayToK` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): convert Gray to K (any Gray to CMYK (0,0,0,K))
- `suppressSnapToDevice` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool))
- `suppressElement` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32))
- `maxFlatSeconds` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32))
- `testTilingMode` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): Provide a means for all 4 page rotations to be tiling-exercised at once.

#### PDPrintStr

```cpp
struct PDPrintStr
```

Header: `PDFLExpT.h:179`

A structure for controlling the printing of glyphs.

**Fields**

- `str` (`char *`): The string.
- `len` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Byte length.
- `displacements` ([`ASRealPoint *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASRealPoint)): Displacements.
- `numGlyphs` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The number of glyphs.
- `flags` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): Flags. Reserved for internal use.

#### PDTileEx

```cpp
typedef  struct PDTileRecEx * PDTileEx
```

Header: `PDFLExpT.h:443`

**Used in:** [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec)

#### TIFFASCIITagList

```cpp
struct TIFFASCIITagList
```

Header: `PDFLExpT.h:1609`

TIFF ASCII tags.

**Fields**

- `tagNumber` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The tag number
- `tagText` ([`TextList *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TextList)): Tag text list.
- `next` (`struct _t_TIFFASCIITagList *`): For OPI 1.3, the `TextList` contains only one element.

**Used in:** [`OPI13dict`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#OPI13dict), [`OPI20dict`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#OPI20dict)

#### TextList

```cpp
struct TextList
```

Header: `PDFLExpT.h:1601`

List structure used in `TIFFASCIITagList`.

**Fields**

- `name` (`char *`): Tag name.
- `next` (`struct _t_textList *`): Pointer to next list element.

**Used in:** [`TIFFASCIITagList`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#TIFFASCIITagList)

### Enums (8)

#### ALDImageColorType

Header: `PDFLExpT.h:1589`

OPI 1.3 color type information.

**Values**

- `ALDImageColorType_Spot = 0`: Spot color type.
- `ALDImageColorType_Process = 1`: Process color type.
- `ALDImageColorType_Separation = 2`: Separation color type.
- `ALDImageColorType_Intrinsic = 3`: Intrinsic color type.

**Used in:** [`OPI13dict`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#OPI13dict)

#### ImageInk

Header: `PDFLExpT.h:1671`

OPI 2.0 image ink information.

**Values**

- `ImageInk_Registration = 0`: Image colorant registration value.
- `ImageInk_FullColor = 1`: Image colorant full color value.
- `ImageInk_Monochrome = 2`: Image colorant monochrome value

**Used in:** [`ImageInks`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#ImageInks)

#### OPIversion

Header: `PDFLExpT.h:1579`

OPI Types for PostScript printing.

**Values**

- `OPIv13 = 0`: OPI version 1.3.
- `OPIv20 = 1`: OPI version 2.0.

**Used in:** [`OPIdict`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#OPIdict)

#### PDFLPrintProgressMarker

Header: `PDFLPrint.h:74`

An enumeration of the various stages that might be involved in printing a PDF. For use with PDFLPrintProgressProc.

**Values**

- `kPDFLPrintProg_PopLastProgress = 0`
- `kPDFLPrintProg_PushCompilingDocumentResources = 1`
- `kPDFLPrintProg_PushCompilingPageResources = 2`
- `kPDFLPrintProg_PushStreamingDocumentFont = 3`
- `kPDFLPrintProg_PushStreamingDocumentResource = 4`
- `kPDFLPrintProg_PushStreamingPageFont = 5`
- `kPDFLPrintProg_PushStreamingPageResource = 6`
- `kPDFLPrintProg_PushStreamingPageContent = 7`
- `kPDFLPrintProg_PushStreamingPageEpilogue = 8`
- `kPDFLPrintProg_PushStreamingDocumentEpilogue = 9`
- `kPDFLPrintProg_PushStreamingDocumentProcset = 10`
- `kPDFLPrintProg_PushStreamingPageSeparation = 11`
- `kPDFLPrintProg_PushStreamingPageImage = 12`
- `kPDFLPrintProg_PushStreamingPageImageOPI = 13`
- `kPDFLPrintProg_PushStreamingPageCSA = 14`
- `kPDFLPrintProg_PushStreamingPageCRD = 15`
- `kPDFLPrintProg_PushStreamingPageGradient = 16`
- `kPDFLPrintProg_PushOnHostTrapBeginPage = 17`
- `kPDFLPrintProg_SetOnHostTrapProgressPercent = 18`
- `kPDFLPrintProg_StreamingPageImageProgressPercent = 19`
- `kPDFLPrintProg_PushBeginStreamingTraps = 20`
- `kPDFLPrintProg_SetStreamingTrapPercent = 21`

#### PDPrintFontArrayFlags

Header: `PDFLExpT.h:221`

Font array.

**Values**

- `kPDSingleByteFont = 0x0001`: A fLag to indicate that the font uses a single byte encoding.

**See also:** [`PDPrintFontArray`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintFontArray)

#### PDPrintSuppressEnum

Header: `PDFLExpT.h:1027`

**Values**

- `kPRPrintSuppressXMP = 1`

#### PDPrintTrapTypes

Header: `PDFLExpT.h:491`

**Values**

- `kPDPrintTrapNone = 0x01`
- `kPDPrintTrapInRIP = 0x04`

#### PDPrintWhatFlipOptions

Header: `PDFLExpT.h:483`

**Values**

- `kPDPrintFlipNone = 0x01`
- `kPDPrintFlipX = 0x02`
- `kPDPrintFlipY = 0x04`
- `kPDPrintFlipXY = 0x08`

### Definitions (2)

#### kPDPrintUseCropBox

Header: `PDFLPrint.h:1120`

Value: `((ASUns16)~0 - 1)`

#### kPDPrintUseMediaBox

Header: `PDFLPrint.h:1113`

Value: `((ASUns16)~0)`

## PDFont

### Functions (6)

#### PDFontPSEmitGlyphsIncr

```cpp
ASBool PDFontPSEmitGlyphsIncr(ASStm stm, PDFont fontP, PDPrintStrP srcStr, PDPrintStrP dstStr, ASUns32 *srcBytesUsedP, ASUns32 *dstBytesUsedP, ASUns32 *glyphCount, ASUns16 *fontIndexP, PDPrintClient printClient)
```

Header: `PDFLProcs.h:407`

Emit glyphs incrementally. This is the default `EmitGlyphsIncr` callback procedure for the PDPrintClient structure.

**Parameters**

- `stm` ([`ASStm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASStm)): The stream.
- `fontP` ([`PDFont`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDFont)): The font.
- `srcStr` ([`PDPrintStrP`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintStrP)): The source string.
- `dstStr` ([`PDPrintStrP`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintStrP)): The destination string.
- `srcBytesUsedP` ([`ASUns32 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The source bytes used.
- `dstBytesUsedP` ([`ASUns32 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The destination bytes used.
- `glyphCount` ([`ASUns32 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The number of glyphs.
- `fontIndexP` ([`ASUns16 *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASUns16)): The font index.
- `printClient` ([`PDPrintClient`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintClient)): The control structure.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)

`true` if successful, `false` otherwise.

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDocPrintPages), [`PDFontPSFlushIncrGlyphList`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontPSFlushIncrGlyphList), [`PDFontPSGetComponentFontList`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontPSGetComponentFontList)

#### PDFontPSFlushIncrGlyphList

```cpp
void PDFontPSFlushIncrGlyphList(ASStm stm, PDPrintClient printClient)
```

Header: `PDFLProcs.h:430`

Flush the incremental glyphs list from a stream. This is the default `FlushIncrGlyphList` callback procedure for the PDPrintClient structure.

**Parameters**

- `stm` ([`ASStm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASStm)): The stream.
- `printClient` ([`PDPrintClient`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintClient)): The control structure.

**Returns:** `void`

**See also:** [`PDFontPSEmitGlyphsIncr`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontPSEmitGlyphsIncr), [`PDFontPSGetComponentFontList`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontPSGetComponentFontList)

#### PDFontPSGetComponentFontList

```cpp
void PDFontPSGetComponentFontList(PDFont fontP, PDPrintFontArrayP pdFontArr, PDPrintClient printClient)
```

Header: `PDFLProcs.h:419`

Get the component font list. This is the default `GetComponentFontList` callback procedure for the PDPrintClient structure.

**Parameters**

- `fontP` ([`PDFont`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDFont)): The font.
- `pdFontArr` ([`PDPrintFontArrayP`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintFontArrayP)): The font array.
- `printClient` ([`PDPrintClient`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintClient)): The control structure.

**Returns:** `void`

**See also:** [`PDFontPSEmitGlyphsIncr`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontPSEmitGlyphsIncr), [`PDFontPSFlushIncrGlyphList`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontPSFlushIncrGlyphList)

#### PDFontStreamPS

```cpp
ASBool PDFontStreamPS(PDFont fontP, ASStm stm, PDFontDownloadContext context)
```

Header: `PDFLProcs.h:250`

Emits a font into a specified stream. The font is in a format suitable for downloading to a PostScript VM. For example, a TrueType font is converted into a Type 1 or Type 42 font. It is meant for use in the `EmitFont` callback for PDDocPrintPages().

**Parameters**

- `fontP` ([`PDFont`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDFont)): The font to emit.
- `stm` ([`ASStm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASStm)): The ASStm into which the font is emitted.
- `context` ([`PDFontDownloadContext`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontDownloadContext)): A context created by PDFontDownloadContextCreate.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)

`true` if successful, `false` otherwise.

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDocPrintPages), [`PDFontDownloadContextCreate`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontDownloadContextCreate)

#### PDFontWasExtracted

```cpp
ASBool PDFontWasExtracted(PDFont fontP)
```

Header: `PDFLProcs.h:296`

Tests whether the specified font is embedded in the PDF file and has already been extracted to display or print the file.

**Parameters**

- `fontP` ([`PDFont`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDFont)): The font to test.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)

`true` if the font is embedded in the PDF file and has been extracted, `false` otherwise.

**See also:** [`PDFontDownloadContextCreate`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontDownloadContextCreate), [`PDFontWasFauxed`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontWasFauxed)

#### PDFontWasFauxed

```cpp
ASBool PDFontWasFauxed(PDFont font)
```

Header: `PDFLProcs.h:312`

Tests whether the specified font is embedded in the PDF file or is installed in the user's system. If this is the case, the correct font can be used for display and printing. If the font is not embedded or installed, the Acrobat viewer has used a Multiple Master font to create a substitute font, called a *faux* font.

**Parameters**

- `font` ([`PDFont`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDFont)): The font to test.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)

`true` if the font has been substituted, `false` otherwise.

**See also:** [`PDFontWasExtracted`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontWasExtracted)

### Typedefs (1)

#### PDFontStyle

```cpp
typedef ASUns8 PDFontStyle
```

Header: `PDFLExpT.h:214`

**Used in:** [`PDPrintFontRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintFontRec)

### Structures (2)

#### PDPrintFontArray

```cpp
struct PDPrintFontArray
```

Header: `PDFLExpT.h:263`

An array of font pointers for use in PDFontPSGetComponentFontList.

**Fields**

- `count` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The number of fonts in `arr`.
- `usesDisplayCTFont` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): Whether to use the Display CT Font.
- `arr` ([`PDPrintFontP`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintFontP)): The font array.

#### PDPrintStrP

```cpp
typedef  struct PDPrintStr * PDPrintStrP
```

Header: `PDFLExpT.h:195`

## PDFontDownloadContext

### Functions (2)

#### PDFontDownloadContextCreate

```cpp
PDFontDownloadContext PDFontDownloadContextCreate(PDPrintClient client)
```

Header: `PDFLProcs.h:265`

Creates a font download context object. This object keeps track of the fonts downloaded during a print job and whether substitution fonts have already been downloaded. It also tracks the font download parameters, such as `binaryOK` and `'emit TrueType as Type 42'`. It is meant for use in the PDFontStreamPS() method.

**Parameters**

- `client` ([`PDPrintClient`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintClient)): The client record to pass to PDDocPrintPages().

**Returns:** [`PDFontDownloadContext`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontDownloadContext)

The newly-created context.

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDocPrintPages), [`PDFontDownloadContextDestroy`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontDownloadContextDestroy), [`PDFontStreamPS`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontStreamPS)

#### PDFontDownloadContextDestroy

```cpp
void PDFontDownloadContextDestroy(PDFontDownloadContext context)
```

Header: `PDFLProcs.h:274`

Destroys a font download context object. Call this method after PDDocPrintPages() returns.

**Parameters**

- `context` ([`PDFontDownloadContext`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontDownloadContext)): IN/OUT The context to destroy.

**Returns:** `void`

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDocPrintPages), [`PDFontDownloadContextCreate`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontDownloadContextCreate)

### Structures (1)

#### PDFontDownloadContext

```cpp
typedef struct _t_PDFontDownloadContext* PDFontDownloadContext
```

Header: `PDFLExpT.h:1802`

A resource tree for a PDPage or other PDModel object. Maintains information about the current print job and what fonts have been downloaded.

**See also:** [`PDFontDownloadContextCreate`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontDownloadContextCreate), [`PDFontDownloadContextDestroy`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFontDownloadContextDestroy)

## PDPage

### Functions (6)

#### PDPageDrawContentsPlacedToWindow

```cpp
void PDPageDrawContentsPlacedToWindow(PDPage page, void *window, void *displayContext, ASBool isDPS, ASFixedMatrix *matrix, ASFixedRect *updateRect, CancelProc cancelProc, void *cancelProcClientData)
```

Header: `PDFLProcs.h:230`

Draws the page to the window or display context. The window and display context are implementation-dependent. This method is the same as PDPageDrawContentsToWindow(), except that it raises an exception if the `pdPermCopy` (see PDPerms) permission is not set in the document.

**Parameters**

- `page` ([`PDPage`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPage)): The page to draw into window.
- `window` (`void *`): The platform window to which to render.
  On Windows, the window is an `HWND`.
- `displayContext` (`void *`): The platform display context to
  which to render. On Windows, `displayContext` is an `HDC`.`false`.
- `isDPS` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool))
- `matrix` ([`ASFixedMatrix *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFixedMatrix)): A pointer to the matrix to concatenate onto
  the default page matrix. It is useful for converting from
  page to window coordinates and for scaling.
- `updateRect` ([`ASFixedRect *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFixedRect)): A pointer to the rectangle to draw, defined
  in user space coordinates. Any objects outside of `updateRect`
  will not be drawn. All objects are drawn if `updateRect` is
  `NULL`.
- `cancelProc` ([`CancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#CancelProc)): A method called to check whether drawing
  should be cancelled. If the method returns `true`, drawing
  is stopped, nothing is erased, and the window contains whatever
  was drawn up to the current state.
- `cancelProcClientData` (`void *`): A pointer to user-supplied data to
  pass to `cancelProc` each time it is called. It should be `NULL` if
  `cancelProc` is `NULL`.

  **Note:** Platform: ((!MAC_PLATFORM || !AS_ARCH_64BIT)) && ((!MAC_PLATFORM))

**Returns:** `void`

**Exceptions**

- `pdErrOpNotPermitted`: is raised if the `pdPermCopy` permission in PDPermReqObj for the document is not set.

**See also:** [`PDPageDrawContentsToWindow`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindow)

#### PDPageDrawContentsPlacedWithParams

```cpp
void PDPageDrawContentsPlacedWithParams(PDPage page, PDDrawParams params)
```

Header: `PDFLProcs.h:522`

Draws the page to the window or display context. The window and display context are implementation-dependent. This method is the same as PDPageDrawContentsToWindow(), except that it raises an exception if the `pdPermCopy` (see PDPerms) permission is not set in the document. This method is also like PDPageDrawContentsPlacedToWindow(), only passing in a PDDrawParams structure which lets the clients specify their own PDOCContext. **Note:** Platform: ((!MAC_PLATFORM || !AS_ARCH_64BIT)) && ((!MAC_PLATFORM))

**Parameters**

- `page` ([`PDPage`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPage)): The page to render.
- `params` (`PDDrawParams`): Allows clients to specify their own PDOCContext.

**Returns:** `void`

**Exceptions**

- `pdErrOpNotPermitted`: is raised if the `pdPermCopy` permission in PDPermReqObj is not set.

**See also:** [`PDPageDrawContentsToWindow`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindow)

#### PDPageDrawContentsToMemory

```cpp
ASInt32 PDPageDrawContentsToMemory(PDPage page, ASUns32 flags, ASFixedMatrix *matrix, ASFixedRect *updateRect, ASUns32 smoothFlags, ASAtom csAtom, ASInt32 bpc, ASFixedRect *destRect, char *buffer, ASInt32 bufferSize, CancelProc cancelProc, void *cancelProcData)
```

Header: `PDFLProcs.h:499`

Superseded by PDPageDrawContentsToMemoryEx() in Acrobat 10.0. Renders a page to memory. The width of the image is calculated as follows: `width = abs(ASFixedRoundToInt16(destRect.right) - ASFixedRoundToInt16(destRect.left)); width = ((((width * bpc * nComps)+31) / 32) * 4) * 8 / (bpc * nComps); nComps = 1 for DeviceGray, 3 for DeviceRGB, 4 for DeviceCMYK bpc = bits per component`

**Parameters**

- `page` ([`PDPage`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPage)): The page to render.
- `flags` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): A bit field of PDPageDrawFlags. It must be an
  `OR` of the following flags:

  FlagDescription
  kPDPageDoLazyEraseIf set, it erases the bitmap if the first object drawn does not cover the page's entire crop box.
  kPDPageUseAnnotFacesIf set, it draws annotations that have a default face, such as the visible fields in an Acrobat form. Text and link annotations are not drawn.

  kPDPageIsPrinting — If set, then form annotations are rendered as if they are
  being printed. This means that form fields marked as 'Hidden but printable' are rendered, but fields marked as 'Visible but doesn't print' will not be rendered. If it is not set, then form annotations are rendered as if they are being viewed. This means that form fields marked as 'Hidden but printable' are not rendered, but fields marked as 'Visible but doesn't print' will be.
- `matrix` ([`ASFixedMatrix *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFixedMatrix)): A pointer to the matrix to be concatenated onto the default page matrix. It must not be `NULL`.
- `updateRect` ([`ASFixedRect *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFixedRect)): A pointer to the rectangle to draw, defined in user space coordinates. Any objects outside of `updateRect` will not be drawn. All objects are drawn if `updateRect` is `NULL`.
- `smoothFlags` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): A bit field of PDPageDrawSmoothFlags(). It must be an `OR` of the following flags:

  • kPDPageDrawSmoothText

  • kPDPageDrawSmoothLineArt

  • kPDPageDrawSmoothImage

  • kPDPageDrawSmoothBicubicImage

  • kPDPageImageResampleBicubic

  • kPDPageImageResampleLinear

  • kPDPageImageAntiAlias

  • kPDPageDrawSmoothAATextDDR

  • kPDPageDrawSmoothAATextPreview
- `csAtom` ([`ASAtom`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASAtom)): The color space in which the bitmap data is represented. It must be one of DeviceGray, DeviceRGB, or DeviceCMYK.
- `bpc` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The number of bits per color component in the bitmap data. `8` is the only valid value for DeviceCMYK and DeviceRGB color spaces. `1` and `8` are valid for DeviceGray.
- `destRect` ([`ASFixedRect *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFixedRect)): A pointer to the rectangle of the bitmap. It is defined in device space coordinates. It must not be `NULL`.
- `buffer` (`char *`): A pointer to the bitmap data. If it is `NULL`, this function returns the size of the buffer needed for the bitmap.
- `bufferSize` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The size of the buffer.
- `cancelProc` ([`CancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#CancelProc)): A method to call to check whether drawing should be cancelled. If the method returns `true`, drawing is stopped, nothing is erased, and the buffer contains whatever was drawn up to the current state.
- `cancelProcData` (`void *`): User-supplied data to pass to `cancelProc` each time it is called.

**Returns:** [`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)

The size of the bitmap in bytes.

**See also:** [`PDPageDrawContentsPlacedWithParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsPlacedWithParams), [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx)

#### PDPageDrawContentsToMemoryEx

```cpp
ASUns32 PDPageDrawContentsToMemoryEx(PDPage page, ASCab flags, ASDoubleMatrix *matrix, ASDoubleRect *updateRect, ASAtom csAtom, ASInt32 bpc, ASDoubleRect *destRect, char *buffer, ASUns32 bufferSize, CancelProc cancelProc, void *cancelProcData)
```

Header: `PDFLProcs.h:931`

Supersedes PDPageDrawContentsToMemory() in Acrobat 10.0. Renders a page to memory. It uses double precision input parameters. The width of the image is calculated as follows: `width = abs(ROUND(destRect.right) - ROUND(destRect.left));` `width = ((((width * bpc * nComps)+31) / 32) * 4) * 8 / (bpc * nComps);` `nComps = 1 for DeviceGray, 3 for DeviceRGB, 4 for DeviceCMYK` `bpc = bits per component`  where, ROUND() rounds off double precision values to nearest Int32 value.

**Parameters**

- `page` ([`PDPage`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPage)): The page to render.
- `flags` ([`ASCab`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASCab)): ASCab used for passing PDPageDrawFlagsStr and PDPageDrawSmoothFlagsStr.
- `matrix` ([`ASDoubleMatrix *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASDoubleMatrix)): A pointer to double matrix to be concatenated onto the default page matrix. It must not be `NULL`.
- `updateRect` ([`ASDoubleRect *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASDoubleRect)): A pointer to the double rectangle to draw, defined in user space coordinates.
- `csAtom` ([`ASAtom`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASAtom)): The color space in which the bitmap data is represented.
- `bpc` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt32)): The number of bits per color component in the bitmap data.
- `destRect` ([`ASDoubleRect *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASDoubleRect)): A pointer to double rectangle of the bitmap. It is defined in device space coordinates. It must not be `NULL`.
- `buffer` (`char *`): A pointer to the bitmap data. If it is `NULL`, this function returns the size of the buffer needed for the bitmap.
- `bufferSize` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The size of the buffer.
- `cancelProc` ([`CancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#CancelProc)): A method to call to check whether drawing should be cancelled.
- `cancelProcData` (`void *`): User-supplied data to pass to `cancelProc` each time it is called.

**Returns:** [`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)

The size of the bitmap in bytes.

**See also:** [`PDPageDrawContentsToMemory`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemory), [`PDPageDrawContentsPlacedWithParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsPlacedWithParams)

#### PDPageEmitPSOrient

```cpp
void PDPageEmitPSOrient(PDPage pdPage, ASInt16 paperHeight, ASInt16 paperWidth, ASStm stm, PDPrintParams params)
```

Header: `PDFLProcs.h:193`

**Note:** Obsolete in PDF Library 6.0. Do not use.

**Parameters**

- `pdPage` ([`PDPage`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPage))
- `paperHeight` ([`ASInt16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt16))
- `paperWidth` ([`ASInt16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt16))
- `stm` ([`ASStm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASStm))
- `params` ([`PDPrintParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParams))

**Returns:** `void`

**See also:** [`PDFLPrintDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFLPrintDoc), [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDDocPrintPages)

#### PDPageGetSize

```cpp
void PDPageGetSize(PDPage page, ASFixed *width, ASFixed *height)
```

Header: `PDFLProcs.h:284`

Returns the width and height of the page, which could be rotated or defaulted.

**Parameters**

- `page` ([`PDPage`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPage)): The page whose size is being obtained.
- `width` ([`ASFixed *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFixed)): (Filled by the method) The width of the page.
- `height` ([`ASFixed *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFixed)): (Filled by the method) The height of the page.

**Returns:** `void`

### Typedefs (4)

#### PDPageDrawFlags

```cpp
typedef ASUns32 PDPageDrawFlags
```

Header: `PDFLExpT.h:1162`

#### PDPageDrawSmoothFlags

```cpp
typedef ASUns32 PDPageDrawSmoothFlags
```

Header: `PDFLExpT.h:1450`

#### PDPageMarkFlags

```cpp
typedef ASUns32 PDPageMarkFlags
```

Header: `PDFLExpT.h:472`

**Used in:** [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec)

#### PDPageTilingMode

```cpp
typedef ASInt16 PDPageTilingMode
```

Header: `PDFLExpT.h:302`

**Used in:** [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec)

### Definitions (38)

#### kPDPageBlendingProfileValueStr

Header: `PDFLExpT.h:1351`

Value: `"BlendingProfileDesc"`

Takes ASext as input. If set we use this profile as blending profile. kPDPageDisplayOverPrintPreviewStr must be set for this to get honored.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageDirectlyImposedStr

Header: `PDFLExpT.h:1234`

Value: `"DirectlyImposed"`

Directly imposed page.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageDisplayOverPrintPreviewStr

Header: `PDFLExpT.h:1216`

Value: `"DisplayOverPrintPreview"`

Display overprint preview.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageDoLazyEraseStr

Header: `PDFLExpT.h:1179`

Value: `"DoLazyErase"`

Const strings used as ASCab keys when passing PDPageDrawFlags. These are valid only for calls to PDPageDrawContentsToMemoryEx and PDPageDrawContentsToWindowEx2.

**See also:** [`PDPageDrawSmoothFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawSmoothFlags), [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), `PDPageDrawContentsToWindowEx2 Erase the page while rendering only as needed.`, [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageDoNotDownloadFontsStr

Header: `PDFLExpT.h:1356`

Value: `"DL_DoNotDownloadFonts"`

#### kPDPageDoNotSubstituteWorkingSpacesStr

Header: `PDFLExpT.h:1297`

Value: `"DoNotSubstituteWorkingSpaces"`

Do not substitute working spaces.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageDrawSmoothAATextDDRStr

Header: `PDFLExpT.h:1475`

Value: `"SmoothAATextDDR"`

#### kPDPageDrawSmoothAATextPreviewStr

Header: `PDFLExpT.h:1476`

Value: `"SmoothAATextPreview"`

#### kPDPageDrawSmoothBicubicImageStr

Header: `PDFLExpT.h:1492`

Value: `"SmoothImageUsingBicubicResampling"`

Draw smooth image using bicubic resampling. This option can have performance overhead.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawSmoothFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawSmoothFlags)

#### kPDPageDrawSmoothImageStr

Header: `PDFLExpT.h:1484`

Value: `"SmoothImage"`

Draw smooth image.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawSmoothFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawSmoothFlags)

#### kPDPageDrawSmoothLineArtStr

Header: `PDFLExpT.h:1472`

Value: `"SmoothLineArt"`

Draw smooth line art.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawSmoothFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawSmoothFlags)

#### kPDPageDrawSmoothTextStr

Header: `PDFLExpT.h:1458`

Value: `"SmoothText"`

Draw smooth text.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawSmoothFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawSmoothFlags)

#### kPDPageEmitPageGroupStr

Header: `PDFLExpT.h:1252`

Value: `"EmitPageGroup"`

Emit a page group.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageForceGDIPortStr

Header: `PDFLExpT.h:1353`

Value: `"DL_ForceGDIPort"`

#### kPDPageIgnoreIsolatedAndKnockoutTransparencyGroupStr

Header: `PDFLExpT.h:1188`

Value: `"IgnoreIsolatedAndKnockoutTransparencyGroup"`

Ignore Isolated and Knockout transparency at page boundary.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageImageAntiAliasStr

Header: `PDFLExpT.h:1464`

Value: `"ImageAntiAlias"`

#### kPDPageImageResampleBicubicStr

Header: `PDFLExpT.h:1460`

Value: `"ImageResampleBicubic"`

#### kPDPageImageResampleLinearStr

Header: `PDFLExpT.h:1462`

Value: `"ImageResampleLinear"`

#### kPDPageInvertedGrayscaleStr

Header: `PDFLExpT.h:1314`

Value: `"InvertedGrayscale"`

#### kPDPageIsPSPrintingStr

Header: `PDFLExpT.h:1243`

Value: `"IsPSPrinting"`

PostScript printing.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageIsPrintPreviewingStr

Header: `PDFLExpT.h:1358`

Value: `"DL_IsPrintPreviewing"`

#### kPDPageIsPrintingStr

Header: `PDFLExpT.h:1207`

Value: `"IsPrinting"`

The page is being printed.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageNoDitherStr

Header: `PDFLExpT.h:1363`

Value: `"NoDither"`

#### kPDPagePassMetadatatoAGMPortStr

Header: `PDFLExpT.h:1279`

Value: `"PassMetadatatoAGMPort"`

Pass metadata to AGM port.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPagePassOCtoAGMPortStr

Header: `PDFLExpT.h:1288`

Value: `"PassOCtoAGMPort"`

Pass optional content to AGM port.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPagePassOPItoAGMPortStr

Header: `PDFLExpT.h:1270`

Value: `"PassOPItoAGMPort"`

Pass open prepress interface (OPI) to AGM port.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPagePreservePrimariesKStr

Header: `PDFLExpT.h:1359`

Value: `"DL_PreservePrimariesK"`

#### kPDPageSuppressRasterAlphaStr

Header: `PDFLExpT.h:1322`

Value: `"SuppressRasterAlpha"`

Suppress raster alpha.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags)

#### kPDPageSwapComponentsStr

Header: `PDFLExpT.h:1308`

Value: `"SwapComponents"`

Render colors in Swapped color vs the normal case, which is helpful for specialized scenarios where the output is expected to be in such an order. For DeviceRGB, this means BGR rather than RGB. For DeviceCMYK, this means KYMC rather than CMYK.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageThreadIPParseStr

Header: `PDFLExpT.h:1366`

Value: `"ThreadParse"`

#### kPDPageUseAnnotFacesStr

Header: `PDFLExpT.h:1198`

Value: `"UseAnnotFaces"`

Draw annotation appearances.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageUsePreciseColorConvStr

Header: `PDFLExpT.h:1354`

Value: `"DL_UsePreciseColorConv"`

#### kPDPageUsePrinterMarkAnnotsStr

Header: `PDFLExpT.h:1261`

Value: `"UsePrinterMarkAnnots"`

User printer's mark annotations.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageUseSignatureAnnotsOnlyStr

Header: `PDFLExpT.h:1355`

Value: `"DL_UseSignatureAnnotsOnly"`

#### kPDPageUseStampAnnotsOnlyStr

Header: `PDFLExpT.h:1341`

Value: `"UseStampAnnotsOnly"`

If set, only consider Stamp annotations. This overrides kPDPageUseAnnotFaces.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageUseTrapAnnotsStr

Header: `PDFLExpT.h:1225`

Value: `"UseTrapAnnots"`

Use trap network annotations.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageWorkingSpacesOnlyForChangeStr

Header: `PDFLExpT.h:1332`

Value: `"WorkingSpacesOnlyForChange"`

If this is set, only use a working space instead of a device space if the process color model of the target device is different than that of the source.

**See also:** [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageWritingToEMFStr

Header: `PDFLExpT.h:1357`

Value: `"DL_WritingToEMF"`

## PDPref

### Functions (18)

#### PDPrefGetAntialiasLevel

```cpp
ASUns32 PDPrefGetAntialiasLevel(void)
```

Header: `PDFLProcs.h:357`

Returns the antialias level, in pixels.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)

The antialias level set by PDPrefSetAntialiasLevel().

**See also:** [`PDPrefSetAntialiasLevel`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrefSetAntialiasLevel)

#### PDPrefGetBlackPointCompensation

```cpp
ASBool PDPrefGetBlackPointCompensation(void)
```

Header: `PDFLProcs.h:379`

Returns the black-point compensation flag.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)

`true` if black-point compensation is done.

**See also:** [`PDPrefSetBlackPointCompensation`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefSetBlackPointCompensation)

#### PDPrefGetEnableThinLineHeuristics

```cpp
ASBool PDPrefGetEnableThinLineHeuristics(void)
```

Header: `PDFLProcs.h:891`

Determines whether thin lines will be fattened non-linearly or the stroke adjust will be applied to thin rectangles.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)

`true` if thin line heuristics are applied, `false` otherwise.

#### PDPrefGetGreekLevel

```cpp
ASInt16 PDPrefGetGreekLevel(void)
```

Header: `PDFLProcs.h:349`

Returns the greek level.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASInt16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt16)

The greek level set by PDPrefSetGreekLevel().

**See also:** [`PDPrefSetGreekLevel`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrefSetGreekLevel)

#### PDPrefGetRefXObj

```cpp
PDRefXObjMode PDPrefGetRefXObj(ASFileSys *fileSys, ASPathName *pathName)
```

Header: `PDFLProcs.h:879`

Gets reference XObject parameters.

**Parameters**

- `fileSys` ([`ASFileSys *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFileSys)): Used with `pathname` to specify where the target files should be found.
- `pathName` ([`ASPathName *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASPathName))

**Returns:** [`PDRefXObjMode`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDRefXObjMode)

#### PDPrefGetSuppressICCSpaces

```cpp
ASBool PDPrefGetSuppressICCSpaces(ASUns32 nComponents)
```

Header: `PDFLProcs.h:566`

Returns the value of the `suppress` flag for ICC-based spaces with the specified number of components.

**Parameters**

- `nComponents` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The number of ICC-based space components that are suppressed or not, according to the flag value.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)

The `suppress` flag value.

**See also:** [`PDPrefSetSuppressICCSpaces`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrefSetSuppressICCSpaces)

#### PDPrefGetUseOutputIntents

```cpp
ASBool PDPrefGetUseOutputIntents(void)
```

Header: `PDFLProcs.h:544`

Returns the value of the Output Intent flag. When this flag is `true`, the system overrides the working space with the Output Intent, if it is present.

**Parameters**

- (unnamed) (`void`)

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)

The Output Intent flag value.

**See also:** [`PDPrefSetUseOutputIntents`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefSetUseOutputIntents)

#### PDPrefSetAntialiasLevel

```cpp
void PDPrefSetAntialiasLevel(ASUns32 antialiasPixelLevel)
```

Header: `PDFLProcs.h:342`

Sets the default smooth text and smooth images global flags for subsequent rendering methods. If the function PDPageDrawContentsToMemory() is used for drawing, the `smoothFlags` value passed to that function supersedes the preference value for the duration of the call.

**Parameters**

- `antialiasPixelLevel` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The antialias level, in pixels. It is an `OR` of the following flags:

  • kPDPrefAASmoothText

  • kPDPrefAASmoothLineArt

  • kPDPrefAASmoothImage

**Returns:** `void`

**See also:** [`PDPrefGetAntialiasLevel`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrefGetAntialiasLevel)

#### PDPrefSetBlackPointCompensation

```cpp
void PDPrefSetBlackPointCompensation(ASBool kbpc)
```

Header: `PDFLProcs.h:372`

Sets the black-point compensation flag, which controls whether to adjust for differences in black points when converting colors between color spaces. When enabled, the full dynamic range of the source space is mapped into the full dynamic range of the destination space. When disabled, the dynamic range of the source space is simulated in the destination space (which can result in blocked or gray shadows).

**Parameters**

- `kbpc` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` to enable black-point compensation, `false` otherwise.

**Returns:** `void`

None.

**See also:** [`PDPrefGetBlackPointCompensation`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefGetBlackPointCompensation)

#### PDPrefSetEnableThinLineHeuristics

```cpp
void PDPrefSetEnableThinLineHeuristics(ASBool doThinLineTricks)
```

Header: `PDFLProcs.h:885`

Sets whether thin lines will be fattened non-linearly or the stroke adjust will be applied to thin rectangles.

**Parameters**

- `doThinLineTricks` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): `true` if thin line heuristics are applied, `false` otherwise.

**Returns:** `void`

#### PDPrefSetGreekLevel

```cpp
void PDPrefSetGreekLevel(ASInt16 greekPixelLevel)
```

Header: `PDFLProcs.h:322`

Sets the *greek level*. The greek level is a text height below which text characters are not rendered. Instead, text-like glyphs that have no meaning but look good at very small size are used. This is known as *greeking*.

**Parameters**

- `greekPixelLevel` ([`ASInt16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASInt16)): The greek level, in pixels.

**Returns:** `void`

**See also:** [`PDPrefGetGreekLevel`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrefGetGreekLevel)

#### PDPrefSetRefXObj

```cpp
void PDPrefSetRefXObj(PDRefXObjMode refXObjMode, ASFileSys fileSys, ASPathName pathName)
```

Header: `PDFLProcs.h:872`

Sets reference XObject parameters.

**Parameters**

- `refXObjMode` ([`PDRefXObjMode`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDRefXObjMode)): The mode to view or print reference XObjects. Its value can be one of the following:

  Reference XObject modeDescription
  `kRefXObjNever`Does nothing. The function returns `false`.
  `kRefXObjAlways`Find a substitution with minimal checking.
  `kRefXObjPDFX5`Restrict substitutions to PDF/X-5 conforming ones.
  `kRefXObjAlwaysAssured`Fail the parser if the target is not found. Do not display the proxy.
  `kRefXObjPDFX5Assured`Fail the parser if the target PDF/X-5 document not found. Do not display the proxy.
- `fileSys` ([`ASFileSys`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASFileSys)): Used with `pathname` to specify where the target files should be found.
- `pathName` ([`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASPathName))

**Returns:** `void`

#### PDPrefSetSuppressICCSpaces

```cpp
void PDPrefSetSuppressICCSpaces(ASUns32 nComponents, ASBool value)
```

Header: `PDFLProcs.h:556`

Specifies use of a default color space rather than an ICC-based color space.

**Parameters**

- `nComponents` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The number of ICC color space components.
- `value` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): When `true`, use a DefaultCMYK, DefaultRGB, or DefaultGray color space instead of an ICC-based color space with the same number of components.

**Returns:** `void`

**See also:** [`PDPrefGetSuppressICCSpaces`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrefGetSuppressICCSpaces)

#### PDPrefSetUseLocalFonts

```cpp
void PDPrefSetUseLocalFonts(ASBool useLocalFonts)
```

Header: `PDFLProcs.h:386`

Enables or disables use of local fonts.

**Parameters**

- `useLocalFonts` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): When `true`, use local fonts. When `false`, use global fonts.

**Returns:** `void`

#### PDPrefSetUseOutputIntents

```cpp
void PDPrefSetUseOutputIntents(ASBool flag)
```

Header: `PDFLProcs.h:535`

Sets the Output Intent flag.

**Parameters**

- `flag` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#ASBool)): When `true`, use Output Intent to override a working space if it is present.

**Returns:** `void`

**See also:** [`PDPrefGetUseOutputIntents`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefGetUseOutputIntents)

#### PDPrefSetWorkingCMYK

```cpp
void PDPrefSetWorkingCMYK(void *profile, ASUns32 profileLength)
```

Header: `PDFLProcs.h:637`

Sets the current CMYK working space to a given ICC profile. A CMYK working space in PDF is defined as a profile to substitute for a corresponding /DeviceCMYK space.

**Parameters**

- `profile` (`void *`): A pointer to a buffer containing the ICC color profile.
- `profileLength` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The length in bytes of the profile.

**Returns:** `void`

**See also:** [`PDPrefSetWorkingGray`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefSetWorkingGray), [`PDPrefSetWorkingRGB`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefSetWorkingRGB)

#### PDPrefSetWorkingGray

```cpp
void PDPrefSetWorkingGray(void *profile, ASUns32 profileLength)
```

Header: `PDFLProcs.h:651`

Sets the current gray working space to a given ICC profile. A gray working space in PDF is defined as a profile to substitute for a corresponding /DeviceGray space. When rendering with overprint preview, the gray substitution is suppressed, to avoid converting grayscale to "rich black."

**Parameters**

- `profile` (`void *`): A pointer to a buffer containing the ICC color profile.
- `profileLength` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The length in bytes of the profile.

**Returns:** `void`

**See also:** [`PDPrefSetWorkingCMYK`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefSetWorkingCMYK), [`PDPrefSetWorkingRGB`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefSetWorkingRGB)

#### PDPrefSetWorkingRGB

```cpp
void PDPrefSetWorkingRGB(void *profile, ASUns32 profileLength)
```

Header: `PDFLProcs.h:625`

Set the current RGB working space to a given ICC profile. An RGB working space in PDF is defined as a profile to substitute for a corresponding /DeviceRGB space.

**Parameters**

- `profile` (`void *`): A pointer to a buffer containing the ICC color profile.
- `profileLength` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/aslayer.md#ASUns32)): The length in bytes of the profile.

**Returns:** `void`

**See also:** [`PDPrefSetWorkingCMYK`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefSetWorkingCMYK), [`PDPrefSetWorkingGray`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDPrefSetWorkingGray)

### Typedefs (1)

#### PDRefXObjMode

```cpp
typedef ASInt32 PDRefXObjMode
```

Header: `PDFLExpT.h:1398`

## PDTextSelect

### Structures (1)

#### PDResTree

```cpp
typedef struct _t_PDResTree* PDResTree
```

Header: `PDBasicExpT.h:155`

A selection of text on a single page that may contain more than one disjoint group of words. A text selection is specified by one or more ranges of text, with each range containing the word numbers of the selected words. Each range specifies a start and end word, where *"start"* is the first of a series of selected words and *"end"* is the first word not in the series.

**See also:** `AVDocGetSelection`, `AVPageViewTrackText`, [`PDDocCreateTextSelect`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDDocCreateTextSelect), [`PDTextSelectCreatePageHilite`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTextSelectCreatePageHilite), [`PDTextSelectCreatePageHiliteEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTextSelectCreatePageHiliteEx), [`PDTextSelectCreateWordHilite`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTextSelectCreateWordHilite), [`PDTextSelectCreateWordHiliteEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTextSelectCreateWordHiliteEx), [`PDTextSelectCreateRanges`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTextSelectCreateRanges), [`PDTextSelectCreateRangesEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTextSelectCreateRangesEx), [`PDTextSelectDestroy`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTextSelectDestroy), [`PDTextSelectEnumQuads`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTextSelectEnumQuads), [`PDTextSelectEnumText`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdlayer.md#PDTextSelectEnumText)

## pdflattener

### Typedefs (1)

#### PDFlattenTilingMode

```cpp
typedef ASInt32 PDFlattenTilingMode
```

Header: `PDFLExpT.h:288`

**Used in:** [`PDFlattenRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDFlattenRec)

### Structures (1)

#### PDFlatten

```cpp
typedef  struct PDFlattenRec * PDFlatten
```

Header: `PDFLExpT.h:373`

**Used in:** [`PDFlattenerUserParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/plugins.md#PDFlattenerUserParamsRec), [`PDPrintParamsRec`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1f/pdfllayer.md#PDPrintParamsRec)
