2008-12-10 7 views
12

A menudo recibo un PDF de nuestro diseñador (construido en Adobe InDesign) que se supone debe ser enviado a miles de personas.¿Cómo hacer combinación de correspondencia en la parte superior de un PDF?

Tengo la lista con todas las personas, y es fácil hacer una combinación de correspondencia en OpenOffice.org. Sin embargo, OpenOffice.org no es compatible con el PDF avanzado. Solo quiero imprimir un texto en cada página e imprimirlo.

Así es como lo hago ahora: imprima 6.000 copias del PDF, luego vuelva a ponerlas todas en la impresora e imprima el nombre, la dirección y otra información en la parte superior. Pero eso es caro

Tristemente, no puedo hacer el PDF en una imagen y usarlo en OpenOffice.org porque detiene la computadora. También lleva mucho tiempo enviar este trabajo a la impresora.

Entonces, ¿hay una manera fácil de hacer esta combinación de correspondencia (preferiblemente en Python) sin pagar soluciones cerradas de terceros?

+0

Entonces, ¿el PDF es un formulario? – Svante

Respuesta

2

Probablemente pueda consultar una biblioteca PDF como iText. Si usted tiene algún conocimiento de programación y un poco de tiempo se podría escribir un código que añade la información de contacto de los archivos PDF

1

Si no se puede conseguir la plantilla en otro formato de PDF una solución ad-hoc sencilla sería la de

  • convertir el PDF en una imagen
  • poner la imagen en el fondo de color del documento (OpenOffice.org)
  • campos
  • posición de combinación de correspondencia en la parte superior de la imagen
  • hacer la combinación de correspondencia e imprimir
+0

El trabajo de impresión se ENORME y nunca terminará. –

+0

Bueno, entonces lo más fácil sería pedirle a su diseñador que proporcione la plantilla en un formato viable (o para obtener una copia de Adobe Acrobat Professional, creo que debería haber alguna posibilidad de usar convertir el PDF a un formulario). Parece que el ROI de entregar 6000 letras debería justificar tal inversión. –

1

Probablemente la mejor manera sea generar otro PDF con el texto faltante y superponer un PDF sobre el otro. Un rápido Google encontró este enlace que muestra cómo hacerlo en Acrobat, y estoy seguro de que hay otros métodos también.

http://forums.macrumors.com/showthread.php?t=508226

1

Para un sin complicaciones, solución sin complicaciones, utilice iText simplemente añadir el texto al pdf. Por ejemplo, puede hacer lo siguiente para añadir texto a un documento PDF una vez cargado:

PdfContentByte cb= ...; 
cb.BeginText(); 
cb.SetFontAndSize(font, fontSize); 
float x = ...; 
float y = ...; 
cb.SetTextMatrix(x, y); 
cb.ShowText(fieldValue); 
cb.EndText();  

A partir de ahí, lo guarda como un archivo diferente, e imprimirlo.

Sin embargo, he encontrado que los campos de formulario son el camino a seguir con la generación de documentos PDF desde plantillas.

Si usted tiene una plantilla con campos de formulario (añadido con Adobe Acrobat), que tiene una de dos opciones:

  • Crear un archivo FDF, que es esencialmente una lista de valores para los campos del formulario . Un FDF es un documento de texto simple que hace referencia al documento original para que cuando abra el PDF, el documento se cargue con los valores de campo suministrados por el FDF.
  • De manera alternativa, cargue la plantilla con una biblioteca como iText/iTextSharp, complete los campos de formulario manualmente y guárdelo como un PDF independiente.

Un ejemplo del archivo FDF se parece a esto (robado de Planet PDF):

%FDF-1.2 
%âãÏÓ 
1 0 obj 
<<< 
/F(Example PDF Form.pdf) 
/Fields[ 
    << 
    /T(myTextField) 
    /V(myTextField default value) 
    >> 
    ] 
>> 
>> endobj trailer 
<> 
%%EOF 

Debido al formato simple y el pequeño tamaño de la FDF, este es el enfoque preferido, y el enfoque debería funcionar bien en cualquier idioma

Como para el llenado de los campos mediante programación, puede utilizar iText de la siguiente manera:

PdfAcroForm acroForm = writer.AcroForm; 
acroForm.Put(new PdfName(fieldInfo.Name), new PdfString(fieldInfo.Value)); 
+0

¿Pero puedo poner 6000 nombres en un FDF, o tengo que hacer 6000 archivos FDF y luego sacar 6000 archivos PDF de 5MiB (que serían ENORMES y demorarían para siempre)? –

8

Ahora he hecho una cuenta. Lo arreglé usando el ingenioso pdftk.

En mi misión paso totalmente por alto la función "fondo" y "superposición". Mi solución fue esta:

pdftk names.pdf background boat_background.pdf output out.pdf 

En caso de que alguien más tenga este problema. También escribí al respecto on my web page

+0

Estoy votando porque esta es la solución a otro problema que tengo, no formularios relacionados, sino más bien 'estampado' de texto en un pdf –

1

¿Qué hay de usar un programa de datos variables como - XMPie para Adobe Indesign. Es un complemento que debe hacer referencia a su lista de personas (aunque podría ser una lista en Excel).

2

Hay dos soluciones mucho más simples y más baratas.

En primer lugar, puede hacer su combinación de correspondencia directamente en InDesign utilizando DataMerge. Esta es una utilidad añadida a InDesign en el pasado en CS. Usted exporta o guarda sus nombres en formato CSV. Importe los datos en una plantilla de InDesign y luego incluya su nombre, dirección y dichos campos en el diseño. Presione Go. Creará un nuevo documento con todas las letras terminadas o puede dirigirse directamente a la impresora.

O bien, puede exportar sus datos a un archivo XML y crear un diseño dinámico utilizando marcadores de posición XML en InDesign.

El libro Una guía de diseñador de Adobe InDesign y XML le enseñará cómo hacerlo, o puede consultar los videos de Lynda.com para flujos de trabajo dinámicos con InDesign y XML.

Muy fácil de hacer.

Si desea crear archivos PDF separados para la combinación de correspondencia, puede ejecutar un archivo PDF largo con todos los nombres en un archivo y luego hacer un Extraer para separar archivos PDF en Acrobat Pro.

+2

¿Más barato? No como en costo al menos, porque pdftk es gratis. También es muy rápido. Al final he estado usando reportlab pdfgen plus pdftk para hacer este trabajo. Y de tomarse horas antes, ahora solo lleva unos segundos enviar por correo un archivo CSV de 50,000 páginas sobre un PDF. :-) –

0

Puede usar la función de combinación de datos de InDesign, o puede hacer lo que ha estado haciendo imprimiendo una parte del trabajo y luego imprimir la combinación de correspondencia encima de eso con Word u Open Office. Pero también busque una compañía que pueda hacer impresión offset de datos variables o publicación dinámica. Puede ser un poco más costoso desde el principio, pero puede ahorrar mucho cuando se trata de tiempo, pruebas, incluso embalaje y envío por correo.

0

Descargo de responsabilidad: soy el autor de esta herramienta.

me encontré con este número suficiente de veces que he construido una herramienta gratuita en línea para ello: https://pdfbatchfill.com/

Supone un formulario PDF como plantilla y usos que, junto con los datos del formulario CSV para generar un único PDF o archivos PDF individuales en un archivo zip.

Cuestiones relacionadas