No entiendo la dichosa manía que tienen algunos de usar formularios PDF para hacernos rellenar información vía web y hacer que éstos formularios NO PERMITAN ser guardados CONSERVANDO lo que has tecleado en los campos. Es algo que me saca de mis casillas. Más aún cuando esos formularios provienen de la administración pública (tercera vez que me pasa). Ni qué decir tiene que cuando protegen el PDF para que no pueda ser impreso o ni siquiera para permitir el copy&paste del texto, siendo, repito, un PDF expresamente orientado a que los ciudadanos/usuarios lo rellenen, cumplimenten o copien, es como para desquiciarse. ¿Lo hacen aposta? O lo que es peor, ¿ni siquiera saben lo que están haciendo? ¿Publican ficheros PDF protegidos sin tener ni la más remota idea de qué es eso de «protegidos» o qué botoncito hay que pulsar en su querido Adobe Acrobat/Adobe Live Cycle para hacerlos accesibles?
¿Saben que lo que hacen es una protección que NO SIRVE MÁS QUE PARA MOLESTAR porque puede ser saltada fácilmente?
Hoy me he encontrado en la necesidad de rellenar uno de esos formularios PDF del diablo, protegido para que no se puedan guardar los textos que ya has tecleado en los campos correspondientes (¿he dicho ya que esto es una protección idiota?). La solución parecía trivial: lo cumplimento, lo imprimo a fichero .ps y luego lo convierto a .pdf. Nada más lejos de la realidad:
$ ps2pdf ficherodeldiablo.ps
This PostScript file was created from an encrypted PDF file.
Redistilling encrypted PDF is not permitted.
¿QUÉÉÉÉÉÉÉÉÉ? ¿Un postscript protegido? ¿Nos hemos vuelto todos locos o qué?
Bien, la segunda idea: abrimos el .ps con el GIMP, lo guardamos como .ps con otro nombre y volvemos a intentarlo. Nones. El GIMP (2.6) se cuelga con el ficherodeldiablo.ps.
Vale, saquemos las armas gordas:
$ locate gs_pdfwr.ps
/usr/share/ghostscript/8.63/lib/gs_pdfwr.ps
$ sudo vi /usr/share/ghostscript/8.63/lib/gs_pdfwr.ps
Buscamos lo siguiente:
% Patch ‘where’ so that the distiller operators are only visible
% if the pdfwrite device is the current one.
{ currentdevice .devicename dup /pdfwrite eq exch /ps2write eq or{
Donde pone /pdfwrite lo sustituímos por /pdfXYZwrite (o por cualquier otra cosa). Queda así:
% Patch ‘where’ so that the distiller operators are only visible
% if the pdfwrite device is the current one.
{ currentdevice .devicename dup /pdfXYZwrite eq exch /ps2write eq or{
Grabamos y salimos. Adiós, protecciones idiotas, adiós.
$ ps2pdf ficherodeldiablo.ps
$ evince ficherodeldiablo.pdf
PD: ¿y cómo quito las protecciones anti/impresión y anti copy/paste? Así