Shell crear PDF de archivo xml

Magento2 Woocommerce Python, Unix, NodeJS

Shell crear PDF de archivo xml

mayo 19, 2020 programador-freelance 0

Como ya lo hemos visto en otros ejemplos de otros codigos, ahora voy a mostrar la forma fácil que puedes obtener un archivo PDF en unas cuantas lineas de código Shell (B-shell) y con el apoyo de librerias como “wkhtmltopdf” o puedes usar la de tu preferencia verificando que está instalada en tu sistema NIX.

Siguiendo el proposito de este curso, aqui te presento el codigo que puedes insertar en tu codigo ( python, composer, nodejs, php etc):

/bin/bash

* Mojomexico / Sromo (2020) soluciones Linux Debian, Fedora, Ubuntu, RedHat, Caldera, SELinux, Suse rel.2.4 y 2.6 Kernel***/

 # aplicacion: facturacion electronica sat para sistemas Linux y Unix sco, aix, hp9000 y sun microsystems. ****/
 # autor:SROMO /Mojomexico.com.mx desarrollos y soluciones Shell
szAnswer=$(zenity --width 600 --entry --title "Convertir a PDF" --text "Pega la URL que quieres convertir a PDF:" --entry-text "http://"); echo $szAnswer

direccionURL=${szAnswer}

if [ -z $direccionURL ];
then
    exit;
fi

szSavePath=$(zenity --file-selection --title "Nombre del fichero PDF a generar:" --save --confirm-overwrite);echo $szSavePath

filepdf=${szSavePath}

if [ -z "$filepdf" ];
then
    exit;
fi

wkhtmltopdf "${direccionURL}" "${filepdf}"

Asi de sencillo, ahora vamos a revisar la forma de crear el PDF y ENVIAR POR MAIL a varios destinatarios con copia a todos, en el mismo proceso de creación del pdf lo que te permitirá automatizar tus procesos desde tu APP o Tienda Web como Magento2, Woocommerce, Prestashop, Joomla, PHP.

/bin/bash

     # Mojomexico(2020) soluciones Linux Debian, Fedora, Ubuntu, RedHat, Caldera, SELinux, Suse rel.2.4 y 2.6 Kernel
     #aplicacion: facturacion electronica sat para sistemas Linux y Unix sco, aix, hp9000 y sun microsystems. 
     #autor:Mojomexico.com.mx desarrollos y soluciones  sergio.romo@mojomexico.com.mx

export DISPLAY=:0.0
xhost +
Xvfb -br -screen 0 1024x768x24 -dpi 96 -nolisten tcp
sudo {-u userautorizado} wkhtmltopdf -B 9 -L 8 -R 8 -T 15 $1 $1.pdf;
chmod 777 $1.pdf;

