Contactos

Ensayo con respecto a la creación de archivos PDF. Añadir a la vista del programa PDF con ActiveX Delphi Open PDF Archivo

En este artículo, considera cómo crear el tuyo. pDF.-Documentos, y en el siguiente artículo considera cómo puede ver pDF.-Documentos en sus proyectos, así como contenido de impresión, moverse de acuerdo con el documento y así sucesivamente.

Para esto necesitamos componentes de las pestañas. Delirio.. Instalemos los componentes que necesita para trabajar, y esto es:

  • Trvndrwriter
  • Trvrenderpdf.
  • Tbutton.

Componente Trvndrwriter Diseñado para grabar en pDF.Información de archivo (texto, gráfico), a través de la corriente.

Componente Trvrenderpdf.diseñado para crear, dibujar información (texto, gráfico, etc.). Bueno, presionando el botón, entraremos en algo en nuestro pDF.-expediente.

Desde la teoría, no escribiremos nada para escribir nada, pero inmediatamente pasaremos a la programación, pero también debes crear primero un vacío ordinario. pDF.-File y ponlo en la raíz con el programa. Más adelante en el evento Al hacer clic.nuestro botón escribiremos el siguiente código:

procedimiento TForm1. Button1Click (remitente: TOGECT); Corrientes VAR: TMemoryStream; Comenzar a los arroyos: \u003d tMemoryStream. Crear; Rvndrwriter1. Corriente: \u003d Corrientes; Rvndrwriter1. Ejecutar; Rvrenderpdf1. PrintRender (Streams, "test.pdf"); ShellexEcute (asa, nil, "test.pdf", "", "", sw_show); Freeandnil (arroyos); final;

Cree un flujo en el que dibujemos toda la información, luego ejecute el dibujo, especifique el archivo al que se realizará el sorteo de datos y al final destruimos el flujo.

Todos ahora, necesitamos un evento que ocurra al dibujar datos, retiraremos toda nuestra información en ella. Seleccione Componente Trvndrwritery pasar por la lista de eventos de este componente, después de lo cual encontramos un evento OnPrint.y en este evento escribimos el siguiente código:

procedimiento TForm1. Imprimir (remitente: TOGECT); Comience BMP: \u003d TBITMAP. Crear; BMP. Cargarfromfile ("test.bmp"); Con rvndrwriter1 comienzan a SetFont ("Arial", 16); FontColor: \u003d Clgreen; Imprimir ("texto de prueba"); TIPTHEADER ("BEART PDF Archivo", PJCenter); Printfooter ("Friend PDF Archivo", PJCenter); Lineto (10, 10); PrintBitMap (1, 1, 1, 1, BMP); final; Freeandnil (BMP); final;

Bueno, primero, cargamos la foto. * .bmpnaturalmente variable bip, tenemos un objeto de clase TBITMAP.. Cargamos para sacarlo en nuestro pDF.- Documento.

Y luego, creo que todo está claro, el procedimiento. TIPTHEADER.- muestra una inscripción en el título del documento (páginas), el procedimiento Printfooter.- Muestra una inscripción al final del documento (páginas). Procedimiento Imprimir- Muestra la imagen al documento, el procedimiento. Setfont.- Establece la fuente del documento, procedimiento. Color de fuente- Establece el color de la fuente del documento.

Para este ejemplo, necesitaremos los siguientes componentes que están en la pestaña Rave. Y así, proceda a la instalación de los componentes que necesitamos, a saber:

  • Trvndrwriter
  • Trvrenderpdf.
  • Tbutton.

Sugiero un poco para detenerse en estos componentes y entender por qué sirven. Por cierto, rechazé la información de un par de libros que compré. progbook.ru.. Por lo tanto, si desea comprar libros decentes en Delphi, entonces Mercy le pregunte a esta tienda.

Entonces, los primeros tenemos un componente de TrvnDrwriter. Este componente nos obliga a escribir en la información del archivo PDF, no importa cuál, lextual o gráfica, a través del flujo.

Procedimiento TForm1.Button1Click (remitente: TOGECT); Corrientes VAR: TMemoryStream; Comienza a los arroyos: \u003d tmemorystream.create; Rvndrwriter1.stream :\u003dstreams; Rvndrwriter1.exedecute; Rvrenderpdf1.printrender (Streams, "test.pdf"); ShellexEcute (asa, nil, "test.pdf", "", "", sw_show); Freeandnil (arroyos); final;

