#java #printing #graphics
Вопрос:
Я пытаюсь использовать java.awt.Графику, которая появляется в результате внедрения печатаемой
и печать логотипа на этикетке
Когда я пытаюсь сохранить его в файл, кажется, что он просто отлично сохраняется в файл
когда я печатаю на этикетке, она неровная или что-то в этом роде
Я пытаюсь показать только соответствующий код в этой вставке
Я перепробовал так много подходов
Я попытался установить dpi
Я попытался изменить качество печати
Я прочитал документацию по нескольким классам, интерфейсам … и т. Д
public class LabelPrinterTest implements Printable {
private Image customerLogo;
@Override
public int print(Graphics g, PageFormat pf, int page) throws
PrinterException {
Graphics2D g2d = (Graphics2D) g;
Map <Key, Object> hints = new HashMap<Key, Object>();
hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
hints.put(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
hints.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHints(hints);
// here is where i create the db connection so this is removed
Image customerLogo;
java.awt.image.BufferedImage bufferedCustomerLogo;
try {
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
con = DriverManager.getConnection(connectionString, user, pass);
Statement statement = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = statement.executeQuery("SELECT CustomerLogo FROM specifictable.customerlogo order by Id desc limit 1;");
rs.first();
byte [ ] imageDataAsByteArray = new byte[rs.getBinaryStream(1).available()];
rs.getBinaryStream(1).read(imageDataAsByteArray);
BufferedImage tBim = new BufferedImage(66, 36, BufferedImage.TRANSLUCENT);
// comes out as a buffered image which is a subclass of bufferedimage
customerLogo = ImageIO.read(
new ByteArrayInputStream(imageDataAsByteArray))
.getScaledInstance(-1,
25,
Image.SCALE_SMOOTH); // resampling int ?????
g2d.drawImage( customerLogo, 160, yPosition - 30, null);
}
catch(Exception ex) {
}
g2d.dispose();
return PAGE_EXISTS;
}
public void _print(
) {
PrinterJob job = PrinterJob.getPrinterJob();
PageFormat pageFormat = job.defaultPage();
pageFormat.setOrientation(PageFormat.LANDSCAPE);
Paper paper = pageFormat.getPaper();
paper.setImageableArea(-10, -10, paper.getWidth(), paper.getHeight());
pageFormat.setPaper(paper);
job.setPrintable(this, pageFormat);
PrintService [] printers = job.lookupPrintServices();
try {
job.setPrintService(printers[1]);
}
catch(Exception ex) {
}
try {
HashPrintRequestAttributeSet set = new HashPrintRequestAttributeSet();
set.add(new PrinterResolution(72, 72, PrinterResolution.DPI));
set.add(PrintQuality.HIGH);
job.setJobName("test label");
job.print(set);
} catch (PrinterException ex) {
}
}