Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/07/2015, 13:39
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Crear PDF con Font Type 3

Bueno ya que estoy comparto el resultado final, total no creo volver a utilizarlo nunca mas y tal vez a alguien lo saque del apuro.

No pongo el codigo directamente porque es muy largo para el mensaje, pero si abren el archivo con un editor de texto plano lo pueden ver sin problemas.

Descargar Archivo PDF

Lo unico que tendrian que hacer a la hora de generar una factura nueva es crear una copia del archivo y buscar y reemplazar los parametros por los valores.

En este punto valen algunas aclaraciones:

Los parametros tienen la sintaxis <PXXXX> donde XXXX es un numero de 4 cifras.
Cada parametro, tiene una longitud maxima determinada por el espacio que ocupa ¡No se puede exeder esa longitud o el pdf quedara corrupto!

A la hora de reemplazar el valor del parametro, debe asegurarse que el string a reemplazar tenga la misma longitud que el string de reemplazo, por ejemplo, el parametro <P0008> es la razon social, supongamos que se quiere reemplazar por el valor: "Pirulito Ramirez SRL", el primer paso es determinar la longitud del nuevo valor, en este caso 20, lo siguiente es rellenar el codigo del parametro con espacios en blanco hasta esa longitud, en este caso quedaria: "<P0008> ", luego, se puede proceder a efectuar el reemplazo de forma segura entre los string "<P0008> " y "Pirulito Ramirez SRL".

Para alinear un texto, se debe hacer de forma manual, rellenando con espacios en blanco la zona sobrante, por ejemplo, supongamos que se tiene el total de la factura: "$10.345,21" y quiere que se muestre alineado a la derecha, el parametro <P0014> tiene como longitud maxima 22, por lo tanto, teniendo en cuenta que la longitud del total a reemplazar es de 10 caracteres, se deben agregar a este total, 12 caracteres en blanco al inicio y luego efectuar el reemplazo, en este caso quedarian los string: " $10.345,21" y "<P0014> "

A continuacion se muestra una tabla con las longitudes maximas de cada campo, en los que figura una X puede ser cualquier digito:
<P0001> | 7
<P0002> | 16
<P0003> | 40
<P0004> | 40
<P0005> | 40
<P0006> | 40
<P0007> | 40
<P0008> | 164
<P0009> | 164
<P0010> | 57
<P0011> | 57
<P0012> | 51
<P0013> | 51
<P0014> | 22
<P0015> | 67
<P0016> | 67
<P6XX1> | 16
<P6XX2> | 16
<P6XX3> | 81
<P6XX4> | 16
<P6XX5> | 20
<P6XX6> | 32
<P1001> | 21
<P1002> | 21
<P1003> | 21
<P1004> | 26
<P1005> | 26
<P9001> | 48
<P9002> | 99
<P9003> | 99
<P9004> | 99
<P9005> | 49
<P9006> | 49
<P9007> | 49
<P9008> | 49
<P9009> | 37
<P9010> | 37
<P9011> | 37
<P9012> | 37
<P9013> | 37
<P9014> | 37
<P9015> | 16
<P9016> | 16
<P9017> | 80
<P9018> | 16
<P9019> | 19
<P9020> | 31
<P9021> | 20
<P9022> | 20
<P9023> | 20
<P9024> | 26
<P9025> | 26
<P9026> | 20
<P9027> | 30
<P9028> | 30
<P9029> | 37
<P9030> | 37
<P9031> | 62
<P9032> | 58

Se puede crear una funcion "alinear" que reciba una alineacion, el parametro y el valor nuevo, y se encargue de rellenar con espacios en blanco basandose en la tabla anterior y otra funcion "reemplazar" que reciba el parametro y el valor nuevo ya alineado y complete el nombre del parametro con espacios en blanco a la derecha hasta igualar la longitud del valor y luego reemplace el texto.

El codigo de barras se genera solo, si bien asi como esta el archivo no aparece el codigo de barras, en el codigo fuente aparece el parametro <P0015> dos veces, el cual tenes que reemplazar por el el numero que quieras mostrar encerrado entre "/", la barra es equivalente a los "*", pasa que a la hora de embeber la fuente elegi la "/" porque su codigo ascii esta antes del "0" y si elegia el "*" tenia que meter todos los caracteres que estaban en el medio también, lo cual es bastante tedioso de hacer a mano.

Esa es basicamente la idea. Saludos.

EDITO: En el foro no se ven correctamente todos los espacios de los ejemplos, ya que cuando hay varios espacios adyacentes los muestra como uno solo, ojo con eso no se confundan!
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios