在PDF页面上渲染图像

时间:2014-07-26 17:22:04

标签: c++ image pdf

我正在尝试在PDF页面中创建和渲染图像。我使用PDEImageCreate API创建PDEImage对象,然后在PDEContent的{​​{1}}中设置此对象。

但是,我无法在页面上呈现正确的图像。我发送原始数据作为输入并使用PDPage颜色空间。这是我正在使用的代码的快照:

DeviceRGB

我主要有两个问题无法找出原因 -

  1. 我试图在mImageDataBuffer中放置随机值,如果在页面上呈现任何内容,它总是黑白的。

  2. 如果数据缓冲区的其中一个字节是unsigned char* mImageDataBuffer; mImageDataBuffer = (unsigned char*)ASmalloc((ASSize_t)30000); imageAttrs.bitsPerComponent = 8; imageAttrs.flags = kPDEImageIsMask; imageAttrs.width = 100; imageAttrs.height = 100; imageAttrs.intent = ASAtomNull; imageMatrix.a = ASFloatToFixed(500.0); imageMatrix.b = fixedZero; imageMatrix.c = fixedZero; imageMatrix.d = ASFloatToFixed(500.0); imageMatrix.h = fixedZero; imageMatrix.v = fixedZero; for (int i = 0; i < 30000;) { mImageDataBuffer[i++] = 0x00; mImageDataBuffer[i++] = 0x00; mImageDataBuffer[i++] = 0x0f; } PDEColorValueP pdeColorValue = (PDEColorValueP)ASmalloc(sizeof(PDEColorValue)); memset(pdeColorValue, 0, sizeof(PDEColorValue)); pdeColorValue->color[0] = FloatToASFixed(255.0f); pdeColorValue->color[1] = FloatToASFixed(0.0f); pdeColorValue->color[2] = FloatToASFixed(0.0f); pdeImage = PDEImageCreate(&imageAttrs, (Uns32)sizeof(imageAttrs), &imageMatrix, 0, PDEColorSpaceCreateFromName(ASAtomFromString("DeviceRGB")), pdeColorValue, NULL, 0, mImageDataBuffer, 0); ,则如果其余字节不为零,则Acrobat会抛出错误消息。

  3. 我确信我错过了一些重要的事情。有人能指出我走向正确的方向吗?

1 个答案:

答案 0 :(得分:0)

最后一个参数不应该是mImageDataBuffer的大小吗?例如:

pdeImage = PDEImageCreate(&imageAttrs, (Uns32)sizeof(imageAttrs), &imageMatrix, 0,       PDEColorSpaceCreateFromName(ASAtomFromString("DeviceRGB")),
pdeColorValue, NULL, 0, mImageDataBuffer, 30000);