Cambios para que no cree el pdf automaticamente

This commit is contained in:
2025-08-22 12:35:06 +02:00
parent 43a042e173
commit 108c157beb
7 changed files with 132 additions and 118 deletions

View File

@@ -8,7 +8,7 @@
@using PuppeteerSharp @using PuppeteerSharp
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage @using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@inject ProtectedLocalStorage ProtectedLocalStore @inject ProtectedLocalStorage ProtectedLocalStore
@inject IJSRuntime JS @inject IJSRuntime JSA
@rendermode InteractiveServer @rendermode InteractiveServer
@inject NavigationManager Navigation @inject NavigationManager Navigation
@@ -287,7 +287,7 @@
var cssPath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "Content", "Site.css"); var cssPath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "Content", "Site.css");
var cssContent = await File.ReadAllTextAsync(cssPath); var cssContent = await File.ReadAllTextAsync(cssPath);
var contenidoHtml = await JS.InvokeAsync<string>("obtenerContenidoHtml"); var contenidoHtml = await JSA.InvokeAsync<string>("obtenerContenidoHtmlDespacho");
var fullHtml = $@" var fullHtml = $@"
<html> <html>
<head> <head>
@@ -299,8 +299,6 @@
</body> </body>
</html>"; </html>";
var fileName = $"factura_{DateTime.Now:yyyyMMddHHmmss}.pdf";
var filePath = Path.Combine("wwwroot", fileName);
var browserFetcher = new BrowserFetcher(); var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync(); await browserFetcher.DownloadAsync();
@@ -317,7 +315,7 @@
await page.SetContentAsync(fullHtml); await page.SetContentAsync(fullHtml);
await page.PdfAsync(filePath, new PdfOptions var pdfBytes = await page.PdfDataAsync(new PdfOptions
{ {
PrintBackground = true, PrintBackground = true,
Format = PuppeteerSharp.Media.PaperFormat.A4, Format = PuppeteerSharp.Media.PaperFormat.A4,
@@ -328,9 +326,7 @@
} }
}); });
pdfUrl = "/" + fileName; await JSA.InvokeVoidAsync("mostrarPdf", Convert.ToBase64String(pdfBytes));
Navigation.NavigateTo(pdfUrl, true);
} }
} }
@@ -338,8 +334,8 @@
<script> <script>
function obtenerContenidoHtml() { function obtenerContenidoHtmlDespacho() {
const DespachoImprimir = document.getElementById('DespachoImprimir'); let DespachoImprimir = document.getElementById('DespachoImprimir');
// const contenido2 = document.getElementById('CosteExterna'); // const contenido2 = document.getElementById('CosteExterna');
@@ -348,6 +344,14 @@
return html; return html;
}; };
function mostrarPdf(base64Data) {
let byteArray = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0));
let blob = new Blob([byteArray], { type: "application/pdf" });
let url = URL.createObjectURL(blob);
window.open(url, "_blank");
}
// async function obtenerTablasDeOtraPagina(url) { // async function obtenerTablasDeOtraPagina(url) {
// const response = await fetch(url); // const response = await fetch(url);
// const texto = await response.text(); // const texto = await response.text();

View File

@@ -261,7 +261,7 @@
var cssPath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "Content", "Site.css"); var cssPath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "Content", "Site.css");
var cssContent = await File.ReadAllTextAsync(cssPath); var cssContent = await File.ReadAllTextAsync(cssPath);
var contenidoHtml = await JS.InvokeAsync<string>("obtenerContenidoHtml"); var contenidoHtml = await JS.InvokeAsync<string>("obtenerContenidoHtmlURBAN");
var fullHtml = $@" var fullHtml = $@"
<html> <html>
<head> <head>
@@ -291,7 +291,7 @@
await page.SetContentAsync(fullHtml); await page.SetContentAsync(fullHtml);
await page.PdfAsync(filePath, new PdfOptions var pdfBytes = await page.PdfDataAsync(new PdfOptions
{ {
PrintBackground = true, PrintBackground = true,
Format = PuppeteerSharp.Media.PaperFormat.A4, Format = PuppeteerSharp.Media.PaperFormat.A4,
@@ -302,9 +302,7 @@
} }
}); });
pdfUrl = "/" + fileName; await JS.InvokeVoidAsync("mostrarPdf", Convert.ToBase64String(pdfBytes));
Navigation.NavigateTo(pdfUrl, true);
} }
} }
@@ -312,11 +310,18 @@
<script> <script>
function obtenerContenidoHtml() { function obtenerContenidoHtmlURBAN() {
const DespachoImprimir = document.getElementById('DespachoURBANImprimir'); const DespachoImprimir = document.getElementById('DespachoURBANImprimir');
let html = DespachoImprimir.outerHTML + "<br>"; let html = DespachoImprimir.outerHTML + "<br>";
return html; return html;
}; };
function mostrarPdf(base64Data) {
const byteArray = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0));
const blob = new Blob([byteArray], { type: "application/pdf" });
const url = URL.createObjectURL(blob);
window.open(url, "_blank");
}
</script> </script>

View File

@@ -64,7 +64,7 @@
<td class="colorFilasIntro w4">Incremento por externalización</td> <td class="colorFilasIntro w4">Incremento por externalización</td>
<td class="text-end"> <td class="text-end">
<span> <span>
@objetoCASA.CostesProduccion.CoeficienteCostesExternalizacion @objetoCASA.CostesProduccion.CoeficienteCostesExternalizacion %
</span> </span>
</td> </td>
</tr> </tr>
@@ -138,7 +138,7 @@
<tr> <tr>
<td class="colorFilasIntro fw-bold">Plazo de presentación de la documentación:</td> <td class="colorFilasIntro fw-bold">Plazo de presentación de la documentación:</td>
<td class="text-end"> <td class="text-end">
<span class="inputForm formatoMoneda text-end">@objetoCASA.CostesProduccion.PlazoPresentacionDocumentos</span> <span class="inputForm formatoMoneda text-end">@objetoCASA.CostesProduccion.PlazoPresentacionDocumentos meses</span>
</td> </td>
</tr> </tr>
</table> </table>
@@ -160,14 +160,14 @@
<table class="table tablaCACOA tablaCACOA2 mb-0"> <table class="table tablaCACOA tablaCACOA2 mb-0">
<thead> <thead>
<tr> <tr>
<th class="colorB fw-bold w-75">Trabajos</th> <th class="colorB fw-bold">Trabajos</th>
<th class="colorB fw-bold">Horas</th> <th class="colorB fw-bold">Horas</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td class="colorB fw-bold">Horas elaboración documentación</td> <td class="colorB fw-bold">Horas elaboración documentación</td>
<td class="text-end">@objetoCASA.TrabajoProfesional.HorasTPEDocumentacion.MilesYDecimales() h</td> <td class="text-start">@objetoCASA.TrabajoProfesional.HorasTPEDocumentacion.MilesYDecimales() h</td>
</tr> </tr>
<tr> <tr>
@@ -185,12 +185,16 @@
<td class="text-end">@objetoCASA.TrabajoProfesional.HorasTPEDireccion.MilesYDecimales() h</td> <td class="text-end">@objetoCASA.TrabajoProfesional.HorasTPEDireccion.MilesYDecimales() h</td>
</tr> </tr>
<tr>
<td class="colorC fw-bold w4">HORAS TRABAJO PROFESIONAL</td>
<td class="text-end">@objetoCASA.TrabajoProfesional.HorasTPE.MilesYDecimales() h</td>
</tr>
</tbody> </tbody>
<tfoot>
<tr>
<td colspan="2" class="TotalesTabla text-end fw-bold">Horas trabajo profesional @objetoCASA.TrabajoProfesional.TotalHorasTPE.MilesYDecimales() h</td>
</tr>
</tfoot>
</table> </table>
</div> </div>
</div> </div>
@@ -201,42 +205,36 @@
<label style="color: #078b98 !important"><b>Costes de Producción</b></label> <label style="color: #078b98 !important"><b>Costes de Producción</b></label>
</div> </div>
<div class="col-8 mx-auto"> <div class="col-8 mx-auto mb-4">
<div style="height: 49px;"> <div style="height: 49px;">
<b>Costes Asociados a los Servicios de Arquitectura</b> <b>Costes Asociados a los Servicios de Arquitectura</b>
</div> </div>
<table class="table tablaCACOA tablaCACOA2 mb-0"> <table class="tablaAlter" style="width:100%">
<tr>
<td class="tdAlter TotalesTabla" style="font-size:12px;"> COSTES DE PRODUCCIÓN DEL TRABAJO PROFESIONAL: </td>
<thead> <td class="tdAlter TotalesTabla tdAlineadoDerecha" style="width: 30%; font-weight:bold;font-size:12px;">
<tr> @objetoCASA.CostesProduccion.CostesProduccionTrabProf.MilesYDecimales() €
<th class="colorB fw-bold w-75">Concepto</th>
<th class="colorB fw-bold text-end"></th>
</tr>
</thead>
<tbody>
<tr>
<td class="tdAlter fw-bold " style="background:#ffc107;">COSTES DE PRODUCCIÓN DEL TRABAJO PROFESIONAL</td>
<td class="text-end"><span> @objetoCASA.CostesProduccion.CostesProduccionTrabProf.MilesYDecimales() €</span></td>
</tr>
<tr>
<td class="colorFilasIntro w4"><b>Beneficio</b> (antes de impuestos)</td>
<td class="text-end">
<span class="inputForm formatoMoneda">@objetoCASA.CostesProduccion.Beneficio </span>
</td> </td>
</tr> </tr>
</tbody>
<tfoot>
<tr> <tr>
<td colspan="2" class="text-end fw-bold"> <td class="TotalesTabla" style="font-size:12px;"><b>Beneficio</b> (antes de impuestos) </td>
<td class="tdAlineadoDerecha TotalesTabla" style="font-size:12px;">
<div class="justify-content-end" style="gap:3px;">
<span>@objetoCASA.CostesProduccion.Beneficio %</span>
</div>
</td>
</tr>
<tr>
<td colspan="2" class="text-end fw-bold TotalesTabla tablaCACOA">
Precio del trabajo profesional: <span>@objetoCASA.CostesProduccion.PrecioTrabProf.MilesYDecimales() € </span> Precio del trabajo profesional: <span>@objetoCASA.CostesProduccion.PrecioTrabProf.MilesYDecimales() € </span>
</td> </td>
</tr> </tr>
</tfoot>
</table> </table>
</div> </div>
@if (objetoCASA.CostesProduccion.OtrosTrabajos.Count != 0) @if (objetoCASA.CostesProduccion.OtrosTrabajos.Count != 0)
@@ -261,7 +259,7 @@
{ {
<tr> <tr>
<td>@otroTrabajo.Denominacion</td> <td>@otroTrabajo.Denominacion</td>
<td class="text-end">@otroTrabajo.Coste.MilesYDecimales()</td> <td class="text-end">@otroTrabajo.Coste.MilesYDecimales()</td>
</tr> </tr>
} }
</tbody> </tbody>
@@ -279,7 +277,7 @@
</tr> </tr>
<tr> <tr>
<td colspan="2" class="text-end fw-bold TotalesTabla" style="background: #ffc107;"> <td colspan="2" class="text-end fw-bold TotalesTabla">
Precio del encargo: <span>@objetoCASA.CostesProduccion.PrecioDelEncargo.MilesYDecimales() € </span> Precio del encargo: <span>@objetoCASA.CostesProduccion.PrecioDelEncargo.MilesYDecimales() € </span>
</td> </td>
</tr> </tr>

View File

