El código PostScript que protege esos archivo PostScript es el siguiente:
%ADOBeginClientInjection: DocumentSetup Start "No Re-Distill"
%% Removing the following eleven lines is illegal, subject to the
Digital Copyright Act of 1998.
mark currentfile eexec
54dc5232e897cbaaa7584b7da7c23a6c59e7451851159cdbf40334cc2600
30036a856fabb196b3ddab71514d79106c969797b119ae4379c5ac9b7318
33471fc81a8e4b87bac59f7003cddaebea2a741c4e80818b4b136660994b
18a85d6b60e3c6b57cc0815fe834bc82704ac2caf0b6e228ce1b2218c8c7
67e87aef6db14cd38dda844c855b4e9c46d510cab8fdaa521d67cbb83ee1
af966cc79653b9aca2a5f91f908bbd3f06ecc0c940097ec77e210e6184dc
2f5777aacfc6907d43f1edb490a2a89c9af5b90ff126c0c3c5da9ae99f59
d47040be1c0336205bf3c6169b1b01cd78f922ec384cd0fcab955c0c20de
000000000000000000000000000000000000000000000000000000000000
cleartomark
%ADOEndClientInjection: DocumentSetup Start "No Re-Distill"
Entonces todo lo que tienes que hacer para proteger tu archivo PostScript para que no sea convertido a PDF es insertar este código en el PostScript despues de las lineas %BeginSetup o %EndProlog del PostScript. El siguiente código hace eso para el PostScript a través de la linea de comando:
#!/bin/bash
if [[ $# -ne 1 ]]; then
echo "Usage: $0 PSFILE"
exit 1
fi
psfile=$1
nl='
'
protect='
\%ADOBeginClientInjection: DocumentSetup Start "No Re-Distill"
\%\% Removing the following eleven lines is illegal, subject to
the Digital Copyright Act of 1998.
mark currentfile eexec
54dc5232e897cbaaa7584b7da7c23a6c59e7451851159cdbf40334cc2600
30036a856fabb196b3ddab71514d79106c969797b119ae4379c5ac9b7318
33471fc81a8e4b87bac59f7003cddaebea2a741c4e80818b4b136660994b
18a85d6b60e3c6b57cc0815fe834bc82704ac2caf0b6e228ce1b2218c8c7
67e87aef6db14cd38dda844c855b4e9c46d510cab8fdaa521d67cbb83ee1
af966cc79653b9aca2a5f91f908bbd3f06ecc0c940097ec77e210e6184dc
2f5777aacfc6907d43f1edb490a2a89c9af5b90ff126c0c3c5da9ae99f59
d47040be1c0336205bf3c6169b1b01cd78f922ec384cd0fcab955c0c20de
000000000000000000000000000000000000000000000000000000000000
cleartomark
\%ADOEndClientInjection: DocumentSetup Start "No Re-Distill"
'
protect="${protect//$nl/\\n}"
if grep --silent '^%%BeginSetup' $psfile; then
sed -e "/\%\%BeginSetup/a\\$protect" $1
else
sed -e "/\%\%EndProlog/a\\$protect" $1
fi
Para probarlo toma un archivo PostScript desprotegido y conviértelo a un PostScript protegido y luego trata de convertirlo a PDF:
$ ps2pdf unprotected.ps
$ sh prps.sh unprotected.ps >protected.ps
$ ps2pdf protected.ps
This PostScript file was created from an encrypted PDF file.
Redistilling encrypted PDF is not permitted.
Error: /undefined in --eexec--
Operand stack:
--nostringval-- --dict:98/200(L)-- quit
Execution stack:
%interp_exit .runexec2 --nostringval-- ...
Dictionary stack:
--dict:1169/3371(ro)(G)-- --dict:0/20(G)-- ...
Current allocation mode is local
Last OS error: 2
GPL Ghostscript 8.62: Unrecoverable error, exit code 1
Como puedes ver, puedes convertir unprotected.ps a PDF sin problemas, pero una vez que se ha agregado el código de protección super secreto y creado protected.ps ya no puedes convertirlo a PDF.
Fuente.
No hay comentarios:
Publicar un comentario