Update PuppeteerPdfGeneratorService for Local USE
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (push) Successful in 25m21s
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (push) Successful in 25m21s
This commit is contained in:
parent
c75103c671
commit
fa5b51dc40
@ -1,6 +1,7 @@
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using PuppeteerSharp.Media;
|
using Microsoft.Extensions.Configuration;
|
||||||
using PuppeteerSharp;
|
using PuppeteerSharp;
|
||||||
|
using PuppeteerSharp.Media;
|
||||||
using Transversal.Interfaces;
|
using Transversal.Interfaces;
|
||||||
using Transversal.Models;
|
using Transversal.Models;
|
||||||
|
|
||||||
@ -9,30 +10,49 @@ namespace Transversal.Services
|
|||||||
public class PuppeteerPdfGeneratorService : IPdfGeneratorService, IAsyncDisposable
|
public class PuppeteerPdfGeneratorService : IPdfGeneratorService, IAsyncDisposable
|
||||||
{
|
{
|
||||||
private readonly Browser _browser;
|
private readonly Browser _browser;
|
||||||
public PuppeteerPdfGeneratorService()
|
|
||||||
|
public PuppeteerPdfGeneratorService(IConfiguration config)
|
||||||
{
|
{
|
||||||
string? executablePath = RuntimeInformation.IsOSPlatform(OSPlatform.Linux)
|
string? executablePath = RuntimeInformation.IsOSPlatform(OSPlatform.Linux)
|
||||||
? "/usr/bin/chromium" // Docker/Linux
|
? "/usr/bin/chromium" // Docker/Linux (NO TOCAR)
|
||||||
: null; // Windows local → que use Chrome instalado
|
: ResolveWindowsBrowserPath(config); // Windows local
|
||||||
|
|
||||||
|
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(executablePath) || !File.Exists(executablePath))
|
||||||
|
throw new InvalidOperationException(
|
||||||
|
$"No se encontró un navegador. Verifique Puppeteer:ExecutablePath. Path evaluado: '{executablePath}'.");
|
||||||
|
}
|
||||||
|
|
||||||
_browser = Puppeteer.LaunchAsync(new LaunchOptions
|
_browser = Puppeteer.LaunchAsync(new LaunchOptions
|
||||||
{
|
{
|
||||||
Headless = true,
|
Headless = true,
|
||||||
ExecutablePath = executablePath,
|
ExecutablePath = executablePath,
|
||||||
Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" }
|
Args = RuntimeInformation.IsOSPlatform(OSPlatform.Linux)
|
||||||
|
? new[] { "--no-sandbox", "--disable-setuid-sandbox" }
|
||||||
|
: Array.Empty<string>()
|
||||||
}).GetAwaiter().GetResult();
|
}).GetAwaiter().GetResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
//public PuppeteerPdfGeneratorService()
|
private static string? ResolveWindowsBrowserPath(IConfiguration config)
|
||||||
//{
|
{
|
||||||
// // NO USAR BrowserFetcher NUNCA en entorno productivo Docker
|
// 1) appsettings: "Puppeteer:ExecutablePath"
|
||||||
// _browser = Puppeteer.LaunchAsync(new LaunchOptions
|
var configured = config["Puppeteer:ExecutablePath"];
|
||||||
// {
|
if (!string.IsNullOrWhiteSpace(configured))
|
||||||
// Headless = true,
|
return configured;
|
||||||
// ExecutablePath = "/usr/bin/chromium", // ruta de chromium en la imagen docker
|
|
||||||
// Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" }
|
// 2) fallbacks típicos (Chrome/Edge)
|
||||||
// }).GetAwaiter().GetResult();
|
var candidates = new[]
|
||||||
//}
|
{
|
||||||
|
@"C:\Program Files\Google\Chrome\Application\chrome.exe",
|
||||||
|
@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
|
||||||
|
@"C:\Program Files\Microsoft\Edge\Application\msedge.exe",
|
||||||
|
@"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe",
|
||||||
|
};
|
||||||
|
|
||||||
|
return candidates.FirstOrDefault(File.Exists);
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<byte[]> GeneratePdfFromHtmlAsync(string htmlContent, PdfGenerationOptions options = null)
|
public async Task<byte[]> GeneratePdfFromHtmlAsync(string htmlContent, PdfGenerationOptions options = null)
|
||||||
{
|
{
|
||||||
options ??= new PdfGenerationOptions();
|
options ??= new PdfGenerationOptions();
|
||||||
@ -55,6 +75,7 @@ namespace Transversal.Services
|
|||||||
|
|
||||||
return await page.PdfDataAsync(pdfOptions);
|
return await page.PdfDataAsync(pdfOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async ValueTask DisposeAsync()
|
public async ValueTask DisposeAsync()
|
||||||
{
|
{
|
||||||
if (_browser != null)
|
if (_browser != null)
|
||||||
|
|||||||
@ -29,5 +29,8 @@
|
|||||||
"ValidIssuer": "http://phroncare-bio-d7e9h0-api.saludlab.com.ar:9000",
|
"ValidIssuer": "http://phroncare-bio-d7e9h0-api.saludlab.com.ar:9000",
|
||||||
"ValidAudience": "http://phroncare-bio-d7e9h0-api.saludlab.com.ar:9000",
|
"ValidAudience": "http://phroncare-bio-d7e9h0-api.saludlab.com.ar:9000",
|
||||||
"Secret": "8f96cb2c6eac839349f783369690eb368411359afbaa8de6c6c2b30927d2f9fe6222fc6911348eb88c235cf393cb808ce80b5498de31e37090ba06482eca93ecbf31b8e1d97209d9ae4ba01d4e285af64bc9758b70decfb385bf96e74f2b6c61d00cc80b8fbfd999d5902e2ca58f2f7a3ee574280d776ba61a5b1cbd0180689577b02fc8ec26297a501c4409f8529b338814f629a2b8fcba21dc0e15f408969dbc4b7f14b43a19b46a41bc288ddf207c16d50b11e1039ffd131c312ddf10df6fd65d8bc3f898a14294cd32366269bee53f84e94f45de80e8b5ddaa1a3b4aa288a7cb35eacaf9c2005d65237210c14843af022177be2f6e93764c3b4030b59f24"
|
"Secret": "8f96cb2c6eac839349f783369690eb368411359afbaa8de6c6c2b30927d2f9fe6222fc6911348eb88c235cf393cb808ce80b5498de31e37090ba06482eca93ecbf31b8e1d97209d9ae4ba01d4e285af64bc9758b70decfb385bf96e74f2b6c61d00cc80b8fbfd999d5902e2ca58f2f7a3ee574280d776ba61a5b1cbd0180689577b02fc8ec26297a501c4409f8529b338814f629a2b8fcba21dc0e15f408969dbc4b7f14b43a19b46a41bc288ddf207c16d50b11e1039ffd131c312ddf10df6fd65d8bc3f898a14294cd32366269bee53f84e94f45de80e8b5ddaa1a3b4aa288a7cb35eacaf9c2005d65237210c14843af022177be2f6e93764c3b4030b59f24"
|
||||||
|
},
|
||||||
|
"Puppeteer": {
|
||||||
|
"ExecutablePath": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user