@@ -400,7 +400,7 @@
var cssPath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "Content", "Site.css"); var cssPath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "Content", "Site.css");
var cssContent = await File.ReadAllTextAsync(cssPath); var cssContent = await File.ReadAllTextAsync(cssPath);
var contenidoHtml = await JS.InvokeAsync<string>("obtenerContenidoHtml"); var contenidoHtml = await JS.InvokeAsync<string>("obtenerContenidoHtmlLicitaciones");
var fullHtml = $@" var fullHtml = $@"
<html> <html>
<head> <head>
@@ -413,9 +413,6 @@
</body> </body>
</html>"; </html>";
var fileName = $"factura_{DateTime.Now:yyyyMMddHHmmss}.pdf";
var filePath = Path.Combine("wwwroot", fileName);
var browserFetcher = new BrowserFetcher(); var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync(); await browserFetcher.DownloadAsync();
@@ -431,7 +428,7 @@
await page.SetContentAsync(fullHtml); await page.SetContentAsync(fullHtml);
await page.PdfAsync(filePath, new PdfOptions var pdfBytes = await page.PdfDataAsync(new PdfOptions
{ {
PrintBackground = true, PrintBackground = true,
Format = PuppeteerSharp.Media.PaperFormat.A4, Format = PuppeteerSharp.Media.PaperFormat.A4,
@@ -442,9 +439,7 @@
} }
}); });
pdfUrl = "/" + fileName; await JS.InvokeVoidAsync("mostrarPdf", Convert.ToBase64String(pdfBytes));
Navigation.NavigateTo(pdfUrl, true);
} }
@@ -487,11 +482,18 @@
<script> <script>
function obtenerContenidoHtml() { function obtenerContenidoHtmlLicitaciones() {
const LicitacionImprimir = document.getElementById('LicitacionesCASAImprimir'); let LicitacionImprimir = document.getElementById('LicitacionesCASAImprimir');
let html = LicitacionImprimir.outerHTML; let html = LicitacionImprimir.outerHTML;
return html; return html;
}; };
function mostrarPdf(base64Data) {
let byteArray = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0));
let blob = new Blob([byteArray], { type: "application/pdf" });
let url = URL.createObjectURL(blob);
window.open(url, "_blank");
}
</script> </script>

View File

@@ -470,7 +470,7 @@
var cssPath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "Content", "Site.css"); var cssPath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "Content", "Site.css");
var cssContent = await File.ReadAllTextAsync(cssPath); var cssContent = await File.ReadAllTextAsync(cssPath);
var contenidoHtml = await JS.InvokeAsync<string>("obtenerContenidoHtml"); var contenidoHtml = await JS.InvokeAsync<string>("obtenerContenidoHtmlLiciUrban");
var fullHtml = $@" var fullHtml = $@"
<html> <html>
<head> <head>
@@ -500,7 +500,7 @@
await page.SetContentAsync(fullHtml); await page.SetContentAsync(fullHtml);
await page.PdfAsync(filePath, new PdfOptions var pdfBytes = await page.PdfDataAsync(new PdfOptions
{ {
PrintBackground = true, PrintBackground = true,
Format = PuppeteerSharp.Media.PaperFormat.A4, Format = PuppeteerSharp.Media.PaperFormat.A4,
@@ -511,9 +511,7 @@
} }
}); });
pdfUrl = "/" + fileName; await JS.InvokeVoidAsync("mostrarPdf", Convert.ToBase64String(pdfBytes));
Navigation.NavigateTo(pdfUrl, true);
} }
} }
@@ -521,11 +519,18 @@
<script> <script>
function obtenerContenidoHtml() { function obtenerContenidoHtmlLiciUrban() {
const DespachoImprimir = document.getElementById('LiciURBANImprimir'); const DespachoImprimir = document.getElementById('LiciURBANImprimir');
let html = DespachoImprimir.outerHTML + "<br>"; let html = DespachoImprimir.outerHTML + "<br>";
return html; return html;
}; };
function mostrarPdf(base64Data) {
const byteArray = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0));
const blob = new Blob([byteArray], { type: "application/pdf" });
const url = URL.createObjectURL(blob);
window.open(url, "_blank");
}
</script> </script>