src/main/java/org/pdf/forms/model/properties/Font.java
package org.pdf.forms.model.properties;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.util.Objects;
import java.util.Optional;
import java.util.StringJoiner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlType;
@XmlType
public class Font {
private final Logger logger = LoggerFactory.getLogger(Font.class);
private String name;
private String path;
public Font() {
// need default constructor for JAXB
}
public Font(
final String name,
final String path) {
this.name = name;
this.path = path;
}
@XmlAttribute
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
@XmlAttribute
public String getPath() {
return path;
}
public void setPath(final String path) {
this.path = path;
}
@Override
public boolean equals(final Object o) {
if (o instanceof Font) {
final Font font = (Font) o;
return Objects.equals(name, font.name)
&& Objects.equals(path, font.path);
}
return false;
}
@Override
public int hashCode() {
return Objects.hash(name, path);
}
@Override
public String toString() {
return new StringJoiner(", ", Font.class.getSimpleName() + "[", "]")
.add("name='" + name + "'")
.add("path='" + path + "'")
.toString();
}
public Optional<java.awt.Font> convertToJavaFont() {
try {
final java.awt.Font javaFont = java.awt.Font.createFont(
java.awt.Font.TRUETYPE_FONT,
new File(getPath())
);
return Optional.of(javaFont);
} catch (FontFormatException | IOException e) {
logger.error("Unable to create font. {}", getPath(), e);
}
return Optional.empty();
}
}