package platepdf import ( "fmt" "os" "printer.backend/internal/model" ) // Generate builds a PDF of the plate layout using the item's SVG template. // Requires rsvg-convert on PATH. func Generate(plate model.Plate, spec model.ItemSpec, itemSVGPath string, preview model.LayoutPreview) ([]byte, error) { if !rsvgAvailable() { return nil, fmt.Errorf("rsvg-convert not found in PATH (required for PDF export)") } itemSVG, err := os.ReadFile(itemSVGPath) if err != nil { return nil, fmt.Errorf("read item svg: %w", err) } composite, err := BuildCompositeSVG(plate, spec, itemSVG, preview) if err != nil { return nil, err } pdf, err := svgToPDFViaRsvg(composite, plate.WidthMM, plate.HeightMM) if err != nil { return nil, fmt.Errorf("render plate pdf: %w", err) } return pdf, nil }