![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
|||
|
|||
|
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 |
|
#3
|
||||
|
||||
|
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. |
|
#4
|
||||
|
||||
|
Muy buena explicación, Tsk
Gracias y un saludo |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|