Files
SeConectai_Web/app/api/briefings/[id]/pdf/route.ts
T

30 lines
905 B
TypeScript

import { NextResponse } from "next/server";
import { gerarBriefingPdfBuffer } from "@/lib/briefing-pdf";
import { getBriefingPdfData } from "@/lib/pdf-data";
export const runtime = "nodejs";
function safeFileName(value: string) {
return value
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/[^a-zA-Z0-9-_]+/g, "-")
.replace(/-+/g, "-")
.replace(/^-|-$/g, "")
.toLowerCase();
}
export async function GET(_request: Request, { params }: { params: { id: string } }) {
const data = await getBriefingPdfData(params.id);
const buffer = await gerarBriefingPdfBuffer(data);
const fileName = `${safeFileName(data.briefing.titulo || "briefing")}.pdf`;
return new NextResponse(buffer, {
headers: {
"Content-Type": "application/pdf",
"Content-Disposition": `attachment; filename="${fileName}"`,
"X-Content-Type-Options": "nosniff"
}
});
}