[JAVA] Generieren Sie mit Spring Boot einen Barcode

Dinge die zu tun sind

Ich möchte einen eindimensionalen Barcode mit den im Formular eingegebenen Werten erstellen Sie können Barcode oder QR-Code mithilfe einer Bibliothek namens ZXing erstellen. https://github.com/zxing/zxing

Dieses Mal wird davon ausgegangen, dass ein eindimensionaler Barcode (CODE_39) auf dem Detailbildschirm ausgegeben wird.

Hinzufügung der ZXing-Bibliothek

Fügen Sie der pom.xml die ZXing-Bibliothek hinzu Geben Sie bei der Entwicklung mit Java SE Javase an Geben Sie Android für die Entwicklung auf Android an Verwenden Sie für die Base64-Codierung den Commons-Codec, der von der Zxing-Bibliothek getrennt ist

pom.xml



<dependencies>
	<dependency>
		<groupId>com.google.zxing</groupId>
		<artifactId>javase</artifactId>
		<version>3.4.0</version>
	</dependency>
	<devendency>
		<groupId>com.google.zxing</groupId>
		<artifactId>core</artifactId>
		<version>3.4.0</version>		
	</devendency>
	<devendency>
		<groupId>commons-codec</groupId>
		<artifactId>commons-codec</artifactId>
		<version>1.10</version>
	</devendency>
</dependencies>

Vorbereitung

Bereiten Sie die Entität und das Repository vor

UsersEntity.java


@Entity
@Table(name="Users")
public class UsersEntity{
  @Id
  private Integer id;
  private String name;

  public Integer getId(){
    return id;
  }

  public String getName(){
    return name;
  }
}

UsersRepository.java


import com.example.entities.UsersEntity;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UsersRepository extends JpaRepository<UsersEntity, Integer>{
}

Beschreiben des Controllers

Es wird angenommen, dass es einen Listenbildschirm und einen Detailbildschirm gibt und ein Barcode auf dem Detailbildschirm ausgegeben wird.

UsersController.java


Controller
public class UsersController {
	@Autowired
	private UsersRepository usersRepository;

	@RequestMapping("/user/index")
	public String index(Model model) {
		List<UsersEntity> users = usersRepository.findAll();
		model.addAttribute("userlist",users);
		return "view/user/index";
	}

	@GetMapping("/user/{id}")
	public String show(@PathVariable Integer id, Model model) {
		UsersEntity user = usersRepository.findById(id).get();
		model.addAttribute("user",user);
		barcode(String.valueOf(id), model);
		return "/view/user/show";
	}

	@GetMapping
	public String barcode(@PathVariable(value="id") String id, Model model) {
		try {
			byte[] res = toByteArray(id);
			String encodedStr64 = Base64.encodeBase64String(res);
			model.addAttribute("dataUrl", encodedStr64);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "Image/data";
	}

	private byte[] toByteArray(String contents) throws IOException, WriterException{
		BarcodeFormat format = BarcodeFormat.CODE_39;
		int width = 180;
		int height = 40;	
		Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
		hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);

		try (ByteArrayOutputStream output = new ByteArrayOutputStream()){
			Code39Writer writer = new Code39Writer();
			BitMatrix bitMatrix = writer.encode(contents, format, width, height, hints);
			MatrixToImageWriter.writeToStream(bitMatrix,  "png",  output);
			return output.toByteArray();
		}
	}

Beschreibung anzeigen

index.html


<tr th:each="users : ${userlist}">
	<td th:text="${users.id}"></td>
	<td th:text="${users.name}"></td>
	<td><a th:href="@{/user/{id}(id=${users.id})}">Einzelheiten</a></td>
</tr>

show.html


<tr th:object="${user}">
	<td th:text="*{id}"></td>
	<td th:text="*{name}"></td>
	<td><img th:src="|data:image/png;base64, ${dataUrl}|" class="barcode"></td>
</tr>

Inhalte, auf die ich mich beziehen durfte

https://qiita.com/rubytomato@github/items/187e277b964b14f77179 https://weblabo.oscasierra.net/java-zxing-2/

Recommended Posts

Generieren Sie mit Spring Boot einen Barcode
Mit Spring Boot herunterladen
Hallo Welt mit Spring Boot
Implementieren Sie GraphQL mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Verwenden Sie die Standardauthentifizierung mit Spring Boot
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Erstellen Sie eine App mit Spring Boot 2
Hot Deploy mit Spring Boot-Entwicklung
Datenbankverknüpfung mit doma2 (Spring Boot)
Spring Boot Programmierung mit VS Code
Bis "Hallo Welt" mit Spring Boot
Erstellen Sie eine Anfrage-App mit Spring Boot
Erhalten Sie Validierungsergebnisse mit Spring Boot
(Intellij) Hallo Welt mit Spring Boot
Erstellen Sie eine App mit Spring Boot
Google Cloud Platform mit Spring Boot 2.0.0
Ich habe GraphQL mit Spring Boot ausprobiert
[Java] LINE-Integration mit Spring Boot
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Ich habe Flyway mit Spring Boot ausprobiert
Die Nachrichtenkooperation begann mit Spring Boot
Verarbeitung beim Starten einer Anwendung mit Spring Boot
Hallo Welt mit Eclipse + Spring Boot + Maven
Senden Sie regelmäßige Benachrichtigungen mit LineNotify + Spring Boot
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
HTTPS mit Spring Boot und Let's Encrypt
Fordern Sie Spring Boot heraus
Versuchen Sie es mit Spring Boot mit VS-Code
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Starten Sie die Nginx + Spring Boot-Anwendung mit Docker-Compose
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Spring Boot Form
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Asynchrone Verarbeitung mit Spring Boot unter Verwendung von @Async
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
Spring Boot Denken Sie daran
gae + frühlingsstiefel
(IntelliJ + gradle) Hallo Welt mit Spring Boot
Verwenden Sie den Cache mit EhCashe 2.x mit Spring Boot
Formularklassenvalidierungstest mit Spring Boot
Führen Sie die WEB-Anwendung mit Spring Boot + Thymeleaf aus
Erreichen Sie die BASIC-Authentifizierung mit Spring Boot + Spring Security
Erstellen Sie eine Website mit Spring Boot + Gradle (jdk1.8.x)
Konfigurieren Sie die Spring Boot-Anwendung mit dem Maven Multi-Modul