Pregunta

Me gustaría preguntar si es posible editar archivos PDF utilizando el xpdf de la biblioteca y en caso afirmativo, ¿cómo? Supongo que esto es posible, pero no pude encontrar algún tutorial ni documentación para xpdf, así que tengo realmente ninguna idea :(. También estoy abierto para el uso de otra biblioteca en su caso otro tiene soporte para Edición pdf. mi único requisito para dicha biblioteca es que tiene que ser un C ++ biblioteca o al menos una C uno y tiene que ser multiplataforma (Windows y Linux)

Sólo necesito edición básica de un archivo PDF por ejemplo:

  

"Este es un texto en un documento PDF" sería cambiado a "este es un texto en pdf" con un color de texto diferente.

Gracias por todas sus respuestas!

¿Fue útil?

Solución

Para que lo entienda el alcance de lo que se está metiendo "edición básica" de PDF contenido es casi siempre no trivial.

Contenido de la página en PDF está representada por programas cortos RPN que pintan en la página. Es un lenguaje pequeño similar a PostScript en la semántica, pero sin la estructura del bucle o definiciones de funciones (lo que no hay problema de la parada). En un mundo cuerdo, el texto en la página va a ser representado por algo como esto:

BT /F1 12 Tf 72 720 Td (this is a text in a pdf document) Tj ET

, que cuando se traduce en algo más familiar, es la siguiente:

BeginText();
SetFont(F1, 12.0);  // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a text in a pdf document");
EndText();

Así que en este caso, hay que transformar esto en algo como esto:

BeginText();
SetFont(F1, 12.0);  // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a ");
SetFont(F2, 12);
ShowText("text");
SetFont(F1, 12);
ShowText(" in a pdf document");
EndText();

que se convertiría en:

BT /F1 12 Tf 72 720 Td (this is a ) Tj /F2 12 Tf (text) Tj /F1 12 Tf
( in a pdf document) Tj ET

en el PDF equivalente. El problema es que muchas veces:

  1. Hay que extraer la página y todos sus recursos (no trivial)
  2. Hay que generar una nueva página, inserción de nuevos recursos (va a añadir un nuevo tipo de letra), la incorporación de la fuente si permisible
  3. Modificar el flujo de contenido de la página para incluir su contenido modificado.

Y 3 es donde vas a quedar atascado, ya que hay un número infinito de formas de generar una página que tiene el contenido que usted describe e incluso con una biblioteca decente, vas a tener un tiempo duro tal vez conseguir un 70% de ellos. Permítaseme describir brevemente por qué esto es tan malo como suena. Hay programas de generación de PDF (estoy mirando a ti, troff) que ponen todo el texto en una página en primer lugar, a continuación, poner todo el texto en cursiva, a continuación, todo el texto en negrita. Juro que no lo estoy inventando. Algunos programas quieren poner el texto hacia abajo de manera muy precisa, por lo que si tienes suerte, que vamos a usar el operador TJ que establece el texto con espaciado manual específico. Si no tienes suerte (que es la mayoría del tiempo), que están en su lugar disponer el texto con un conjunto de movimientos antes de cada glifo en la página. ¿Y si el texto se presenta nuestra en una curva o una orientación inusual (mapas, anuncios)? ¿Qué pasa con los casos en que alguien cambia sutilmente el tamaño de fuente para una mayor distinción entre mayúsculas y minúsculas o simula versales?

Esto es por qué, cuando escribí la herramienta de texto hallazgo para Acrobat 1.0, que me llevó dos meses de sudor de manejar ya que muchos de los casos extremos. Esta no es la edición de texto -. Que sólo está tratando de encontrar una sola palabra o frase

No voy a recomendar una biblioteca para usted - lo siento - xpdf di una breve mirada una y no está claro si es o no tiene capacidades de generación de PDF o si es simplemente un consumidor de PDF. Pdflib, que es un producto comercial, parece ser para generar PDF, aunque no está claro si puede consumirlo, pero que sin duda podría conseguir ambos lados pegando juntos.

Si fuera yo, me gustaría utilizar herramientas que he desarrollado y todavía habría un poco tímido de esta tarea. Mi biblioteca está siendo utilizado por Atalasoft , la empresa donde trabajo, para generar archivos PDF desde la nada y para hacer la edición dentro de un dominio muy limitado (anotaciones, los metadatos del documento). La parte más difícil es que hacemos nuestro mejor esfuerzo para ocultar la complejidad de PDF de nuestros clientes. En general, nuestros clientes quieren nos para entender la especificación en lugar de ellos y hacer que el resto fácil - pero este tipo de tareas (redacción es otro), son realmente difícil de hacer sin entender la profundidad del PDF especificación. Si usted comienza a entrar en el mundo de las bibliotecas de la manipulación de PDF, usted debe comenzar con la lectura de la especificación, especialmente el capítulo 8 (Gráficos) y el capítulo 9 (texto), y obtendrá una mejor comprensión de lo que vas a tener que hacer con la biblioteca.

Otros consejos

xpdf es una biblioteca PDF de sólo lectura. No puede escribir PDF mucho menos modificar el contenido.

¿Has mirado en itext / ISHarp para editar archivos PDF?

Aunque no es una biblioteca en sentido tradicional, PDFedit tiene capacidades de edición de secuencias de comandos. Pero requiere QT. PodoFo probablemente mejor se adapte a sus necesidades. También hay PdfHummus .

Sin embargo, ten en cuenta que si usted está esperando para editar el texto del PDF generado por las herramientas fuera de su control, es probable que se enfrentan a algunos problemas. El problema es - y @plinth lo mencionó -. Hay muchas maneras de texto generado que parecen similares pero que contextualmente son muy diferentes entre sí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top