FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Unir archivos PDF
Hola, buen día. Necesito generar un archivo PDF cuyo contenido sea el de varios pdf mas para obtener un solo archivo pdf final. Es posible hacerlo en Delphi 7?
He estado buscando pero no he logrado conseguir lo que necesito. Si alguien tiene algún dato lo agradezco. Saludos!!! |
#2
|
||||
|
||||
Casi todos los visores de pdf tienen una opción por línea de comandos para hacer eso.
Puedes ejecutarlo desde delphi con el típico shellexecute, por ejemplo, pasándole los parámetros adecuados. |
#3
|
|||
|
|||
Técnicamente puedes agarrar varios PDFs y unirlos sin necesidad de usar librerías o programas externos, ya que tu mismo puedes reconstruir la numeración de los objetos dentro del PDF y sus referencias. Si logras extraer la información de los objetos dentro del PDF y crear un árbol del objetos, te sería bastante fácil el unir varios PDFs.
Por lo general esta es la forma en que un PDF se forma Código:
%PDF-1.0 %âãÏÓ 1 0 obj << /Font << /F0 <</Type /Font /BaseFont /Times /Subtype /Type1>> >> >> endobj 2 0 obj << /Font << /F1 <</Type /Font /BaseFont /Times-Italic /Subtype /Type1>> >> >> endobj 3 0 obj << /Kids [4 0 R 7 0 R ] /Type /Pages /Count 2 >> endobj 4 0 obj << /Rotate 0 /Parent 3 0 R /Resources 1 0 R /MediaBox [0.000000 0.000000 612.000000 792.000000] /Contents [5 0 R 6 0 R ] /Type /Page >> endobj 5 0 obj <</Length 52>> stream BT /F0 36 Tf 1 0 0 1 50.0 700.0 Tm (Hola mundo)Tj ET endstream endobj 6 0 obj <</Length 80>> stream BT /F0 23.0 Tf 1 0 0 1 50.0 600.0 Tm (Primeras pruebas para unir dos PDFs.)Tj ET endstream endobj 7 0 obj << /Rotate 0 /Parent 3 0 R /Resources 1 0 R /MediaBox [0.000000 0.000000 612.000000 792.000000] /Contents [8 0 R 9 0 R ] /Type /Page >> endobj 8 0 obj <</Length 62>> stream BT /F0 36 Tf 1 0 0 1 50.0 700.0 Tm (Hola mundo página 2)Tj ET endstream endobj 9 0 obj <</Length 65>> stream BT /F0 23.0 Tf 1 0 0 1 50.0 600.0 Tm (Hola Mundo página 2.)Tj ET endstream endobj 10 0 obj << /Pages 3 0 R /Type /Catalog >> endobj xref 0 11 0000000000 65535 f 0000000018 00000 n 0000000105 00000 n 0000000199 00000 n 0000000270 00000 n 0000000421 00000 n 0000000521 00000 n 0000000649 00000 n 0000000800 00000 n 0000000910 00000 n 0000001025 00000 n trailer << /Root 10 0 R /Size 11 >> startxref 1079 %%EOF De cada PDF lo que te interesa extraer son los objetos Código:
X Y obj .... endobj Con esa información puedes reconstruir un PDF con la unión de dos o más PDFs, lo que tienes que modificar es: 1.- La numeración de los objetos, que podría aplicarse sólo a renumerar los objetos que pertenzcan al segundo PDF, más no al primero. 2.- Reconstruir el catálogo de páginas 3.- Reconstruir las Referencias 4.- Reconstruir la sección xref calculando las posiciones de los objetos (offset) 5.- Reconstruir el trailer 6.- en startxref calcular el offset de la tabla xref. Si analizamos la siguiente parte del código verás que no es del todo complejo Código:
xref 0 11 0000000000 65535 f 0000000018 00000 n 0000000105 00000 n 0000000199 00000 n 0000000270 00000 n 0000000421 00000 n 0000000521 00000 n 0000000649 00000 n 0000000800 00000 n 0000000910 00000 n 0000001025 00000 n trailer << /Root 10 0 R /Size 11 >> startxref 1079 Código:
0 11 Código:
0000000000 65535 f Después de esto viene el trailer, que nos indica cual objeto es la raiz del documento PDF, más la cantidad de objetos más 1 Código:
trailer << /Root 10 0 R /Size 11 >> El objeto 10 me envia al catálogo de páginas Código:
10 0 obj << /Pages 3 0 R /Type /Catalog >> endobj Código:
3 0 obj << /Kids [4 0 R 7 0 R ] /Type /Pages /Count 2 >> endobj |
#4
|
||||
|
||||
Hola.
Hace algunos años necesité hacer "merge" de varios pdfs y encontré esta librería, que en su versión "lite" es "free". Creo que esto te puede resolver el problema de forma fácil. Saludos
__________________
Be water my friend. |
#5
|
||||
|
||||
Muy buena explicación, Tsk
Gracias y un saludo |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Unir archivos Excel | cmfab | Varios | 7 | 18-07-2013 04:44:11 |
Unir archivos XML | vicvil | Varios | 0 | 07-11-2011 21:04:28 |
Unir Archivos | kdemia | Varios | 7 | 05-10-2011 19:37:32 |
Cómo Unir archivos avi | carmelina | Varios | 1 | 22-04-2009 13:01:39 |
Unir archivos | Khronos | Varios | 1 | 02-01-2008 04:27:53 |
|