Me gustan los retos informáticos. Los que seguís este blog lo sabréis, y seguramente habréis disfrutado como yo con retos como el HackIt, HackIt2 y HackIt3. Pero no sólo de HackIts vive el hombre (ya podría ser!) 🙂 Así que, hoy traigo un reto más mundano: tenemos un PDF sin números de página (las hojas no están paginadas, vaya). El reto consiste en añadirle a cada página su número (1, 2, 3… etc.). Repito: es un PDF (no tengo el documento original a partir del cuál se creó). Y no quiero añadir los números a mano, claro, porque podría eternizarme 😉 Quiero que el ordenador trabaje por mí, y por supuesto, sólo se admiten soluciones basadas en software libre. ¿Te animas a superar el reto? Mañana (día 3 de Marzo), postearé la solución, pero mientras, ¡espero vuestras aportaciones! 😉
Buenas!
Estoy intentando crear un script para la librería pdfforge.dll para usar el método AddPageNumberToPDFFile, pero mientras tanto he encontrado:
http://www.a-pdf.com/index.htm
No es muy HackIt, pero útil si que es…
Un saludo
Seguro que hay alguna forma mejor.
Va voy a poner una solución a mi estilo:
Con el openoffice generas un pdf con tantos números de página y páginas como tenga el pdf al que quieras añadir los números de página. (Esto se puede hacer con latex pero no tengo ganas de pensar)
Una vez hecho esto haces lo siguiente:
pdftk in.pdf multibackground back.pdf output out.pdf
in.pdf es el fichero que querías ponele los número de página.
back.pdf es el fichero con los números de página ya puestos.
out.pdf es el resultado.
Man de pdftk:
multibackground
Same as the background operation, but applies each page of the background PDF to the corresponding page of the input PDF. If the input PDF has more pages than the stamp PDF, then the final stamp page is repeated across these remaining pages in the input PDF.
Buenas otra vez,
Usando PDFCreator, en concreto el plugin pdfforge.dll y con un script he conseguido numerar un PDF.
Este es el código del fichero .vbs
Option Explicit
Dim pdf, pdfText, WshShell
Set WshShell = WScript.CreateObject(«WScript.Shell»)
Set pdf = WScript.CreateObject(«pdfforge.pdf.pdf»)
Set pdfText = Wscript.CreateObject(«pdfforge.pdf.pdfText»)
pdfText.Text = «[PAGE]/[PAGES]»
pdf.AddPageNumberToPDFFile «fich_entrada.pdf», «fich_paginado.pdf», 1, 0, 1, 0, 6, 10.0, 10.0, (pdfText)
Set pdfText = Nothing
Set pdf = Nothing
¿qué tal usar iText desde Java? 😉
lpr -p /home/user/texto.pdf
man lpr
-p
Specifies that the print file should be formatted with a shaded
header with the date, time, job name, and page number. This option
is equivalent to «-o prettyprint» and is only useful when printing
text files.
Es decir, coloca una cabecera en cada página con: Fecha – hora, nombre del trabajo (el título del documento) y número de página.
Es una opción poco versátil, pero muy rápida y efectiva. Además no es necesario instalar nada, siempre y cuando el PC tenga soporte para impresión.
Genero muchos pdf con libreoffice (unos con calc y otros con writer) los uno con pdfsam [1].
Tengo el mismo problema que Joanan, la numeración…..
A-pdf fue mi primera eleccion, un desastre!!!
Desde luego no hacia lo que prometia.
Seguiré muy atento a este hilo, es vital para mi.
[1] http://www.pdfsam.org/
Aupa Ander,
dejé un script que resuelve, usando pdfedit, en el post del 4 de Marzo:
http://diariolinux.com/2011/03/04/solucion-al-reto-de-paginacion-de-un-pdf/
Ya nos contarás…
Hace ya años que se lanzó esta consulta, pero en el 2013 apareció una herramienta para windows que creo que mejora a las otras soluciones aportadas. Se llama «Coherent PDF command line tools» (https://community.coherentpdf.com).
cpdf puede realizar multitud de acciones para editar PDFs desde la línea de comandos.
En concreto, para poner los números de página el comando a ejecutar es:
cpdf -add-text «%Page de %EndPage» -bottom 30pt in.pdf -o out.pdf
Manual: http://www.coherentpdf.com/cpdfmanual.pdf
Licencia: uso no comercial. Para uso comercial hay que comprar una licencia en https://www.coherentpdf.com/buy.html