"use client"; import React, { useState } from "react"; import Barcode from "react-barcode"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Barcode as BarcodeIcon, Download, RotateCcw } from "lucide-react"; import { toast } from "sonner"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; export default function BarcodePage() { const [value, setValue] = useState("123456789012"); const [format, setFormat] = useState("CODE128"); const [width, setWidth] = useState(2); const [height, setHeight] = useState(100); const [displayValue, setDisplayValue] = useState(true); const handleDownload = () => { const svg = document.querySelector("#barcode-svg svg"); if (!svg) return; const svgData = new XMLSerializer().serializeToString(svg); const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); const img = new Image(); img.onload = () => { canvas.width = img.width; canvas.height = img.height; ctx?.drawImage(img, 0, 0); const pngFile = canvas.toDataURL("image/png"); const downloadLink = document.createElement("a"); downloadLink.download = `barcode-${value}.png`; downloadLink.href = pngFile; downloadLink.click(); toast.success("条形码已下载"); }; img.src = "data:image/svg+xml;base64," + btoa(svgData); }; return (
生成 EAN, UPC, CODE128 等多种格式条形码