pdfConvertPageToDeviceNImageWithAlpha
Convert a page to a DeviceN image with an alpha channel.
int pdfConvertPageToDeviceNImageWithAlpha(PDFHandle pdf, int page, double dpi)
This function rasterizes a page in DeviceN mode, i.e., with separate
color channels for each process color (cyan, magenta, yellow, and
black), and for each custom (a.k.a., spot) color.
This function differs from pdfConvertPageToDeviceNImage
in that it
skips the final page compositing step, and maintains an alpha bitmap.
The alpha bitmap can be retrieved with pdfGetDeviceNAlphaBitmap
.
Note: The alpha bitmap is only useful with PDF files that have been constructed with a transparent background.
After calling pdfConvertPageToDeviceNImageWithAlpha
:
- call
pdfGetNumDeviceNChannels
to retrieve the number of color channels - call
pdfGetDeviceNChannelName
andpdfGetDeviceNChannelCMYK
to get the name and CMYK value for a particular channel - call
pdfGetDeviceNBitmap
to get a bitmap for a particular channel - call
pdfGetDeviceNAlphaBitmap
to get the alpha channel bitmap
pdfClearDeviceNImage
to release the memory used by
pdfConvertPageToDeviceNImage
.
To enable an overprint preview rasterization, call pdfSetConfig
to
set the overprintPreview
parameter before
calling pdfConvertPageToDeviceNImage
:
pdfSetConfig("overprintPreview yes");
C:
int nChannels, i;
char *channelName;
unsigned int channelCMYK;
PDFImageHeader hdr;
char *bits;
int err;
err = pdfConvertPageToDeviceNImageWithAlpha(pdf, pageNum, dpi);
if (err != pdfOk) {
/* handle the error */
...
}
nChannels = pdfGetNumDeviceNChannels(pdf);
for (i = 0; i < nChannels; ++i) {
channelName = pdfGetDeviceNChannelName(pdf, i);
channelCMYK = pdfGetDeviceNChannelCMYK(pdf, i);
printf("channel %d: %s = %08x\n", channelName, channelCMYK);
pdfGetDeviceNBitmap(pdf, i, 1, 0, &hdr, &bits);
/* hdr and bits represent a grayscale bitmap --
similar to pdfConvertPageToBitmap2 with pdfImageGray */
/* each channel has an 8-bit bitmap; the bitmaps for
all channels will have the same width and height */
...
/* the bitmap memory must be freed when you are finished */
pdfFreeMemory(bits);
}
pdfGetDeviceNAlphaBitmap(pdf, 1, 0, &hdr, &bits);
/* hdr and bits work the same as for the color channel bitmaps */
...
pdfFreeMemory(bits);
/* free the internal storage used by pdfConvertPageToDeviceNImage */
pdfClearDeviceNImage(pdf);