[JAVA] Générer un code à barres avec Spring Boot

Choses à faire

Je souhaite créer un code à barres unidimensionnel avec les valeurs saisies dans le formulaire Vous pouvez créer un code à barres ou un code QR en utilisant une bibliothèque appelée ZXing. https://github.com/zxing/zxing

Cette fois, on suppose qu'un code à barres unidimensionnel (CODE_39) sera sorti sur l'écran de détail.

Ajout de la bibliothèque ZXing

Ajouter la bibliothèque ZXing à pom.xml Spécifiez javase lors du développement avec Java SE Spécifiez Android pour le développement sur Android Utilisez commons-codec pour l'encodage Base64, distinct de la bibliothèque Zxing

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>

Préparation

Préparer l'entité et le référentiel

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>{
}

Décrire le contrôleur

On suppose qu'il y a un écran de liste et un écran de détail, et un code à barres est sorti sur l'écran de détail

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();
		}
	}

Voir la description

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})}">Détails</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>

Contenu auquel j'ai été autorisé à me référer

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

Recommended Posts

Générer un code à barres avec Spring Boot
Télécharger avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Spring Boot à partir de Docker
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Utiliser l'authentification de base avec Spring Boot
gRPC sur Spring Boot avec grpc-spring-boot-starter
Créez une application avec Spring Boot 2
Déploiement à chaud avec le développement Spring Boot
Liaison de base de données avec doma2 (Spring boot)
Programmation Spring Boot avec VS Code
Jusqu'à "Hello World" avec Spring Boot
Créer une application d'enquête avec Spring Boot
Obtenez des résultats de validation avec Spring Boot
(Intellij) Hello World avec Spring Boot
Créez une application avec Spring Boot
Google Cloud Platform avec Spring Boot 2.0.0
J'ai essayé GraphQL avec Spring Boot
[Java] Intégration LINE avec Spring Boot
À partir de Spring Boot 0. Utilisez Spring CLI
J'ai essayé Flyway avec Spring Boot
La coopération des messages a commencé avec Spring Boot
Traitement lors du démarrage d'une application avec Spring Boot
Hello World avec Eclipse + Spring Boot + Maven
Envoyez des notifications régulières avec LineNotify + Spring Boot
Effectuer un test de confirmation de transaction avec Spring Boot
HTTPS avec Spring Boot et Let's Encrypt
Défi Spring Boot
Essayez d'utiliser Spring Boot avec VS Code
Démarrez le développement d'applications Web avec Spring Boot
Lancez l'application Nginx + Spring Boot avec docker-compose
J'ai essayé l'initialisation paresseuse avec Spring Boot 2.2.0
Forme de botte de printemps
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
Traitement asynchrone avec Spring Boot en utilisant @Async
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf
Spring Boot Rappelez-vous
gae + botte à ressort
(IntelliJ + gradle) Hello World avec Spring Boot
Utiliser le cache avec EhCashe 2.x avec Spring Boot
Test de validation de classe de formulaire avec Spring Boot
Exécutez l'application WEB avec Spring Boot + Thymeleaf
Obtenez une authentification BASIC avec Spring Boot + Spring Security
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)
Configurer l'application Spring Boot avec le module multiple maven