Generacion de PDF por JS-html2pdf(no se puede seleccionar texto)

parent f24f57f8
...@@ -98,7 +98,11 @@ public class PostulanteRRHHController { ...@@ -98,7 +98,11 @@ public class PostulanteRRHHController {
model.addAttribute("institucionesEducativas", institucionRepository.findAll()); model.addAttribute("institucionesEducativas", institucionRepository.findAll());
model.addAttribute("estadoP", EstadoPostulante.values()); model.addAttribute("estadoP", EstadoPostulante.values());
model.addAttribute("convocatoriaC", cargoRepo.findAll()); model.addAttribute("convocatoriaC", cargoRepo.findAll());
Page<Postulante> postulantesPag = post.postulantesMultiFiltro(nombre == null || nombre.trim().isEmpty() ? new TypedParameterValue(StringType.INSTANCE,null) : new TypedParameterValue(StringType.INSTANCE,"%"+nombre+"%"),dispo, lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId); Page<Postulante> postulantesPag = post.postulantesMultiFiltro(
nombre == null || nombre.trim().isEmpty() ?
new TypedParameterValue(StringType.INSTANCE,null) :
new TypedParameterValue(StringType.INSTANCE,"%"+nombre+"%"),
dispo, lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId);
List<Postulante> postulantes = postulantesPag.getContent(); List<Postulante> postulantes = postulantesPag.getContent();
List<PostulanteListaDTO> postulantesDTO = new ArrayList<>(); List<PostulanteListaDTO> postulantesDTO = new ArrayList<>();
...@@ -129,6 +133,17 @@ public class PostulanteRRHHController { ...@@ -129,6 +133,17 @@ public class PostulanteRRHHController {
return "detallepostulante"; return "detallepostulante";
} }
// @GetMapping({"/pdfPostulante/{postulanteId}"})
// public String getPostulantePdf(Model model, @PathVariable("postulanteId") Long postulanteId) {
// Postulante p = post.findById(postulanteId).orElse(null);
// model.addAttribute("postulante",p);
// model.addAttribute("cvId", fileRepo.getIdByPostulante(p));
// model.addAttribute("estadoP", EstadoPostulante.values());
// return "detallepostulante2";
//
// }
@PostMapping({"/postulantes/{postulanteId}"}) @PostMapping({"/postulantes/{postulanteId}"})
public String setPostulanteEstado(@ModelAttribute Postulante postulante, BindingResult result, @PathVariable("postulanteId") Long postulanteId) { public String setPostulanteEstado(@ModelAttribute Postulante postulante, BindingResult result, @PathVariable("postulanteId") Long postulanteId) {
//post.setPostulanteEstadoAndComentario(postulante.getEstadoPostulante(),postulante.getComentarioRRHH(), postulante.getId()); //post.setPostulanteEstadoAndComentario(postulante.getEstadoPostulante(),postulante.getComentarioRRHH(), postulante.getId());
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<layout:extends name="layouts/base.jsp"> <layout:extends name="layouts/base.jsp">
<layout:put block="contents" type="REPLACE"> <layout:put block="contents" type="REPLACE">
<div id="element-to-print">
<h2 style="text-align: center;"> <h2 style="text-align: center;">
DETALLE POSTULANTE DETALLE POSTULANTE
</h2> </h2>
...@@ -130,9 +131,10 @@ ...@@ -130,9 +131,10 @@
</div> </div>
</div> </div>
<hr> <hr>
<div class="row"> <div class="row" id="buttonRow" style="display: block">
<div class="col"> <div class="col">
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#estadoModalLong">Agregar observacion</button> <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#estadoModalLong">Agregar observacion</button>
<button id="pdf" type="button" class="btn btn-primary">PDF</button>
</div> </div>
<c:choose> <c:choose>
...@@ -382,9 +384,31 @@ ...@@ -382,9 +384,31 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<layout:put block="scripts" type="APPEND"> <layout:put block="scripts" type="APPEND">
<script src="../valEdad.js"></script> <script src="../valEdad.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js" integrity="sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
document.querySelector('#pdf').addEventListener("click", async ()=>{
var buttonsRow = document.querySelector('#buttonRow');
var element = document.getElementById('element-to-print');
var opt = {
margin: 1,
filename: 'myfile.pdf',
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2 },
jsPDF: { unit: 'in', format: 'a1', orientation: 'portrait' }
};
buttonsRow.style.display = "none";
await html2pdf().set(opt).from(element).toPdf().save();
console.log('xd');
buttonsRow.style.display = "block";
})
<%--location.replace("/postulantes/${postulante.id}/")--%>
</script>
</layout:put> </layout:put>
......
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html> <%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%>
<html lang="en"> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <layout:extends name="layouts/base.jsp">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <layout:put block="contents" type="REPLACE">
<title>Curriculum vitae</title> <div id="element-to-print">
<link href="../css/detallePostulantestyle.css" rel="stylesheet" type="text/css"/> <h2 style="text-align: center;">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> DETALLE POSTULANTE
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> </h2>
</head> <div class="row gy-3">
<body class="container"> <div class="col-md-6">
<header> <div class="card mb-3">
<div> <div class="card-body">
<br> <div class="row">
<h2>&nbsp;&nbsp;&nbsp;&nbsp; ${postulante.nombre} ${postulante.apellido}</h2> <div class="col-sm-3">
<h3>&nbsp;&nbsp;&nbsp;&nbsp; ${postulante.tipoDocumento}: ${postulante.nroDocument}</h3> <h6 class="mb-0">Nombre</h6>
<h3>&nbsp;&nbsp;&nbsp;&nbsp; Correo: ${postulante.correo}</h3> </div>
<br> <div class="col-sm-9 text-secondary">
</div> ${postulante.nombre} ${postulante.apellido}
</header> </div>
<section> </div>
<article> <hr>
<br> <div class="row">
<h2>&nbsp;&nbsp;Informacion Personal</h2> <div class="col-sm-3">
<ul> <h6 class="mb-0">Email</h6>
<li> </div>
Direccion: ${postulante.getCiudad().getDepartamento().getNombre()},${postulante.getCiudad().getNombre()} <div class="col-sm-9 text-secondary">
${postulante.correo}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Vive en</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.getCiudad().getNombre()}, ${postulante.getCiudad().getDepartamento().getNombre()}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Nro de Documento</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.tipoDocumento}: ${postulante.nroDocument}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Telefono</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.telefono}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Edad</h6>
</div>
<div id="edad" class="col-sm-9 text-secondary"></div>
<input style="display: none;" id="dob" value="${postulante.fechaNacimiento}">
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Direccion</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.direccion}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Nivel de Ingles</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.nivelIngles}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Estado Civil</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.estadoCivil.getDescripcion()}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Nacionalidad</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.nacionalidad.getDescripcion()}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Disponbilidad</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.disponibilidad.getDescripcion()}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Estado</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.estadoPostulante.getEstado()}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">ComentarioRRHH</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.getComentarioRRHH()}
</div>
</div>
<hr>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row gy-3">
<div class="col-md-6">
<div class="card h-100">
<div class="card-body">
<h6 class="text-start fw-bold">Tecnologias</h6>
<c:forEach items="${postulante.tecnologias}" var="detalle_tecnologia">
<small>${detalle_tecnologia.getTecnologia().getNombre()}</small>
<div class="progress mb-3" style="height: 5px">
<div class="progress-bar bg-primary" role="progressbar" style="width: ${(detalle_tecnologia.getNivel() / 5) * 100}%" aria-valuenow="${detalle_tecnologia.getNivel()}" aria-valuemin="1" aria-valuemax="5"></div>
</div>
</c:forEach>
<hr>
<h6 class="text-start fw-bold">Cargos al que postula</h6>
<ul class="list-group list-group-flush">
<c:forEach items="${postulante.postulaciones}" var="convocatoria">
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">${convocatoria.getCargo().getNombre()}</h6>
<span class="text-secondary"></span>
</li> </li>
<li> </c:forEach>
Telefono: ${postulante.telefono}
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<div id="carouselExampleIndicators" class="carousel carousel-dark slide" data-bs-ride="carousel">
<div class="carousel-inner">
<h6 class="d-flex justify-content-between fw-bold px-1">
<c:choose>
<c:when test="${postulante.experiencias.size() > 1}">
<i class="bi bi-arrow-left-circle-fill" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev"></i>
Experiencias
<i class="bi bi-arrow-right-circle-fill" data-bs-target="#carouselExampleIndicators" data-bs-slide="next"></i>
</c:when>
<c:otherwise>
Experiencias
</c:otherwise>
</c:choose>
</h6>
<c:forEach items="${postulante.experiencias}" var="detalle_experiencia" varStatus="status">
<div class="carousel-item ${status.first ? 'active' : ''}" data-bs-interval="false">
<ul class="list-group list-group-flush ">
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Institucion</h6>
<span class="text-secondary">${detalle_experiencia.getInstitucion()}</span>
</li> </li>
<li> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
Fecha de nacimiento: ${postulante.fechaNacimiento} <h6 class="mb-0">Fecha Inicio</h6>
<span class="text-secondary"><fmt:formatDate value="${detalle_experiencia.getFechaDesde()}" pattern="dd-MM-yyyy" /></span>
<!-- <input style="display:none;" id="fechaInicioExp" value="${detalle_experiencia.getFechaDesde()}">
<span style="display: none;" class="text-secondary" id="fechaInicioExp2">${detalle_experiencia.getFechaDesde()}</span>-->
</li> </li>
<li> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
Nivel de ingles:&nbsp;&nbsp;<progress value="${postulante.nivelIngles}" max="5"> <h6 class="mb-0">Fecha Fin</h6>
<span class="text-secondary"><fmt:formatDate value="${detalle_experiencia.getFechaHasta()}" pattern="dd-MM-yyyy" /></span>
<!-- <input style="display:none;" id="fechaFinExp" value="${detalle_experiencia.getFechaHasta()}">
<span style="display: none;" class="text-secondary" id="fechaFinExp2">${detalle_experiencia.getFechaHasta()}</span>-->
</li> </li>
<li> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
Estado civil: ${postulante.estadoCivil} <h6 class="mb-0">Referencia</h6>
<span class="text-secondary">${detalle_experiencia.getNombreReferencia()}</span>
</li> </li>
<li> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
Nacionalidad: ${postulante.nacionalidad} <h6 class="mb-0">Telefono de la referencia</h6>
<span class="text-secondary">${detalle_experiencia.getTelefonoReferencia()}</span>
</li> </li>
<li> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
Disponibilidad: ${postulante.disponibilidad} <h6 class="mb-0">Cargo</h6>
<span class="text-secondary">${detalle_experiencia.getCargo()}</span>
</li> </li>
<li> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
Direccion: ${postulante.direccion} <h6 class="mb-0">Motivo de salida</h6>
<span class="text-secondary">${detalle_experiencia.getMotivoSalida()}</span>
</li> </li>
</ul>
<br>
<h2>&nbsp;&nbsp;TECNOLOGIAS</h2>
<ul>
<c:forEach items="${postulante.tecnologias}" var="detalle_tecnologia">
<label>Tecnologias: ${detalle_tecnologia.getTecnologia().getNombre()} &nbsp;&nbsp;<progress value="${detalle_tecnologia.getNivel()}" max="5"></progress></label><br>
</c:forEach>
</ul>
<br>
<h2>&nbsp;&nbsp;Cargo al que Postula</h2>
<ul>
<c:forEach items="${postulante.postulaciones}" var="convocatoria">
<li>Nombre: ${convocatoria.getCargo().getNombre()}</li><br>
</c:forEach>
</ul>
<br>
<h2>&nbsp;&nbsp;Estado RRHH</h2>
<ul>
<li>Estado del Postulante: ${postulante.estadoPostulante.getEstado()}</li>
<li>Comentario RRHH: ${postulante.getComentarioRRHH()}</li>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalLong">Cambiar</button>
</ul> </ul>
</article> </div>
<aside>
<br>
<h2>Informacion Academica</h2>
<ul>
<c:forEach items="${postulante.estudios}" var="detalle_estudios">
<label>Institucion: ${detalle_estudios.getInstitucion().getNombre()}</label><br>
<label>Tipo de estudio: ${detalle_estudios.getTipoDeEstudio()}</label><br>
<label>Tema de estudio: ${detalle_estudios.getTemaDeEstudio()}</label><br>
<label>Fecha Inicio: ${detalle_estudios.getFechaDesde()}</label><br>
<label>Fecha Fin: ${detalle_estudios.getFechaHasta()}</label><br>
<label>Estado: ${detalle_estudios.getEstado()}</label><br>
<br><br>
</c:forEach> </c:forEach>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<div id="carouselExampleIndicators1" class="carousel carousel-dark slide" data-bs-ride="carousel">
<div class="carousel-inner">
<h6 class="d-flex justify-content-between fw-bold px-1">
<c:choose>
<c:when test="${postulante.experiencias.size() > 1}">
<i class="bi bi-arrow-left-circle-fill" data-bs-target="#carouselExampleIndicators1" data-bs-slide="prev"></i>
Estudios
<i class="bi bi-arrow-right-circle-fill" data-bs-target="#carouselExampleIndicators1" data-bs-slide="next"></i>
</c:when>
<c:otherwise>
Estudios
</c:otherwise>
</c:choose>
</h6>
<c:forEach items="${postulante.estudios}" var="detalle_estudios" varStatus="status">
<div class="carousel-item ${status.first ? 'active' : ''}" data-bs-interval="false">
<ul class="list-group list-group-flush ">
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Institucion</h6>
<span class="text-secondary">${detalle_estudios.getInstitucion().getNombre()}</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Fecha Inicio</h6>
<span class="text-secondary"><fmt:formatDate value="${detalle_estudios.getFechaDesde()}" pattern="dd-MM-yyyy" /></span>
<!-- <input style="display:none;" id="fechaInicioEst" value="${detalle_estudios.getFechaDesde()}">-->
</li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Fecha Fin</h6>
<span class="text-secondary"><fmt:formatDate value="${detalle_estudios.getFechaHasta()}" pattern="dd-MM-yyyy" /></span>
<!-- <input style="display:none;" id="fechaFinEst" value="${detalle_estudios.getFechaHasta()}">-->
</li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Tipo de Estudio</h6>
<span class="text-secondary">${detalle_estudios.getTipoDeEstudio()}</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Tema de estudio</h6>
<span class="text-secondary">${detalle_estudios.getTemaDeEstudio()}</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Estado</h6>
<span class="text-secondary">${detalle_estudios.getEstado()}</span>
</li>
</ul> </ul>
<br> </div>
<h2>EXPERIENCIAS</h2>
<ul>
<c:forEach items="${postulante.experiencias}" var="detalle_experiencia">
<label>Institucion: ${detalle_experiencia.getInstitucion()}</label><br>
<label>Fecha Inicio: ${detalle_experiencia.getFechaDesde()}</label><br>
<label>Fecha Fin: ${detalle_experiencia.getFechaHasta()}</label><br>
<label>Referencia: ${detalle_experiencia.getNombreReferencia()}</label><br>
<label>Telefono de la referencia: ${detalle_experiencia.getTelefonoReferencia()}</label><br>
<label>Cargo: ${detalle_experiencia.getCargo()}</label><br>
<label>Motivo de salida: ${detalle_experiencia.getMotivoSalida()}</label><br>
</c:forEach> </c:forEach>
</ul>
<br>
<h2>Referencias</h2>
<ul> </div>
<c:forEach items="${postulante.referencias}" var="detalle_referencias">
<label>Nombre: ${detalle_referencias.getNombre()}</label><br> </div>
<label>Relacion: ${detalle_referencias.getRelacion()}</label><br> </div>
<label>Telefono: ${detalle_referencias.getTelefono()}</label><br> </div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<h6 class="text-start fw-bold">Referencias Personales</h6>
<ul class="list-group list-group-flush">
<c:forEach items="${postulante.referencias}" var="referencia">
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">${referencia.nombre}, ${referencia.relacion}, ${referencia.telefono}</h6>
<span class="text-secondary"></span>
</li>
</c:forEach> </c:forEach>
</ul> </div>
</aside> </div>
</div>
</div>
</div>
</section> </div>
<!-- Modal --> <!-- Modal -->
<div class="modal fade" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true"> <div class="modal fade" id="estadoModalLong" tabindex="-1" role="dialog" aria-labelledby="estadorrhhModal" aria-hidden="true">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<form:form class="needs-validation" method="post" modelAttribute="postulante">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Modal title</h5> <h5 class="modal-title" id="estadorrhhModal">Estado</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form:form class="needs-validation" method="post" modelAttribute="postulante">
<form:label path="estadoPostulante" class="form-label">Estado</form:label> <form:label path="estadoPostulante" class="form-label">Estado</form:label>
<div class="inputs"> <div class="inputs">
<form:select class="form-select" path="estadoPostulante" aria-label="Default select example"> <form:select class="form-select" path="estadoPostulante" aria-label="Default select example">
...@@ -144,21 +357,41 @@ ...@@ -144,21 +357,41 @@
<div class="inputs"> <div class="inputs">
<form:label path="comentarioRRHH" class="form-label">ComentarioRRHH</form:label> <form:label path="comentarioRRHH" class="form-label">ComentarioRRHH</form:label>
<form:textarea class="form-control" path="comentarioRRHH" id="comentarioRRHH"></form:textarea> <form:textarea class="form-control" path="comentarioRRHH" id="comentarioRRHH"></form:textarea>
</div> </div><br>
<input type="submit" value="Guardar"/>
</form:form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
<button type="submit" class="btn btn-primary" data-bs-dismiss="modal">Agregar</button>
</div> </div>
</form:form>
</div> </div>
</div> </div>
</div> </div>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> </div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <layout:put block="scripts" type="APPEND">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="../valEdad.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js" integrity="sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
var element = document.getElementById('element-to-print');
var opt = {
margin: 1,
filename: 'myfile.pdf',
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2 },
jsPDF: { unit: 'in', format: 'a1', orientation: 'portrait' }
};
html2pdf().set(opt).from(element).toPdf().save();
<%--location.replace("/postulantes/${postulante.id}/")--%>
</script>
</layout:put>
</body>
</html> </layout:put>
\ No newline at end of file </layout:extends>
...@@ -234,12 +234,13 @@ ...@@ -234,12 +234,13 @@
function buscarPagina(nro){ function buscarPagina(nro){
nro-- nro--
const aBuscar = 'nroPagina='+nro const aBuscar = 'nroPagina='+nro
if(!location.search) location.search = "?"+aBuscar if(!location.search) location.search = aBuscar
const inicial = location.search.search(aBuscar); const inicial = location.search.search(aBuscar);
if(inicial==-1){//si no se encuentra y hay otros queries if(inicial==-1){//si no se encuentra y hay otros queries
location.search = "&"+aBuscar location.search += "&"+aBuscar;
} }
location.search.replace('nroPagina=',aBuscar) location.search.replace('nroPagina=',aBuscar)
console.log(location.search)
} }
const tecId = document.querySelector("#tecId"); const tecId = document.querySelector("#tecId");
const lvlTec = document.querySelector("#lvlTec"); const lvlTec = document.querySelector("#lvlTec");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment