# PDFL Library Layer

> PDFL Library Layer: 11 components, 164 items.

- Product: Adobe PDF Library 21
- Language: Adobe C++
- Version: APDFL21.0.0PlusP1e
- HTML page: https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer
- Version index: https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASFileSys)): The file system in which the ASPathname is set.

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

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

**See also:** [`ASFileSysSetDefaultTempPath`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/plugins.md#ASBool)

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

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

## CosDoc

### Definitions (1)

#### cosSaveWriteXref

Header: `PDFLExpT.h:2503`

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.0PlusP1e/aslayer.md#ASInt32)

The number of ASAtom objects currently allocated.

**See also:** [`ASAtomExistsForString`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASAtomExistsForString), [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFLInit), [`PDFLTerm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASSize_t)): The desired amount of memory to free.

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

The approximate amount of memory freed.

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFLInit), [`PDFLTerm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/aslayer.md#HFT)

The Core HFT object.

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASUns32)

The initialization flags value.

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASUns32)

The number of times the PDF Library has been initialized.

**See also:** [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASUns32)

Adobe PDF Library version (kPDFLVersion).

**See also:** [`PDFLTerm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/pdfllayer.md#PDFLGetFlags), [`PDFLGetInitCount`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFLGetInitCount), [`PDFLTerm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/pdfllayer.md#ThreadLocalKey))
- `size` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/pdfllayer.md#AVExtensionMgrRegisterNotification), `AVAppRegisterNotification`, [`PDFLibraryUnregisterNotification`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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`

#### PDEncodingType

```cpp
typedef ASInt32 PDEncodingType
```

Header: `PDFLExpT.h:1563`

#### PDFarEastFont

```cpp
typedef ASEnum8 PDFarEastFont
```

Header: `PDFLExpT.h:163`

CJK font related option for PostScript printing.

#### PDInclusion

```cpp
typedef ASEnum8 PDInclusion
```

Header: `PDFLExpT.h:120`

Specifies how to include a resource in a file.

#### 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:1812`

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.0PlusP1e/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.0PlusP1e/pdfllayer.md#PDFLibraryRegisterRNG)

#### PDOCFindOutAutoStatePrefProc

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

Header: `PDFLExpT.h:2500`

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

#### PDOCFindOutLanguageProc

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

Header: `PDFLExpT.h:2494`

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:2497`

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:2491`

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` 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.0PlusP1e/pdfllayer.md#TKResourceReleaseProc), [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFLInit)

#### 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` 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.0PlusP1e/aslayer.md#PMSetTextProc), [`PDFLInit`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFLInit)

### Structures (1)

#### TextServer

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

Header: `PDFLExpT.h:1509`

Text server.

### Definitions (7)

#### AVPS_MAC_ROMAN_ENC

Header: `PDFLExpT.h:1774`

Value: `101`

Encoding identifiers (for TE).

#### AVPS_WIN_ANSI_ENC

Header: `PDFLExpT.h:1776`

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.0PlusP1e/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.0PlusP1e/pdfllayer.md#PDFLInit), [`PDFLPrintDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDDoc)): The PDDoc for the document to print.
- `userParams` ([`PDFLPrintUserParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDDoc)): The PDDoc for the document to print.
- `userParams` ([`PDFLPrintUserParamsEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDDoc))
- `pathName` ([`ASPathName`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASPathName))
- `psParams` ([`PDPrintParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPrintParams))

**Returns:** `void`

### Typedefs (10)

#### PDOutputType

```cpp
typedef ASEnum8 PDOutputType
```

Header: `PDFLExpT.h:142`

Specifies what kind of file to emit.

#### PDPrintMarkStyles

```cpp
typedef ASInt32 PDPrintMarkStyles
```

Header: `PDFLExpT.h:1531`

#### PDPrintTrapType

```cpp
typedef ASEnum8 PDPrintTrapType
```

Header: `PDFLExpT.h:492`

#### PDPrintWhatAnnot

```cpp
typedef ASEnum8 PDPrintWhatAnnot
```

Header: `PDFLExpT.h:480`

#### 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.0PlusP1e/aslayer.md#ASCancelProc), [`CancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#CancelProc), `PDFLPrintUserParamsRec`

#### 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.0PlusP1e/aslayer.md#PDFLFlattenProgressMarker)

#### PDPrintCanEmitFontProc

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

Header: `PDFLExpT.h:1867`

(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.0PlusP1e/pdfllayer.md#PDDocPrintPages)

#### PDPrintEmitFontProc

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

Header: `PDFLExpT.h:1849`

(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.0PlusP1e/pdfllayer.md#PDDocPrintPages)

#### PDPrintGetFontEncodingMethodProc

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

Header: `PDFLExpT.h:1833`

(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.0PlusP1e/pdfllayer.md#PDDocPrintPages)

### Structures (9)

#### PDFLPrintUserCallbacks

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

Header: `PDFLExpT.h:2480`

#### PDFLPrintUserParams

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

Header: `PDFLExpT.h:2486`

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:2488`

#### PDPrintClient

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

Header: `PDFLExpT.h:1548`

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.

#### PDPrintController

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

Header: `PDFLExpT.h:1549`

#### PDPrintFontArrayP

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

Header: `PDFLExpT.h:274`

#### PDPrintFontP

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

Header: `PDFLExpT.h:257`

#### PDPrintParams

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

Header: `PDFLExpT.h:1024`

#### PDTileEx

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

Header: `PDFLExpT.h:443`

### Enums (8)

#### ALDImageColorType

Header: `PDFLExpT.h:1581`

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.

#### ImageInk

Header: `PDFLExpT.h:1663`

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

#### OPIversion

Header: `PDFLExpT.h:1571`

OPI Types for PostScript printing.

**Values**

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

#### 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`

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

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

`true` if successful, `false` otherwise.

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDDocPrintPages), [`PDFontPSFlushIncrGlyphList`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFontPSFlushIncrGlyphList), [`PDFontPSGetComponentFontList`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASStm)): The stream.
- `printClient` ([`PDPrintClient`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPrintClient)): The control structure.

**Returns:** `void`

**See also:** [`PDFontPSEmitGlyphsIncr`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFontPSEmitGlyphsIncr), [`PDFontPSGetComponentFontList`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDFont)): The font.
- `pdFontArr` ([`PDPrintFontArrayP`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPrintFontArrayP)): The font array.
- `printClient` ([`PDPrintClient`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPrintClient)): The control structure.

**Returns:** `void`

**See also:** [`PDFontPSEmitGlyphsIncr`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFontPSEmitGlyphsIncr), [`PDFontPSFlushIncrGlyphList`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDFont)): The font to emit.
- `stm` ([`ASStm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASStm)): The ASStm into which the font is emitted.
- `context` ([`PDFontDownloadContext`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFontDownloadContext)): A context created by PDFontDownloadContextCreate.

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

`true` if successful, `false` otherwise.

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDDocPrintPages), [`PDFontDownloadContextCreate`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDFont)): The font to test.

**Returns:** [`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdfllayer.md#PDFontDownloadContextCreate), [`PDFontWasFauxed`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDFont)): The font to test.

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

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

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

### Typedefs (1)

#### PDFontStyle

```cpp
typedef ASUns8 PDFontStyle
```

Header: `PDFLExpT.h:214`

### Structures (1)

#### 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.0PlusP1e/pdfllayer.md#PDPrintClient)): The client record to pass to PDDocPrintPages().

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

The newly-created context.

**See also:** [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDDocPrintPages), [`PDFontDownloadContextDestroy`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFontDownloadContextDestroy), [`PDFontStreamPS`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdfllayer.md#PDFontDownloadContext)): IN/OUT The context to destroy.

**Returns:** `void`

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

### Structures (1)

#### PDFontDownloadContext

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

Header: `PDFLExpT.h:1794`

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.0PlusP1e/pdfllayer.md#PDFontDownloadContextCreate), [`PDFontDownloadContextDestroy`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/plugins.md#ASBool))
- `matrix` (`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 *`): 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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/pdlayer.md#PDPage)): The page to render.
- `flags` ([`ASUns32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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 *`): A pointer to the matrix to be concatenated onto the default page matrix. It must not be `NULL`.
- `updateRect` (`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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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 *`): 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.0PlusP1e/aslayer.md#ASInt32)): The size of the buffer.
- `cancelProc` ([`CancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASInt32)

The size of the bitmap in bytes.

**See also:** [`PDPageDrawContentsPlacedWithParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPageDrawContentsPlacedWithParams), [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDPage)): The page to render.
- `flags` ([`ASCab`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASCab)): ASCab used for passing PDPageDrawFlagsStr and PDPageDrawSmoothFlagsStr.
- `matrix` (`ASDoubleMatrix *`): A pointer to double matrix to be concatenated onto the default page matrix. It must not be `NULL`.
- `updateRect` (`ASDoubleRect *`): A pointer to the double rectangle to draw, defined in user space coordinates.
- `csAtom` ([`ASAtom`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASAtom)): The color space in which the bitmap data is represented.
- `bpc` ([`ASInt32`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASInt32)): The number of bits per color component in the bitmap data.
- `destRect` (`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.0PlusP1e/aslayer.md#ASUns32)): The size of the buffer.
- `cancelProc` ([`CancelProc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASUns32)

The size of the bitmap in bytes.

**See also:** [`PDPageDrawContentsToMemory`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPageDrawContentsToMemory), [`PDPageDrawContentsPlacedWithParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDPage))
- `paperHeight` ([`ASInt16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASInt16))
- `paperWidth` ([`ASInt16`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASInt16))
- `stm` ([`ASStm`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASStm))
- `params` ([`PDPrintParams`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPrintParams))

**Returns:** `void`

**See also:** [`PDFLPrintDoc`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDFLPrintDoc), [`PDDocPrintPages`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/pdlayer.md#PDPage)): The page whose size is being obtained.
- `width` ([`ASFixed *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASFixed)): (Filled by the method) The width of the page.
- `height` ([`ASFixed *`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/aslayer.md#ASFixed)): (Filled by the method) The height of the page.

**Returns:** `void`

### Typedefs (4)

#### PDPageDrawFlags

```cpp
typedef ASUns32 PDPageDrawFlags
```

Header: `PDFLExpT.h:1155`

#### PDPageDrawSmoothFlags

```cpp
typedef ASUns32 PDPageDrawSmoothFlags
```

Header: `PDFLExpT.h:1442`

#### PDPageMarkFlags

```cpp
typedef ASUns32 PDPageMarkFlags
```

Header: `PDFLExpT.h:472`

#### PDPageTilingMode

```cpp
typedef ASInt16 PDPageTilingMode
```

Header: `PDFLExpT.h:302`

### Definitions (37)

#### kPDPageBlendingProfileValueStr

Header: `PDFLExpT.h:1344`

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.0PlusP1e/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageDirectlyImposedStr

Header: `PDFLExpT.h:1227`

Value: `"DirectlyImposed"`

Directly imposed page.

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

#### kPDPageDisplayOverPrintPreviewStr

Header: `PDFLExpT.h:1209`

Value: `"DisplayOverPrintPreview"`

Display overprint preview.

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

#### kPDPageDoLazyEraseStr

Header: `PDFLExpT.h:1172`

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.0PlusP1e/pdfllayer.md#PDPageDrawSmoothFlags), [`PDPageDrawContentsToMemoryEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPageDrawContentsToMemoryEx), `PDPageDrawContentsToWindowEx2 Erase the page while rendering only as needed.`, [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageDoNotDownloadFontsStr

Header: `PDFLExpT.h:1349`

Value: `"DL_DoNotDownloadFonts"`

#### kPDPageDoNotSubstituteWorkingSpacesStr

Header: `PDFLExpT.h:1290`

Value: `"DoNotSubstituteWorkingSpaces"`

Do not substitute working spaces.

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

#### kPDPageDrawSmoothAATextDDRStr

Header: `PDFLExpT.h:1467`

Value: `"SmoothAATextDDR"`

#### kPDPageDrawSmoothAATextPreviewStr

Header: `PDFLExpT.h:1468`

Value: `"SmoothAATextPreview"`

#### kPDPageDrawSmoothBicubicImageStr

Header: `PDFLExpT.h:1484`

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.0PlusP1e/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawSmoothFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPageDrawSmoothFlags)

#### kPDPageDrawSmoothImageStr

Header: `PDFLExpT.h:1476`

Value: `"SmoothImage"`

Draw smooth image.

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

#### kPDPageDrawSmoothLineArtStr

Header: `PDFLExpT.h:1464`

Value: `"SmoothLineArt"`

Draw smooth line art.

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

#### kPDPageDrawSmoothTextStr

Header: `PDFLExpT.h:1450`

Value: `"SmoothText"`

Draw smooth text.

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

#### kPDPageEmitPageGroupStr

Header: `PDFLExpT.h:1245`

Value: `"EmitPageGroup"`

Emit a page group.

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

#### kPDPageForceGDIPortStr

Header: `PDFLExpT.h:1346`

Value: `"DL_ForceGDIPort"`

#### kPDPageIgnoreIsolatedAndKnockoutTransparencyGroupStr

Header: `PDFLExpT.h:1181`

Value: `"IgnoreIsolatedAndKnockoutTransparencyGroup"`

Ignore Isolated and Knockout transparency at page boundary.

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

#### kPDPageImageAntiAliasStr

Header: `PDFLExpT.h:1456`

Value: `"ImageAntiAlias"`

#### kPDPageImageResampleBicubicStr

Header: `PDFLExpT.h:1452`

Value: `"ImageResampleBicubic"`

#### kPDPageImageResampleLinearStr

Header: `PDFLExpT.h:1454`

Value: `"ImageResampleLinear"`

#### kPDPageInvertedGrayscaleStr

Header: `PDFLExpT.h:1307`

Value: `"InvertedGrayscale"`

#### kPDPageIsPSPrintingStr

Header: `PDFLExpT.h:1236`

Value: `"IsPSPrinting"`

PostScript printing.

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

#### kPDPageIsPrintPreviewingStr

Header: `PDFLExpT.h:1351`

Value: `"DL_IsPrintPreviewing"`

#### kPDPageIsPrintingStr

Header: `PDFLExpT.h:1200`

Value: `"IsPrinting"`

The page is being printed.

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

#### kPDPageNoDitherStr

Header: `PDFLExpT.h:1355`

Value: `"NoDither"`

#### kPDPagePassMetadatatoAGMPortStr

Header: `PDFLExpT.h:1272`

Value: `"PassMetadatatoAGMPort"`

Pass metadata to AGM port.

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

#### kPDPagePassOCtoAGMPortStr

Header: `PDFLExpT.h:1281`

Value: `"PassOCtoAGMPort"`

Pass optional content to AGM port.

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

#### kPDPagePassOPItoAGMPortStr

Header: `PDFLExpT.h:1263`

Value: `"PassOPItoAGMPort"`

Pass open prepress interface (OPI) to AGM port.

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

#### kPDPageSuppressRasterAlphaStr

Header: `PDFLExpT.h:1315`

Value: `"SuppressRasterAlpha"`

Suppress raster alpha.

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

#### kPDPageSwapComponentsStr

Header: `PDFLExpT.h:1301`

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.0PlusP1e/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageThreadIPParseStr

Header: `PDFLExpT.h:1358`

Value: `"ThreadParse"`

#### kPDPageUseAnnotFacesStr

Header: `PDFLExpT.h:1191`

Value: `"UseAnnotFaces"`

Draw annotation appearances.

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

#### kPDPageUsePreciseColorConvStr

Header: `PDFLExpT.h:1347`

Value: `"DL_UsePreciseColorConv"`

#### kPDPageUsePrinterMarkAnnotsStr

Header: `PDFLExpT.h:1254`

Value: `"UsePrinterMarkAnnots"`

User printer's mark annotations.

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

#### kPDPageUseSignatureAnnotsOnlyStr

Header: `PDFLExpT.h:1348`

Value: `"DL_UseSignatureAnnotsOnly"`

#### kPDPageUseStampAnnotsOnlyStr

Header: `PDFLExpT.h:1334`

Value: `"UseStampAnnotsOnly"`

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

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

#### kPDPageUseTrapAnnotsStr

Header: `PDFLExpT.h:1218`

Value: `"UseTrapAnnots"`

Use trap network annotations.

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

#### kPDPageWorkingSpacesOnlyForChangeStr

Header: `PDFLExpT.h:1325`

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.0PlusP1e/pdfllayer.md#PDPageDrawContentsToMemoryEx), [`PDPageDrawFlags`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdfllayer.md#PDPageDrawFlags), [`PDPageDrawContentsToWindowEx2`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDPageDrawContentsToWindowEx2)

#### kPDPageWritingToEMFStr

Header: `PDFLExpT.h:1350`

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.0PlusP1e/aslayer.md#ASUns32)

The antialias level set by PDPrefSetAntialiasLevel().

**See also:** [`PDPrefSetAntialiasLevel`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/plugins.md#ASBool)

`true` if black-point compensation is done.

**See also:** [`PDPrefSetBlackPointCompensation`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/aslayer.md#ASInt16)

The greek level set by PDPrefSetGreekLevel().

**See also:** [`PDPrefSetGreekLevel`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/aslayer.md#ASPathName))

**Returns:** [`PDRefXObjMode`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/plugins.md#ASBool)

The `suppress` flag value.

**See also:** [`PDPrefSetSuppressICCSpaces`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/plugins.md#ASBool)

The Output Intent flag value.

**See also:** [`PDPrefSetUseOutputIntents`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/aslayer.md#ASInt16)): The greek level, in pixels.

**Returns:** `void`

**See also:** [`PDPrefGetGreekLevel`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/aslayer.md#ASUns32)): The number of ICC color space components.
- `value` ([`ASBool`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/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.0PlusP1e/aslayer.md#ASUns32)): The length in bytes of the profile.

**Returns:** `void`

**See also:** [`PDPrefSetWorkingGray`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDPrefSetWorkingGray), [`PDPrefSetWorkingRGB`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASUns32)): The length in bytes of the profile.

**Returns:** `void`

**See also:** [`PDPrefSetWorkingCMYK`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDPrefSetWorkingCMYK), [`PDPrefSetWorkingRGB`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/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.0PlusP1e/aslayer.md#ASUns32)): The length in bytes of the profile.

**Returns:** `void`

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

### Typedefs (1)

#### PDRefXObjMode

```cpp
typedef ASInt32 PDRefXObjMode
```

Header: `PDFLExpT.h:1390`

## 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.0PlusP1e/pdlayer.md#PDDocCreateTextSelect), [`PDTextSelectCreatePageHilite`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDTextSelectCreatePageHilite), [`PDTextSelectCreatePageHiliteEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDTextSelectCreatePageHiliteEx), [`PDTextSelectCreateWordHilite`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDTextSelectCreateWordHilite), [`PDTextSelectCreateWordHiliteEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDTextSelectCreateWordHiliteEx), [`PDTextSelectCreateRanges`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDTextSelectCreateRanges), [`PDTextSelectCreateRangesEx`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDTextSelectCreateRangesEx), [`PDTextSelectDestroy`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDTextSelectDestroy), [`PDTextSelectEnumQuads`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDTextSelectEnumQuads), [`PDTextSelectEnumText`](https://docs.datalogics.com/apdfl21/AdobeCPlusCPlus/APDFL21.0.0PlusP1e/pdlayer.md#PDTextSelectEnumText)

## pdflattener

### Typedefs (1)

#### PDFlattenTilingMode

```cpp
typedef ASInt32 PDFlattenTilingMode
```

Header: `PDFLExpT.h:288`

### Structures (1)

#### PDFlatten

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

Header: `PDFLExpT.h:373`
