Это поздний ответ!Проблема с -dNOSAFER
не позволила мне использовать другие решения, поэтому я сделал следующее:
Используйте Python, чтобы прочитать файл JPG как двоичный файл и сделать его строкой, совместимой с /ASCIIHexDecode
:
''.join(["%02x" % ord(c) for c in open(filename, "rb").read()])
Затем вместо чтения и декодирования файла изображения из файла postscript, вставьте указанную выше вычисленную строку в файл postscript и filter
это сначала через /ASCIIHexDecode
, а затем /DCTDecode
:
(ffd8ffe000104a46494600010102002700270000ffdb004300030202020202030202020303030304060404040404080606050609080a0a090809090a0c0f0c0a0b0e0b09090d110d0e0f101011100a0c12131210130f101010ffdb00430103030304030408040408100b090b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010ffc00011080010001003011100021101031101ffc400160001010100000000000000000000000000060507ffc40026100002020201030207000000000000000001020304051106071221001315163132414252ffc400160101010100000000000000000000000000070403ffc4002911000201030105090100000000000000000102030004210711123151531314324142617381d1d3ffda000c03010002110311003f00de311d00e0478be19acddc79b0f8ba734aef8aa8a59a4af1c9bdc96159beef275e4efd1ccfa5f2aceea2f8e09f41e7f252a47ab4c4093ba71ceced387b7828b724e87705b588c8478ecac114e28d89e36f83d65d7643ee7eb60b03a23f1f5dff002daaacf4ae479954df1e3d33fd2b593599628d89b0071d5fae9d3bc5750b8a3f1ae3cc9cd3031b4789c689236ce568de374af543ab21b51b2b03138208076a3cef4c8b935acaf3bb05c12685036e285e550b3bccf8a41c7b2327ce78c9a6188b917b2995ab20676a8102af6dc76624c680011f9d8f0005095da5b491ccaec303f0d4f292ebba01cecf23cc57ffd9>)
/ASCIIHexDecode
filter % ascii to bytes
0 dict
/DCTDecode % jpg to explicit
filter
приведенный выше фрагмент заменяет (myJPEG500x133.jpg) (r) file /DCTDecode filter
в очень полезном в противном случае ответе @ Hath995.
, если вы хотите что-то еще, кроме JPEG, но все же RGB (т.е. выхотите что-то, для чего postscript не имеет декодера), и вы можете использовать Python для подготовки вашего файла postscript, вы можете использовать PIL, например так (он игнорирует байт прозрачности, который является операцией включения / выключения в postscript):
import PIL.Image
i = PIL.Image.open("/tmp/from-template.png")
import itertools
''.join(["%02x" % g
for g in itertools.chain.from_iterable(
k[:3] for k in i.getdata())])
для индексированных файлов я бы не знал, но это не может быть трудно решить.