Skip to main content

Command Palette

Search for a command to run...

Capturar Region/pantalla - Print Screen in Oracle APEX

Updated
2 min read

Amigos, en esta oportunidad veremos algo simple pero muchas veces útil, cuando deseamos capturar la pantalla, es decir tomar una imagen o también llamado printscreen.

demoPrint]

Para esto usaremos la famosa librería de JavaScript html2canvas.

Veremos dos formas de agregar esta librería a APEX, aunque particularmente recomendare la segunda.

La primera forma es agregando el CDN (url) de esta librería https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js directamente a la APEX.

cdn_library

Y la segunda forma que recomiendo, es descargar el archivo JS desde la URL antes mencionada y cargarlo directamente en los static files de APEX

Luego usaremos esa ruta directamente en APEX, con ello evitamos la dependencia de un servidor externo en caso exista o no el link.

app_library

Finalmente, para el ejemplo, demo que la pueden encontrar aquí

Hemos creado un reporte y un botón, el botón tendrá una acción dinámica para ejecutar el siguiente JavaScript

Lo importante aquí es definir el ID de la región ah capturar, o en su defecto si queremos capturar toda la pantalla, solo sería cambio del selector.

Y el otro punto es el nombre y la descarga.

  // Specified the region to print
  // this example can be region report or any region
  var region = document.getElementById('employeeReport');
  // or can be all document
  var documentBod = document.body;

  // Use html2canvas to capture the region
  html2canvas(region).then(function(canvas) {
  // html2canvas(documentBod).then(function(canvas) {

    // Convierte el canvas a una URL de datos en formato PNG
    var imgData = canvas.toDataURL("image/png");

    // create a temporary link for download the image
    var link = document.createElement('a');
    link.href = imgData;

    var imageCaptureName = 'captura.png';
    link.download = imageCaptureName;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
  }).catch(function(error) {
    console.error('Error capturando la región:', error);
  });

More from this blog

A little knowledge to share-Oracle APEX

17 posts

Soy Ingeniero de Aplicaciones desde el 2012, he trabajado con Oracle APEX desde el 2017en versiones 5, 18, 20, 21. En los ultimos años he desarrollado habilidades en CSS, JavaScript, Jquery y PlSql , I specialize in Oracle APEX (Oracle Application Express )