#servicio MUTT de envio de mails por default en la mayoria de los sistemas #NIX( debian, ubuntu, readhat, Aix, Solaris, etc; puedes cambiar por #sendmail o el de tu preferencia
mutt -s “Factura Electronica LA EMPRESA, SA DE C.V.” -a tmpA/.xml -a $1.pdf -b yo@hcmx.com .xml tmpA/*.html;
exit 0;

//fin

De esta forma podemos entregar la Factura Fiscal T3 Generada previamente usando solo los recursos de BASH SHELL como : awk, sed, grep, etc. Sino sabes como o quieres aprender más te invito a que te Suscribas a mi Canal Mojomexico de Cursos para Programar Fácil en PHP, Python3, NodeJs, Eclipse, Composer, que estoy publicando cada semana.

Espero que te sea util.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This will close in 45 seconds

PROGRAMACION POR OBJETOS - TESTER NIVEL INTERMEDIO:

CONSUMO DE RECURSOS API DESDE UN ERP:

Instrucciones:

Revisa y corrige y completa del siguiente Objeto las lineas y sentencias con error para poder  consumir de forma correcta los recursos API del Proveedor X MAYORISTA en el cual nos proporciona como medio de acceso-peticion

LA URL-ERP asi:  "../API/CATALOGO/ID.."

En cada PETICION HTTP-POST deberás incluir en EL TOKEN-AUTORIZACION en formato JSON previamente EMPACADO con seguridad de 64bits, quedando tu funcion asi dentro de una CLASE (OBJETO) LLAMADO:

class APIMayoristaX {

return function _get_Token_API () {

(incluir function del alogirtmo Hass)($data_arreglo[

"user" => USERKEY,

"paswd" => PASSKEY

};

public function _get_API_Productos() {

$filto = [

"sku" => valor,

Nombre => valor,

Precio => valor

existencias => valor

];

$token = _get_Token_API ();

return $this->get_CatalogoAPI_Inventario($token, $filtro);

}

}

 

This will close in 0 seconds

PROGRAMACION POR OBJETOS - TESTER NIVEL FRAMEWORK:

CONSUMO DE RECURSOS EN CODEIGNITER:

Instrucciones:

1.- Asumimos que deseas APLICAR LOS REGURSOS (desdeController) en donde vas a consumir :

: LIBRERIAS (LIBRERY y UNA BASE DE DATOS (DATABASE) tanto de Config como de Model

HAZ AQUI UN OBJETO llamado CLASS PRODUCTOS para demostrar la llamada y uso de recursos.

 

This will close in 0 seconds

PROGRAMACION POR OBJETOS - TESTER NODEJS OOP:

Asumimos que cuentas con un JS TOKEN que va a hacer conexion con una BASE DE DATOS (MSSQL):

cómo agregarias un OBJETO-JS en forma de CLASE para llamar a la base de datos y que puedas declarar METODOS de : consulta, actualizacion , borrado en la BASE DE DATOS ?

te doy un TIP:

class Querysql {
constructor() {
.....
});
}
async get_USUARIOS (req, res) {
.....
} etc (sigiendo este ejemplo, completa para cerrar la CLASE y hacer agrega la linea de llamado a cada peticion.

 

This will close in 0 seconds

Instrucciones:
Suponemos que tienes un OBJETO CLASE "A", en el cual al ejecutarse en automático integra los valores INIT de su respectiva funcion asi:
class A (padre) {
private $this;
public function __construct() {
$this->init();
}public function init() {
$this->clave = json_decode($this->catalogo->sku["SKU-A", TRUE];
$this->nombre = json_decode($this->catalogo->nombre["NOMBRE", TRUE];
$this->precio = json_decode($this->catalogo->precio["PRECIO", TRUE];
$this->stock = json_decode($this->catalogo->stock["STOCK", TRUE];
}
} //end parent class AEn el espacio disponible, crea EL OBJETO HIJO (puede ser llamado CLASS B) del MISMO PADRE de tal forma que puedas LLAMAR Y REUTILIZAR los valores existentes y actuales en una FUTURA FUNCION llamala "Funcion verValores(variables)" o algo similar, de la base de datos que son:
SKU, NOMBRE, PRECIO Y STOCK

para Finalizar envia tu respuesta con el formulario aqui presente

Al enviar tu respuesta, evaluaremos y te daremos tu calificacion por tu mail.

 

This will close in 0 seconds

PROGRAMACION POR OBJETOS - TESTER MAGENTO2 Nivel Basico PLANTILLADOR:

Suponemos el siguiente escenario:

1.- Tienes un CUSTOM-MODULO (UN TEMA MAGENTO2) con el siguiente LAYOUT(view/frontend/layout/) y el siguiente XML

CMS_INDEX_INDEX.XML

Y el siguiente codigo en este layout:

<referenceContainer name="page.top">
<block class="Custom_ModuleBlockEfect" template="efect.phtml" />
</referenceContainer>

EXPLICA SOBRE LAS ACCIONES DE "EFECT.PHTML" : DONDE SERÁN MOSTRADAS (EVENTO-POSICION) , CADA CUANDO SE EJECUTARÁ Y DONDE PUEDES AGREGAR-MODIFICAR DICHO EFECTO ?

 

This will close in 0 seconds

PROGRAMACION POR OBJETOS - TESTER MAGENTO2 Nivel MEDIO PLANTILLADOR

haz clic en el liguiente LINK :  http://magento2.saetiendaweb.com/

1.- ahi podras notar varios EFECTOS CUSTOMIZADOS de LAYOUT(view/frontend/layout/) agregados de forma PLUGIN-CUSTOM-MODULO:

TODOS LOS EFECTOS SON ACCIONES INSERTADAS CON EFECTOS PROPIO COMO INDEX_XML, CATALOG_XML, CHECKOUT_XML

en t respuesta: qué CONFIG LAYOUT usarias en el archivo CATALOG_XML...  para crear los efectos de BOTON-PAGO en la zona CATALOGO de la tienda, seria algo asi:

<referenceContainer name="mmmmm">
<block class="Custom_ModuleBlock...." template="catalog.phtml" />
</referenceContainer>

describe cada accion por linea

This will close in 0 seconds

PROGRAMACION POR OBJETOS - TESTER PROGRAMADOR SHELL:

En una LINEA usando SED, debes aplicar las siguientes busquedas :

1.-  DETECTAR SOLO ARCHIVOS desde un punto (no necesario raiz)

2.- FILTRAR QUE SEAN SOLO DE UNA CATEGORIA (por eje. solo archivos xml)

3.- FILTRAR QUE el resultado CONTENGA dentro de cada archivo solo los de una  VERSION ESPECIAL : por eje: <xml VER:11.0.3>

4.- EL RESULTADO de los archivos que coindicen en el filtro GUARDAR como reporte  EN FORMATO "PIPE" o separaciones por "coma"

5.- ACTUALIZAR CADA ARCHIVO (COINCIDENCIA) cambiando DE "VER:11.0.3" A "VER:12.0.0" m todo en LA MISMA LINEA SHELL o en un proceso bucle.

 

This will close in 0 seconds

PROGRAMACION POR OBJETOS - TESTER PROGRAMADOR SHELL (avanzado)

En una LINEA usando SED+AWK, debes aplicar las siguientes acciones:

1.-  DETECTAR SOLO ARCHIVOS desde un punto (no necesario raiz)

2.- FILTRAR QUE SEAN SOLO DE UNA CATEGORIA (por eje. solo archivos CSV)

3.- FILTRAR que COINCIDA UNA MARCA AL INICIO DE CADA LINEA (por eje: CLASE N)

4.- EL RESULTADO vas a CREAR TANTOS ARCHIVOS como CLASES AGRUPADAS CONTENTA, EN FORMATO "PIPE" o separaciones por "coma"

5.- Agregar UN HEADER COMO "COMENARIO DE AUTOR..VERSION..ETC)" m todo en LA MISMA LINEA SHELL o en un proceso bucle.

 

This will close in 0 seconds

Chat aqui
Por aqui te respondemos