¿Manejar (remapping) las fuentes faltantes / problemáticas (CID / CJK) en PDF con ghostscript?

En resumen, estoy tratando con un PDF problemático, que:

No se puede representar completamente en un visor de documentos comoevince, debido a la falta de información de la fuente;Sin embargo -ghostscript Puede reproducir completamente el mismo PDF.

Así, independientemente de quéghostscript Se utiliza para rellenar los espacios en blanco (Tal vez glifos de reserva o un método diferente para acceder a las fuentes.) - Me gustaría poder usarghostscript para producir ("destilar") un PDF de salida, donde más o menosnada será cambiado, excepto la información de la fuente agregada, por lo queevince puede hacer el mismo documento de la misma manera queghostscript puede.

Mipregunta es así - es esto posible hacer en absoluto; y si es así, ¿cuál sería la línea de comando para lograr algo así?

Muchas gracias de antemano por cualquier respuesta,
¡Aclamaciones!

Detalles:

En realidad estoy en un Ubuntu 10.04 más antiguo, y podría estar experimentando, no un error, sino un problema de instalación conevince (falta depoppler-data paquete), como se indica enError # 386008 "Algunas fuentes no se muestran debido a" Etiqueta de fuente desconocida ... ": Errores: paquete" poppler ": Ubuntu.

Sin embargo, eso es exactamente lo que me gustaría manejar, así que usaré elfontspec.pdf adjunta a ese puesto ("PDF desencadenando el error.",  /  /  v.) para demostrar el problema.

evince

Primero abro la página 3 de este pdf enevince; yevince se queja

$ evince --page-label=3 fontspec.pdf

Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Unknown font tag 'F5.1'
Error (7597): No font in show
Error: Unknown font tag 'F5.1'
Error (7630): No font in show
Error: Unknown font tag 'F5.1'
Error (7660): No font in show
Error: Unknown font tag 'F5.1'
...

La representación se ve así:

... y es obvio que faltan algunas formas de fuente.

Adobeacroread

Solo una nota sobre cómo se comporta Acrobat Reader para Linux de Adobe; la siguiente línea de comando:

$ ./Adobe/Reader9/bin/acroread /a "page=3" fontspec.pdf

... no genera salida al terminal en absoluto (para más en/a cambiar, verPágina de manual acroread) - y el programa no tiene absolutamente ningún problema para mostrar las fuentes.

Además, aunque me gustaría evitar el viaje de ida y vuelta a postscript, sin embargo, tenga en cuenta queacroread Se puede usar para convertir un PDF a postscript:

$ ./Adobe/Reader9/bin/acroread -v
9.5.1

$ ./Adobe/Reader9/bin/acroread -toPostScript \ 
-rotateAndCenter -choosePaperByPDFPageSize \
-start 3 -end 3 \
-level3 -transQuality 5 \
-optimizeForSpeed -saveVM \
fontspec.pdf ./ 

Nuevamente, la línea de comando anterior no generará salida al terminal;-optimizeForSpeed -saveVM están ahí porque aparentemente se ocupan de las fuentes; el ultimo argumento./ es el directorio de salida (el archivo de salida se llama automáticamentefontspec.ps).

Ahora,evince puede mostrar las fuentes que faltaban anteriormente en elfontspec.ps Salida - pero de nuevo se queja:

$ evince fontspec.ps 
GPL Ghostscript 9.02: Error: Font Renderer Plugin ( FreeType ) return code = -1
GPL Ghostscript 9.02: Error: Font Renderer Plugin ( FreeType ) return code = -1
...

... y además, todotexto parece estar aplanado a curvas en la posdata, por lo que ahora no se puede seleccionar el texto en el archivo .ps enevince más (tenga en cuenta que el archivo .ps no se puede abrir enacroread). Sin embargo, uno puede convertir este .ps nuevamente en .pdf:

$ pstopdf fontspec.ps   # note, `pstopdf` has no output filename option;
                        # it will automatically choose 'fontspec.pdf',
                        # and overwrite previous 'fontspec.pdf' in 
                        # the same directory 

... y ahora el texto en la salida depstopdf es seleccionable enevince, todas las fuentes están ahí, yevince ya no se queja Sin embargo, como señalé, me gustaría evitar el viaje de ida y vuelta a los archivos postscript.

display (desdeimagemagick)

También podemos observar la página en el mismo documento conimagemagicks display (tenga en cuenta quePanorámica de la imagen desde la línea de comandos usando 'mostrar' Aparentemente aún no está disponible, así que lo he usado.-crop abajo para ajustar la ventana):

$ display -density 150 -crop 740x450+280+200 fontspec.pdf[2]
   **** Warning: considering '0000000000 00000 n' as a free entry.
...
   **** This file had errors that were repaired or ignored.
   **** The file was produced by: 
   **** >>>> Mac OS X 10.5.4 Quartz PDFContext <<<<
   **** Please notify the author of the software that produced this
   **** file that it does not conform to Adobe's published PDF
   **** specification.

... lo que genera algoghostscripErrores ish - y resultados con algo como esto:

... donde es obvio que las fuentes que faltanevince no se pudo renderizar, ahora se muestran aquí, conimagemagicks displayapropiadamente

ghostscript

Finalmente, podemosutilizar ghostscript como visor x11 En sí - para observar la misma página, mismo documento:

$ gs -sDevice=x11 -g740x450 -r150x150 -dFirstPage=3 \
-c '<</PageOffset [-120 520]>> setpagedevice' \
-f fontspec.pdf

GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
Processing pages 3 through 74.
Page 3
>>showpage, press <return> to continue<<
^C

... y resultados con esta salida:

 

En conclusión:ghostscript (yaparentemente por extensión,imagemagick) aparentemente puede encontrar la fuente faltante (o al menos algún reemplazo), y mostrar una página con eso, incluso sievince falla en eso para el mismo documento.

Por lo tanto, me gustaría simplemente exportar una versión PDF desdeghostscript, eso tendría solo las fuentes faltantes incrustadas, y ningún otro procesamiento; así que intento esto:

$ gs -dBATCH -dNOPAUSE -dSAFER  \
-dEmbedAllFonts -dSubsetFonts=true -dMaxSubsetPct=99 \
-dAutoFilterMonoImages=false \
-dAutoFilterGrayImages=false \
-dAutoFilterColorImages=false \
-dDownsampleColorImages=false \
-dDownsampleGrayImages=false \
-dDownsampleMonoImages=false \
-sDEVICE=pdfwrite \
-dFirstPage=3 -dLastPage=3 \
-sOutputFile=mypg3out.pdf -f fontspec.pdf

GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
Processing pages 3 through 3.
Page 3

   **** This file had errors that were repaired or ignored.
   **** The file was produced by:
   **** >>>> Mac OS X 10.5.4 Quartz PDFContext <<<<
   **** Please notify the author of the software that produced this
   **** file that it does not conform to Adobe's published PDF
   **** specification.

... pero no funciona - el archivo de salidamypg3out.pdf sufre de los mismos problemas enevince como se señaló anteriormente.

Nota: Aunque me gustaría evitar el viaje de ida y vuelta en posdata, un buen ejemplo degs La línea de comandos con pdf a ps con incrustación de fuentes está aquí:(# 277826) pdf - Cómo hacer que PS2PDF de GhostScript deje de subcontratar fuentes; pero la misma línea de comando cambia para que .pdf a .pdf no parezca tener ningún efecto en el problema descrito anteriormente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta