que puede para paquete pagina necesita mostrar incrustar incrustada fuentes fuente font extraer esta descargar correctamente pdf fonts ghostscript true-type-fonts embedded-fonts

pdf - para - no se puede extraer la fuente incrustada font 1



¿Cómo puedo extraer las fuentes incrustadas de un PDF como archivos de fuentes válidos? (6)

Finalmente encontró el paquete de instalador de FontForge para Windows y abrió el PDF a través del programa instalado. Trabajó un placer, muy feliz.

pdftk.exe utilidad pdftk.exe que puede indicar qué fuentes utiliza un PDF y si están incrustadas o no.

Ahora el problema: dado que tenía archivos PDF con fuentes incrustadas, ¿cómo puedo extraer esas fuentes de manera que se puedan reutilizar como archivos de fuentes regulares? ¿Hay herramientas (preferiblemente gratuitas) que pueden hacer eso? Además: ¿se puede hacer esto mediante programación con, digamos, iText?


Tienes varias opciones. Todos estos métodos funcionan tanto en Linux como en Windows o Mac OS X. Sin embargo, tenga en cuenta que la mayoría de los PDF no incluyen la fuente completa cuando tienen una fuente incrustada. En su mayoría, incluyen solo el subconjunto de glifos utilizados en el documento.

Usando pdftops

