Imagemagick: ¿generar datos de imagen en bruto para incrustar PDF?

Estoy intentando crear un ejemplo de código fuente de un PDF de línea de comandos (ver también¿Cómo generar ejemplos de PDF de código fuente en texto plano que funcionan en un visor de documentos?), pero con incrustar una imagen. Así es como llegué, tengo una plantilla.hello.pdf:

%PDF-1.4
1 0 obj
  << /Type /Catalog
      /Outlines 2 0 R
      /Pages 3 0 R
  >>
endobj

2 0 obj
  << /Type /Outlines
      /Count 0
  >>
endobj

3 0 obj
  << /Type /Pages
      /Kids [ 4 0 R ]
      /Count 1
  >>
endobj

4 0 obj
  << /Type /Page
      /Parent 3 0 R
      /MediaBox [ 0 0 612 792 ]
      /Contents 5 0 R
      /Resources <<   /ProcSet 6 0 R
                      /Font << /F1 7 0 R >>
                      /ProcSet [ /PDF /Text /ImageC ] /XObject << /Im1 8 0 R >>
      >>
  >>
endobj

5 0 obj
  << /Length 173 >>
stream
  BT
    /F1 24 Tf
    100 100 Td
    ( Hello World ) Tj
    200 200 Td
    ( Hello Again ) Tj
    % width skew-right-up skew-top-right height x y
    150 0 0 150 340 130 cm
    % 150 150 Td - irrelevant for image
    /Im1 Do
  ET
endstream
endobj

6 0 obj
  [ /PDF /Text ]
endobj

7 0 obj
  << /Type /Font
    /Subtype /Type1
    /Name /F1
    /BaseFont /Helvetica
    /Encoding /MacRomanEncoding
  >>
endobj

8 0 obj
<<
  /BitsPerComponent 8 /ColorSpace /DeviceRGB /DecodeParms
  <<
    /BitsPerComponent 8 /Colors 3 /Columns 150 /Predictor 10
  >>
  /Filter [ /FlateDecode ] /Height 150 /Length 1418 /Subtype /Image /Type /XObject /Width 150
>>
stream
###endstream
endobj

9 0 obj
  [ /PDF ]
endobj

xref
0 10
0000000000 65535 f
0000000009 00000 n
0000000074 00000 n
0000000120 00000 n
0000000179 00000 n
0000000364 00000 n
0000000466 00000 n
0000000496 00000 n
0000001000 00000 n
0000001100 00000 n

trailer
  << /Size 10
    /Root 1 0 R
  >>
startxref
625
%%EOF

Entonces, genero los datos de la imagen usandoconvert, y aplico compresión "flate" usandozlib:

convert -size 150x150 gradient:\#4b4-\#bfb test.ppm 
du -b test.ppm     # 135017 bytes
python -c "import zlib,sys;sys.stdout.write(zlib.compress(sys.stdin.read()))" < test.ppm > test.flate
du -b test.flate    # 1418 bytes

Entonces, sustituyo el/Length 1418 en el archivo, y finalmente reemplazar el token### utilizando:

perl -ne 's/^###/`cat test.flate`/e;print' hello.pdf > hello2.pdf

Este archivo obviamente tiene una tabla de referencia externa incorrecta, sin embargo, se abre enevince bien bien

... sin embargo, es obvio que el mapa de bits no está en el formato correcto.

He intentado también generar, digamos,

convert -size 150x150 gradient:\#4b4-\#bfb -endian LSB rgb:test.raw 

... pero esos no son generalmente de color verde (como debería ser la imagen original).

 

¿Alguien sabe el formato de imagen correcto y laconvert línea de comando: ¿para generar una imagen en bruto que se pueda "anular" e incluir en un pdf?

Muchas gracias de antemano por cualquier respuesta,
¡Aclamaciones!

Respuestas a la pregunta(1)

Su respuesta a la pregunta