El siguiente componente es TrvrenderPDF. Es necesario que podamos crear, o más bien para dibujar información, ya sea texto o gráfico. En consecuencia, después de presionar el botón, escribimos la información que necesita en nuestro archivo PDF.

Pero no nos rollaremos enérgicamente, pero iremos de inmediato al tema de interés, a saber, a la programación :)

Para empezar, debemos crear un archivo PDF vacío ordinario y colocarlo en la carpeta raíz de nuestro programa.

En este código, creamos un flujo donde dibujaremos la información que necesitamos, después de lo cual comenzamos el dibujo, especifique nuestro archivo PDF final al que se realizará el sorteo de datos y al final cerramos el flujo.

Después de ejecutar esto, necesitamos un evento que ocurra cuando se produce el dibujo de datos, en este evento retiraremos la información que necesitamos.

Analizaremos el código. Para empezar, descargo la imagen * .BMP, cree un BMP variable y un objeto de clase TBITMAP. Lo descargo para dibujarlo en nuestro archivo PDF.

Creo que no lo describe, no vale la pena, sino que, por lo tanto, el procedimiento de cuidados de impresión: agrega una inscripción en el encabezado del documento, el procedimiento Printfooter: agrega una inscripción al final del documento. Procedimiento PrintBitMAP: agrega una imagen a un documento, el procedimiento SetFont: establece el documento de fuente deseado, el procedimiento de FontColor: establece el color deseado de la fuente del documento.

Todas las funciones y procedimientos gráficos posteriores son exactamente los mismos que en la salida de información gráfica sobre otros componentes.

Función de NewPage I Uso para crear una nueva hoja en el documento. Todo lo que se agregará después de que se envíe, se mostrará en una nueva hoja de documento.

Importante¡Que todos los módulos: RPRENDER, RPRENDPDF, RPDEFINE, RPBASE, RPFILER, RPRAVE, RPCON estaban conectados al proyecto!

Las capacidades del componente declaradas por los desarrolladores:

  • Soporte para gráficos vectoriales y ráster en documentos PDF
  • PDF Contraseña de protección de documentos
  • Soporta acroformas / formularios PDF
  • Marcas de agua
  • Generación de documentos PDF con referencias internas y externas, enlaces web y marcadores
  • Apoyo completo Unicode.
  • Soporte para varias fuentes, formato de texto, ubicación de texto en varias columnas
  • Apoyo de Tcanvas
  • Archiver incorporado para la compresión del texto y la información de gráficos en el documento
  • Tiff Transformación en PDF

Como ejemplo, decidí cobrar una solicitud de demostración que viene en el kit junto con el componente. Thhotpdf.. La aplicación es bastante simple: genera PDF-KU con dos enlaces y texto simple. El código también es simple y comprensible:

procedimiento TForm1. HelloworldButtonClick (remitente: TOGECT); Comience HPDF. Begindoc; HPDF. Página actual. PrintHyperLink (20, 35, "Sitio web:" + MAYEDIT. Texto, MAYEIT. Texto); HPDF. Página actual. SetFont ("Times New Roman",, 16); HPDF. Página actual. Sergbhyperlinkcolor (climado); HPDF. Página actual. PrintHyperLink (20, 50, "Página de pedido:" + Compraredit. Texto, compra. Texto); HPDF. Página actual. SetFont ("Times New Roman", 14); HPDF. Página actual. TextOut (20, 75, 0, "Haga clic en el enlace para navegar"); HPDF. Enddoc; final;

Incluso sin entrar en las sutilezas del componente, se puede entender que y cómo sucede en este ejemplo de demostración. Ejecutar, miramos la apariencia del documento generado:

Estos son estos dos rectángulos azules en el documento: enlaces a dos páginas ... y el texto simple "Haga clic en el enlace para navegar", no se observa en ningún lugar. Aunque, es necesario rendir homenaje, al hacer clic en un rectángulo, el enlace realmente se abre. En general, los desarrolladores se han apresurado a declarar apoyo de Delphi hasta XE3, ya sea que funcione con tanta interesante, la versión de prueba funciona, pero después del lanzamiento de este ejemplo de demostración, de alguna manera dejé caer el deseo de usar Thhotpdf incluso gratis. Moviéndose más lejos.

4. Piloto del Creador PDF

Costo: desde $ 450 sin código fuente hasta $ 9950 (!!!) con fuente
5-XE4.
http://www.colorpilot.com/pdflibrary.html#download

Biblioteca que vale casi como Delphi XE3 Professional ... Bueno, bueno, veamos qué es esta biblioteca.

Las características declaradas por los desarrolladores:

  • Conjunto avanzado de métodos y propiedades para una fácil creación de PDF;
  • Leer y fusionar documentos PDF existentes;
  • Agregar y eliminar páginas de documentos PDF;
  • Soporte para Unicode;
  • Creando marcas de agua para cada página;
  • Añadiendo miniaturas para un documento PDF;
  • Usar e incrustar fuentes (truetype, opentype, tipo1, etc.);
  • Creando documentos PDF interactivos utilizando JavaScript e hipervínculos;
  • Soporte para elementos interactivos Acroform: Campos de texto Entrada, botones, botones de radio, listados desplegables, casillas de verificación;
  • la protección de cifrado y contraseña creó documentos PDF;
  • Creando y gestionando el contenido del documento;
  • Acceda a HDC para dibujar en páginas PDF usando funciones WINAPI.
  • Usando imágenes en varios formatos (JPEG, TIFF, PNG, BMP, GIF);
  • Creación y uso de anotaciones;
  • Creación de documentos PDF en el disco o en la memoria;
  • Extracción de texto de documentos PDF;

En general, una lista de oportunidades bastante impresionante. Veamos cómo algunas de estas oportunidades trabajan en la práctica. Descargue la versión de demostración, instale.

Después de la instalación, ejecute Delphi (en mi caso, es Delphi XE3) y vaya al menú:

Componente - Componente de importación - Tipo de importación Biblioteca

En la lista están buscando una biblioteca.

Importamos, creamos un nuevo proyecto y conecte el módulo en usos. Pdfcreatorpilotlib_tlb.

Ahora podemos probar el trabajo de la biblioteca en algún ejemplo vivo. Inicialmente, intentemos generar un documento con texto simple:

procedimiento TForm1. Button1Click (remitente: TOGECT); Var fnt: entero; Comenzar (inicialización) PDF: \u003d TPDFDocument4. Crear (nil); PDF. Setlicensedata ("Demo", "Demo"); FNT: \u003d PDF. Addfont ("Verdana", Falso, Falso, Falso, Falso, Fcansi); PDF. Usefont (FNT, 14); PDF. ShowTextat (20, 40, "Hola, PDF!"); (Guardar) PDF. SAWTOFOIL ("HELLOPDF.PDF", VERDADERO); PDF. Destruir; final;

Ejecute la solicitud y vea el documento PDF creado:

Ahora vamos a escribir para escribir el texto ruso al archivo:

procedimiento TForm1. Button1Click (remitente: TOGECT); Comenzar (inicialización) (...) PDF. ShowTextat (20, 40, "Hola, PDF!"); (Guardar) (...) final;


Tal vez en algún lugar de las propiedades de clase, debe configurar algo, llamar a cualquier método que incluya el soporte para Unicode, pero para tales grandmas me gustaría obtener una biblioteca que gane inmediatamente "fuera de la casilla" sin ningún problema con la configuración y los torsos. .. Por cierto, el método para insertar el enlace (addhyperlink) tampoco funcionó: el documento permaneció nueve, a pesar del hecho de que el enlace se insertó supuestamente. Pero, debemos rendirnos tributos, un intento de insertar en un nuevo documento formado anteriormente PDF-KU, trabajado con una explosión: el documento se insertó en una nueva página como debería, sin jambas.

5. PDFTOULKIT VCL V4.0.1.293

Costo: desde $ 349 sin fuente a $ 499 con fuente
Versiones compatibles de Delphi: 6-XE4.
Versión de prueba Página de descarga: http://www.gnostice.com/pdftoolkit_vcl.asp?show\u003ddowsloads

Acerca de esta biblioteca de componentes de Gnóstice tiene una gran cantidad de comentarios positivos en la red.

