mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-13 08:58:48 +00:00
43 lines
1.6 KiB
Java
43 lines
1.6 KiB
Java
package com.imprimelibros.erp.pdf;
|
|
|
|
import com.openhtmltopdf.outputdevice.helper.BaseRendererBuilder;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
|
@Service
|
|
public class PdfRenderer {
|
|
|
|
@Value("classpath:/static/")
|
|
private org.springframework.core.io.Resource staticRoot;
|
|
|
|
public byte[] renderHtmlToPdf(String html) {
|
|
try (var baos = new ByteArrayOutputStream()) {
|
|
var builder = new com.openhtmltopdf.pdfboxout.PdfRendererBuilder();
|
|
builder.useFastMode();
|
|
|
|
// 👇 Base URL para que pueda resolver /assets/css/ y /img/
|
|
builder.withHtmlContent(html, staticRoot.getURL().toString()); // .../target/classes/static/
|
|
|
|
|
|
// (Opcional) Registrar fuentes TTF
|
|
builder.useFont(() -> getClass().getResourceAsStream("/static/assets/fonts/OpenSans-Regular.ttf"),
|
|
"Open Sans", 400, BaseRendererBuilder.FontStyle.NORMAL, true);
|
|
builder.useFont(() -> getClass().getResourceAsStream("/static/assets/fonts/OpenSans-SemiBold.ttf"),
|
|
"Open Sans", 600, BaseRendererBuilder.FontStyle.NORMAL, true);
|
|
builder.useFont(() -> getClass().getResourceAsStream("/static/assets/fonts/OpenSans-Bold.ttf"),
|
|
"Open Sans", 700, BaseRendererBuilder.FontStyle.NORMAL, true);
|
|
|
|
builder.toStream(baos);
|
|
builder.run();
|
|
|
|
return baos.toByteArray();
|
|
} catch (Exception e) {
|
|
throw new IllegalStateException("Error generando PDF", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
|