Uno de los métodos más utilizados para hacer esto en los sistemas * nix consiste en los siguientes pasos:

  1. Convierta el PDF a PostScript, por ejemplo, utilizando los pdftops de pdftops (en el programa auxiliar Windows: pdftops.exe .
  2. Ahora las fuentes se incrustarán en .pfa (PostScript) + puede extraerlas usando un editor de texto .
  3. Puede necesitar convertir .pfa (ASCII) a un .pfb (binario) usando t1utils y pfa2pfb .
  4. En los archivos PDF, nunca hay archivos .pfm o .afm (archivos métricos de fuentes) incrustados (porque el visor de PDF tiene conocimiento interno sobre estos). Sin estos, los archivos de fuentes son difícilmente utilizables de una manera visualmente agradable.

Usando fontforge

Otro método es utilizar el editor de fuentes gratuito FontForge :

  1. Utilice el cuadro de diálogo "Abrir fuente" utilizado al abrir archivos.
  2. Luego seleccione "Extraer de PDF" en la sección de filtro del cuadro de diálogo.
  3. Seleccione el archivo PDF con la fuente que se extraerá.
  4. Se abre un cuadro de diálogo "Seleccionar una fuente" : seleccione aquí qué fuente abrir.

Consulte el manual de FontForge. Es posible que deba seguir algunos pasos específicos que no son necesariamente sencillos para guardar los datos de la fuente extraída como un archivo que se puede reutilizar.

Usando mupdf

Luego, MuPDF . Esta aplicación viene con una utilidad llamada pdfextract (en Windows: pdfextract.exe ) que puede extraer fuentes e imágenes de archivos PDF. (En caso de que no sepa acerca de MuPDF, que todavía es relativamente nuevo y desconocido: "MuPDF es un visor de PDF ligero y gratuito y una caja de herramientas escrita en C. portátil" , escrito por los desarrolladores de Artifex Software, la misma compañía que nos brindó Ghostscript. )
( Actualización: las versiones más recientes de MuPDF han trasladado la funcionalidad anterior de ''pdfextract'' al comando ''mutool extract'' . Descárguelo aquí: mupdf.com/downloads )

Nota: pdfextract.exe es un programa de línea de comandos. Para usarlo, haz lo siguiente:

c:/> pdfextract.exe c:/path/to/filename.pdf # (on Windows) $> pdfextract /path/tofilename.pdf # (on Linux, Unix, Mac OS X)

Este comando vaciará todos los archivos extraíbles del archivo pdf al que se hace referencia en el directorio actual. En general, verá una variedad de archivos: imágenes y fuentes. Estos incluyen PNG, TTF, CFF, CID, etc. Los nombres de las imágenes serán como img-0412.png si el número de objeto PDF de la imagen fuera 412. Los nombres de las fuentes serán como FGETYK + LinLibertineI-0966.ttf , si la fuente El número de objeto PDF era 966.

Los archivos CFF ( Compact Font Format ) son un formato reconocido que se puede convertir a otros formatos a través de una variedad de convertidores para usar en diferentes sistemas operativos.

De nuevo: tenga en cuenta que la mayoría de estos archivos de fuentes pueden tener solo un subconjunto de caracteres y pueden no representar el tipo de letra completo.

Actualización: (julio de 2013) Las versiones recientes de mupdf han visto una reorganización interna y el cambio de nombre de sus binarios, no solo una, sino varias veces. La utilidad principal solía ser un binario ''similar al cuchillo suizo'' llamado mubusy (nombre inspirado en busybox?), Que más recientemente fue rebautizado como mutool . Estos son compatibles con los sub comandos de info , clean , extract , show y show . Desafortunadamente, la documentación oficial para estas herramientas no está actualizada (todavía). Si está en una Mac con ''MacPorts'': se cambió el nombre de la utilidad para evitar conflictos de nombres con otras utilidades con nombres idénticos, y es posible que deba usar mupdfextract .

Para lograr los resultados (aproximadamente) equivalentes con mutool como lo hizo su herramienta anterior pdfextract , simplemente ejecute mubusy extract ... *

Por lo tanto, para extraer fuentes e imágenes, puede necesitar ejecutar una de las siguientes líneas de comando:

c:/> mutool.exe extract filename.pdf # (on Windows) $> mutool extract filename.pdf # (on Linux, Unix, Mac OS X)

Las descargas están aquí: mupdf.com/downloads

Usando gs (Ghostscript)

Luego, Ghostscript también puede extraer fuentes directamente de archivos PDF. Sin embargo, necesita la ayuda de un programa de utilidad especial llamado extractFonts.ps , escrito en lenguaje PostScript, que está disponible en el repositorio de código fuente de Ghostscript .

Ahora extractFonts.ps , necesita ejecutar ambos, este archivo extractFonts.ps y su archivo PDF. Ghostscript luego usará las instrucciones del programa PostScript para extraer las fuentes del PDF. Se ve así en Windows (sí, Ghostscript entiende la ''barra diagonal'', /, como un separador de ruta también en Windows):

gswin32c.exe ^ -q -dNODISPLAY ^ c:/path/to/extractFonts.ps ^ -c "(c:/path/to/your/PDFFile.pdf) extractFonts quit"

o en Linux, Unix o Mac OS X:

gs / -q -dNODISPLAY / /path/to/extractFonts.ps / -c "(/path/to/your/PDFFile.pdf) extractFonts quit"

He probado el método Ghostscript hace unos años. En ese momento extrajo * .ttf (TrueType) bien. No sé si también se extraerán otros tipos de fuentes, y si es así, de una manera reutilizable. No sé si la utilidad bloquea la extracción de fuentes que están marcadas como protegidas.

Usando pdf-parser.py

Finalmente, el pdf-parser.py Didier Stevens: este probablemente no es tan fácil de usar, porque necesita tener algunos conocimientos sobre las estructuras internas de PDF. pdf-parser.py es una secuencia de comandos de Python que también puede hacer muchas otras cosas. También puede descomprimir y extraer secuencias arbitrarias de objetos y, por lo tanto, también puede extraer archivos de fuentes incrustadas.

Pero debes saber qué buscar. Veámoslo con un ejemplo. Tengo un archivo llamado big.pdf . Como primer paso, uso el parámetro -s para buscar en el PDF cualquier aparición de la palabra clave FontFile ( pdf-parser.py no requiere una búsqueda sensible a mayúsculas y minúsculas):

pdf-parser.py -s fontfile big.pdf

En mi caso, para mi big1.pdf , obtengo este resultado:

obj 9 0 Type: /FontDescriptor Referencing: 15 0 R << /Ascent 728 /CapHeight 716 /Descent -210 /Flags 32 /FontBBox [ -665 -325 2000 1006 ] /FontFile2 15 0 R /FontName /ArialMT /ItalicAngle 0 /StemV 87 /Type /FontDescriptor /XHeight 519 >> obj 11 0 Type: /FontDescriptor Referencing: 16 0 R << /Ascent 728 /CapHeight 716 /Descent -210 /Flags 262176 /FontBBox [ -628 -376 2000 1018 ] /FontFile2 16 0 R /FontName /Arial-BoldMT /ItalicAngle 0 /StemV 165 /Type /FontDescriptor /XHeight 519 >>

Me dice que hay dos instancias de FontFile2 dentro del PDF, y estas están en los objetos PDF no. 15 y no. 16, respectivamente. Objeto no. 15 contiene /FontFile2 para fuente / ArialMT , objeto no. 16 contiene /FontFile2 para fuente / Arial-BoldMT .

Para mostrar esto más claramente:

pdf-parser.py -s fontfile big1.pdf | grep -i fontfile /FontFile2 15 0 R /FontFile2 16 0 R

Un vistazo rápido a la especificación PDF revela que la palabra clave /FontFile2 relaciona con una ''secuencia que contiene un programa de fuente TrueType'' ( /FontFile se relacionaría con una ''secuencia que contiene un programa de fuente Tipo 1'' y /FontFile3 se relacionaría con '' una secuencia que contiene un programa de fuente cuyo formato se especifica mediante la entrada Subtipo en el diccionario de secuencia '' {por lo tanto, es un subtipo Type1C o CIDFontType0C }.)

Para ver específicamente el objeto PDF no. 15 (que contiene la fuente / ArialMT ), se puede usar el parámetro -o 15 :

pdf-parser.py -o 15 big1.pdf obj 15 0 Type: Referencing: Contains stream << /Length1 778552 /Length 1581435 /Filter /ASCIIHexDecode >>

Este resultado pdf-parser.py nos dice que este objeto contiene una secuencia (que no se mostrará directamente) que tiene una longitud de 1.581.435 Bytes y está codificada (== "comprimida") con ASCIIHexEncode y necesita ser decodificada ( == "descomprimido" o "filtrado") con la ayuda del filtro estándar /ASCIIHexDecode .

Para descargar cualquier flujo de un objeto, se puede pdf-parser.py con el parámetro -d dumpname . Vamos a hacerlo:

pdf-parser.py -o 15 -d dumped-data.ext big1.pdf

Nuestro volcado de datos extraídos estará en el archivo llamado datos -volcados.ext . Veamos qué tan grande es:

ls -l dumped-data.ext -rw-r--r-- 1 kurtpfeifle staff 1581435 Apr 11 00:29 dumped-data.ext

Oh, mira, es 1.581.435 Bytes. Vimos esta figura en la salida del comando anterior. Abrir este archivo con un editor de texto confirma que su contenido es datos codificados hexadecimales ASCII.

Abrir el archivo con una herramienta de lectura de fuentes como otfinfo (esto es parte del paquete lcdf-typetools ) provocará cierta decepción al principio:

otfinfo -i dumped-data.ext otfinfo: dumped-data.ext: not an OpenType font (bad magic number)

OK, esto es porque no (todavía) dejamos que pdf-parser.py haga uso de toda su magia: para volcar un flujo filtrado y decodificado. Para esto tenemos que agregar el parámetro -f :

pdf-parser.py -o 15 -f -d dumped-data-decoded.ext big1.pdf

¿Cuál es el tamaño de este nuevo archivo?

ls -l dumped-data-decoded.ext -rw-r--r-- 1 kurtpfeifle staff 778552 Apr 11 00:39 dumped-data-decoded.ext

Oh, mira: ese número exacto también estaba almacenado en el objeto PDF no. 15 diccionario como el valor para la clave /Length1 ...

¿Qué file cree que es?

file dumped-data-decoded.ext dumped-data-decoded.ext: TrueType font data

¿Qué nos dice otfinfo al respecto?

otfinfo -i dumped-data-decoded.ext Family: Arial Subfamily: Regular Full name: Arial PostScript name: ArialMT Version: Version 5.10 Unique ID: Monotype:Arial Regular:Version 5.10 (Microsoft) Designer: Monotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982 Manufacturer: The Monotype Corporation Trademark: Arial is a trademark of The Monotype Corporation. Copyright: © 2011 The Monotype Corporation. All Rights Reserved. License Description: You may use this font to display and print content as permitted by the license terms for the product in which this font is included. You may only (i) embed this font in content as permitted by the embedding restrictions included in this font; and (ii) temporarily download this font to a printer or other output device to help print content. Vendor ID: TMC

Entonces, ¡Bingo !, tenemos un ganador: pdf-parser.py realmente extrajo un archivo de fuente válido para nosotros. Dado el tamaño de este archivo (778.552 Bytes), parece que esta fuente se ha incrustado incluso completamente en el PDF ...

Podríamos cambiarle el nombre a arial-regular.ttf e instalarlo como tal y felizmente hacer uso de él.

Advertencias:

  • En cualquier caso, debe seguir la licencia que se aplica a la fuente. Algunas licencias de fuentes no permiten el uso y / o distribución gratuitos. La piratería de fuentes es como piratear cualquier software u otro material con derechos de autor.

  • La mayoría de los archivos PDF que están en libertad no incluyen la fuente completa de todos modos, sino solo subconjuntos. La extracción de un subconjunto de una fuente solo es útil en un ámbito muy limitado, si es que lo es.

Lea también lo siguiente sobre Pros y (más) Desventajas sobre los esfuerzos de extracción de fuentes:




PDF2SVG versión 6.0 de PDFTron hace un trabajo razonable. Produce fuentes OpenType ( .otf ) de forma predeterminada. Use --preserve_fontnames para preservar "el esquema de nombres de fuentes / familias de fuentes obtenido del archivo fuente".

PDF2SVG es un producto comercial, pero puede descargar un ejecutable de demostración gratuito (que incluye marcas de agua en la salida de SVG pero no restringe el uso). Puede haber otros productos PDFTron que también extraigan fuentes, pero recientemente descubrí PDF2SVG.