Предполагая, что вы используете Magick ++ Magick::Image
, есть конструктор, который может создавать изображение из блочной памяти и метода write(), который может записывать PDF (и кучу других форматов) в блокнот в виде memo также.
Обратите внимание, что на моей машине Linux ImageMagick создает несколько временных файлов во время работы. Я не уверен, что отвечает вашим требованиям, но может быть настроен.
Вы, вероятно, может получить хорошую идею из этого фрагмента кода:
#include <iostream>
#include <Magick++.h>
using namespace std;
using namespace Magick;
static char imageData[] = {
/* ... */
};
int main(int argc, char** argv)
{
/* Initialize the library */
InitializeMagick(*argv);
/* Instantiate an image from RGB data */
Image image(4, // Width
14, // Height
"RGB", // Color components ordering
CharPixel, // Components storage type
imageData);// Image data
/* Write pdf in memory */
Blob b;
image.write(&b, string("pdf"));
/* write pdf data to cout */
/* it should be easy to send it over a socket instead */
cout.write(static_cast<const char*>(b.data()), b.length());
return 0;
}
Edit: я, вероятно, следует добавить, что запись двоичных данных в cout
на Windows, вызовет проблемы, если не переключить выходной поток в двоичную Режим. Вышеприведенный код - это всего лишь короткий образец, поэтому я проигнорировал это.