Предполагается, что вы используете Magick ++ Magick::Image
имеет конструктор, который может создать изображение из BLOB-объекта в памяти, и метод write (), который может записать PDF (и несколько других форматов) в памятку капля тоже.
Обратите внимание, что на моем компьютере с 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;
}
Редактировать: Я, вероятно, должен добавить, что запись двоичных данных в cout
в Windows вызовет проблемы, если вы не переключите выходной поток в двоичный режим. Приведенный выше код является лишь кратким примером, поэтому я проигнорировал это.