Bien, el híbrido seria algo así (Ojo, tendrias que pulir algunos detalles y hacer previamente lo que te indique en el mensaje anterior):
1) Tanto en A3 como en A4 debes agregar una variable que almacene los resultados:
Código PHP:
Ver original//...
for($j=0;$j<$afe3;$j++){
$a3_all[] = $a3;
//...
En A4 es lo mismo, pero que se llame
$a4_all o como tu quieras.
2)
Código PHP:
Ver original<?php
// Funcion para crear las paginas en txt.
function txt_page($template, $data)
{
$page = "";
foreach($template["fields"] as $key => $dims)
{
// Default value.
$value = (isset($data[$key]) ?
$data[$key] : ""); // Length of field.
$length = $dims[1]-$dims[0];
$page = str_pad($page, $dims[0] - 1, " ", STR_PAD_LEFT
). str_pad(substr($value, 0, $length), $length + 1, " ", STR_PAD_BOTH
); }
return str_pad($page, $template["length"], " ", STR_PAD_RIGHT
); }
// Capturar las salidas.
// Procesar.
include 'archivo.php';
// Descartar las salidas.
// Este template lo armas luego de imprimir una hoja de prueba y de contar los caracteres correspondientes a cada campo:
$template = [
"length" => 10000,
"fields" => [
"numero" => [50, 200],
"fecha" => [250, 300],
"chapa1" => [350, 400],
"chapa2" => [450, 500],
"transporte" => [550, 600],
"domicilio_transporte" => [650, 700],
"cuit_transporte" => [750, 800],
// Etc... Agregas todos los campos y las posiciones de $a
// Ahora agregas cada renglon de $a3, que los tienes guardados en $a3_all
"razon_social_cliente_0" => [850, 900],
"razon_social_cliente_1" => [950, 1000],
// Etc.. con todos los campos de cada renglon
// Ahora agregas cada renglon de $a4, que los tienes guardados en $a4_all
"nro_remito_0" => [1050, 1100],
"nro_remito_1" => [1050, 1100],
// Etc.. con todos los campos de cada renglon
]
];
// Ahora armas el mapa de datos, es decir, que variable va a cada lugar:
$data = [
"numero" => $a[0],
"chapa1" => $a[3],
"chapa2" => $a[4],
"transporte" => $a2[0],
"domicilio_transporte" => $a2[2]." - ".$a2[3],
"cuit_transporte" => $a2[1],
// Etc con todos los campos de $a
];
// Ahora cargar todos los campos $a3
foreach($a3_all as $nro => $valores)
{
$data["razon_social_cliente_$nro"] = $valores[0];
// Etc..
}
// Ahora cargar todos los campos $a4
foreach($a4_all as $nro => $valores)
{
$data["nro_remito_$nro"] = $valores[0];
// Etc..
}
echo txt_page($template, $data);
Con lo cual, tu sistema actual no es alterado, y puedes usar el template txt si lo deseas.
La parte mas engorrosa es la definir el template, ya que debes imprimir una hoja y luego contar las letras, pero tiene la ventaja de que una vez tengas una hoja impresa ya no necesitas estar frente a la impresora para garantizar que un cambio funciona correctamente, el mantenimiento de esa parte te sera sumamente sencilla en el futuro.