Por oportunidades Pdftoolkit.casi 1 en 1 corresponde Pdf creador piloto, esos. sabe cómo "pegamento" PDF-KI, reconoce texto, inserte enlaces, realice una búsqueda en documentos, etc. Pero, a diferencia de PDF Creator Pilot, Pdftoolkit si gtpdfdocument1. Islaaded, entonces comienza a gtpdfdocument1. Texto "Hola, ¡Paz!" , Inttostr (gtpdfdocument1. PageCount), // gama de páginas a las que se insertará el texto gtpdfdocument1. GetPagesize (gtpdfdocument1. PageCount, Mupixels). Ancho / 2, // insertar el texto en el centro de la página gtpdfdocument1. GetPagesize (gtpdfdocument1. PageCount, Mupixels). Altura / 2); (Guardar el documento) gtpdfdocument1. Savetofile ("modificado_doc.pdf"); final; Finalmente gtpdfdocument1. End libre;

Por supuesto, en relación con mi tarea, PDFTOOLKIT resulta ser prácticamente inútil, porque Estoy interesado en crear desde cero PDF-KI, pero para aquellos que escriben nuestra propia vista PDF-OK, creo que esta biblioteca debería subir más que.

Entonces, lo que tenemos al final. Hay 5 soluciones diferentes para crear y trabajar con documentos PDF en Delphi. Cada decisión tiene sus propias ventajas (gratis, "Solución de problemas") y desventajas (valor de caballos, problemas con Unicode, etc.). Con respecto a mi tarea, todas las soluciones tendrán que "trabajar con un archivo". Por otro lado, hay un montón de servicios pagados y gratuitos para generar PDF, pero, habiendo recordado que tales servicios tienen que la propiedad tome y muera de repente, de alguna manera no se está tirando de ellos. Por supuesto, hay, por supuesto, otra decisión es auto-escrita y no enteramente en el tema de Delphi, sino de ella de alguna manera la próxima vez, pero por ahora lo pensaré para hacer qué hacer con el cliente para Delphifeeds


¡Nos vemos en línea!


fecha de publicación 23-09-2005 07:00 Bosquejo Acerca de la creación de archivos PDF

Recientemente, un montón de convertidor de PDF "OV, lector" OV y escritura "se ha descubierto en Internet. Y la mayoría abrumadora de ellos se ofrece por dinero. El programa en sí es de $ 10 a $ 300. y el código fuente para mucho Gran dinero El precio comienza desde $ 200 y en un solo lugar (interesado en esta escalada en Internet) ya por 900 euros.

Este problema me interesó en términos de programación y luego llevo los resultados a su información. (Estos resultados fueron recibidos por mí cuando estudien los internos del archivo PDF cuando lo abre en el Commander total a través de F3)

El archivo PDF habitual consta de cuatro partes. :=

Qué es eso

? Esta es la mención habitual de la versión de especificación PDF. Que está presente en la primera fila del archivo PDF. Por ejemplo, "% PDF-1.3" en la séptima versión del Acrobat que salió a algún lugar a principios de verano de este año, este número "% PDF-1.7", pero esta no es una versión de producto, es la Versión de la especificación. La segunda línea PDF va un pequeño barril anormal (aparentemente diseñado para su uso) "% VGPU"

Todo con la primera parte PDF se descubrió.

Que representa la segunda parte que se llama ?

La respuesta es muy simple: esta es una secuencia de objetos, una descripción de la cual, como Heder se presenta en forma de texto.

Cada objeto es un fragmento de texto con un número de secuencia en un nombre, por ejemplo, "4 0 obj"

  • 4 Este es el número de secuencia del objeto.
  • 0 Este es el número (RE) de la generación de archivos, es decir, cuando el archivo se actualiza (editado), este número aumenta
  • obj. Esta es una palabra clave significa que en el cuerpo del documento encontramos un objeto.

Todos los objetos se dividen en indirectos y rectos. Todo indirecto, y la mayoría de ellos, después de la palabra. obj. Tener un delimer en su cuerpo "<<", означающее начало данных объекта. И в конце данных закрывающий делиметер ">\u003e "y la palabra de código endobj.

Los objetos directos no deben tener en su cuerpo abertura y delimentadores de cierre "<<", ">\u003e "Todos los objetos indirectos están disponibles a través de mesa de referencia cruzada. Presenta los enlaces en forma de desplazamiento desde el inicio del archivo antes de que se inicie el objeto (datos (líneas) en el objeto se dividen #13#10 o #13 )

El tipo de objeto "El objeto más importante en el archivo PDF del cuerpo usa un nombre orgulloso "/ Catálogo"

4 0 obj.<< /Type /Catalog /Pages 2 0 R /OpenAction [ 5 0 R /XYZ null 364 1 ] /PageMode /UseNone >\u003e EndOBJ.

De hecho, en el cuerpo del archivo PDF mínimo de tipo "Hello World" debe ser de 3 "principales" objetos. Vamos a enumerarlos por tipo:

  • "/ Catálogo" Contiene enlace: en la página de páginas ( / Páginas.)
  • "/ Páginas"contiene un enlace a un grupo de páginas de documentos (por ejemplo, 2 0 obj\u003e endobj)
  • "/ Página" Contiene un enlace a objetos relacionados con una página específica. (Por ejemplo, 3 0 obj\u003e / girar 0 \u003e\u003e)
Y varios "menores"

Analizaremos la página del objeto:

  • / Girar. El campo que muestra cuánto grados se debe activar la imagen de la página cuando se muestra en el programa
  • / MediaBox.y / Crábox. Campos que describen el tamaño de la página
  • / Padre. Enlace al objeto principal "/ Páginas"
  • / Recursos. Este campo describe qué fuente se debe usar cuando se muestra la página (la base es un objeto separado) y la instalación de procset Esta configuración muestra qué contenidos del flujo de datos de esta página (también también se pueden definir como un objeto, y no como un campo)
  • / Contenidos. El campo más interesante en el objeto "Página", da una referencia al objeto de contenido de esta página, y: si este campo falta en el objeto "Página" significa que la página está vacía
Contenido de página:
Un objeto "Arroyo" 4 0 obj\u003e Stream BT / F12 9 TF 10 782 TD 0 -12.5 TD (MAX FOKIN) TJ 0 -12.5 TD (MNB) TJ 0 -12.5 TD () TJ 0 -12.5 TD (MAX PrIVET) TJ 0 -12.5 TD (1) TJ 0 -12.5 TD (1) TJ 0 -12.5 TD (2) TJ 0 -12.5 TD (3) TJ 0 -12.5 TD (45) TJ EndOBJ / Longitud de endOBJ / longitud 305 Este campo muestra cuántos bytes de la palabra arroyo antes de la palabra corriente final

La opción más fácil es un flujo de datos no comprimido y no comprimido en el objeto. arroyo. Está limitado a los operadores. Bt. y Et.

BT comienza un objeto de texto: caracteriza el inicio del texto ET Finaliza un objeto de texto. - caracteriza el final del texto / f12 9 tf

  • / F12. Este código Nombre de un objeto que caracteriza el aficionado utilizado en esta página.
  • 9 Este es el tamaño de la fuente.
  • TF. Este es un operador que caracteriza que esta línea en el objeto de vapor es la instalación de la fuente y el tamaño
10 782 TD Estos son números desde donde comienza esta cadena (contando desde el ángulo superior izquierdo) TJ es un operador de traducción a una nueva línea, pero entre paréntesis nuestro texto

No explico la corriente codificada. Se basa en los algoritmos RC4, RC5, MD5.

Que es el objeto Fuente 12 0 obj\u003e

  • / Tipo / font Nombre de tipo naturalmente
  • / Subtipo / tipo1 Subtipo de nombre
  • / Nombre / f7 f7 Este nombre de código

PDF admite varios tipos de fuentes. Se enumeran a continuación

  • Tipo 1, incluyendo subconjuntos y múltiples "instantáneas" maestro "
  • Tipo 3.
  • TrueType, incluyendo subconjuntos.
  • Tipo 0.
Honestamente, no entendí a Tipo 3, TrueType, incluyendo subconjuntos, Tipo 0 No puedo decir nada
Y tipo 1 - Estas son las siguientes fuentes Courier Courier-Bold Courier-Boldoblique Courier-Oblique Helvetica Helvetica-Bold Helvetica-Boldoblique Helvetica-Oblique Times-Roman Times-Bold Times-Italic Times-Bolditalic Symbol Zapfdingbats

20 0 Obj\u003e EndOBJ Este es un objeto con nombres de nombre de código para las fuentes de primer tipo. Por este nombre de código, puede obtener fácilmente un objeto fuente. 6 0 obj\u003e

Todos: eso es mínimo Consiste en los siguientes objetos: "Catálogo", "Páginas", "Página", "Recursos" (Puede describirse como campo como un campo en el objeto), un objeto más incluido "Arroyo", Grupo de objetos "fuente"

Qué ? De hecho, esta es una tabla de texto ordinaria, comienza con la palabra. xref. Y su cuerpo tiene referencias a todos los objetos indirectos en el documento. Aquí hay un ejemplo de XREF 0 27 0000000021 65535 00000 N 000000011100 00000 n 0000000112 00000 n 0000000812 00000 n 0000000812006 00000 n 0000001125 00000 n 00000011257 00000 n 0000001273 00000 n 000011173 00000 n 0000001376 00000 n 0000001186 00000 n 0000001186 00000 N 0000001604 00000 N 0000001604 00000 n 0000001604 00000 N 0000001604 00000 n 0000001604 00000 n 0000001604 00000 N 0000001725 00 000 N 0000001725 00000 N 0000001850 00000 N 0000001725 0000002084 00 000 N 000 000 202 084 00 000 N 000 000 002 203 00 000 N 0000002326 00000 N 00000000239 00000 N 00000000258 00000 N 000 000 002 558 00 000 N 00000000002558 00000 N 000 000 000 021 00 000 N 000 000 002 751 00 000 N 0000000000 00 001 F 000 000 000 000 00 000 F 0000002915 00000 N 0000002955 00000 n 0 27 Estas cifras indican lo siguiente:

  • 0 - Primer número de objeto en la tabla
  • 27 - Número de elementos de tabla.

El primer elemento de la tabla siempre se sumerge ". Xxxxxxxxxx 65535 F."Donde X es una figura, y 65535 es el valor predeterminado para el primer elemento en la tabla. El símbolo" F "significa" libre.", es decir, el objeto no se utiliza

Analizaremos el elemento de esta tabla.

  • Los primeros 10 dígitos se compensan desde el inicio del archivo antes de que comience el objeto.
  • 0000000016 significa que después de 16 bytes desde el inicio del archivo, se reunirá con la primera mención del objeto que, por ejemplo, 4 0 obj.

Los segundos cinco dígitos son el número de generación de archivos. Si el archivo acaba de ser creado, siempre se ceros. Si el archivo se modifica, entonces este número aumenta por uno. Es decir, 0000000024 00001 F.

El archivo PDF canónico, solo creado, tiene una sola mesa. Pero si se edita el archivo, puede haber muchas de esas mesas.

La relación de las tablas se lleva a cabo utilizando el último elemento. y palabras de código startxref.

El archivo PDF canónico, solo creado, tiene una sola mesa, después de la tabla hay un elemento remolque Y después del traler hay una palabra clave startxref.Indicando el desplazamiento desde el inicio del archivo antes de que comience la tabla, aquí hay un ejemplo. Trailer\u003e StartxRef 173 %% EOF significa que después de 173 bytes desde el inicio del documento, la palabra del código estará presente xref.. Pero si se editó el archivo, se verá el último archivo de remolque: XREF 0 3 0000000000 65535 F 00003609 00000 N 0000003832 00000 N Trailer<7a15ab3ed3999575ff2f3034104a82c1>] \u003e\u003e startxref 173 %% EF pero si nos dirigimos a la mesa donde indica el enlace startxref 173.Luego encontraremos la siguiente tabla, y detrás de él un traler que tendrá un campo. / Prev 3896. 3 16 0000000016 00000 n 0000000663 00000 n 0000001110 00000 n 0000001115 00000 n 0000001111 00000 n 0000001111 00000 n 00000021111 00000 n 0000002180 00000 n 00002760 00000 n 0000002760 00000 n 0000003438 00000 n 0000003516 00000 n 0000003516 00000 n 0000000776 00000 n 0000000116 00000 n 0000000116 00000 n 0000000116 00000 n Remolque<7a15ab3ed3999575ff2f3034104a82c1>] \u003e\u003e startxref 567 %% eof

Este campo / Prev 3896. Nos especifica a la tabla anterior, y el enlace. startxref 567. Indica la siguiente tabla y casi hasta el infinito mientras está en el siguiente campo startxref. No vamos a ver 0 . Esto significa que leemos todas las tablas.

En este ensayo, por supuesto, carece del código fuente. Así que él: presentó dos módulos de la principal ". Pdfdocumento"y auxiliar" Pdfbasefonts."

Archivos adjuntos al material:

  • Código fuente de los módulos pdfdocument.pas y pdfbasefonts.pas (16 k) actualización del 9/23/2005 7:02:00 AM

Discusión del material [07-07-2006 06:33] 7 Mensajes



¿Te gustó el artículo? Compártelo