Как автоматически распечатать билет с изображением в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как автоматически распечатать билет с изображением в Java?

Сообщение Anonymous »

Я здесь новенький и не очень хорошо знаю английский. Поэтому я пишу из Google Translate.
Мне нужно распечатать билет со штрих-кодом, чтобы его можно было отсканировать позже.
Проблема в том, что наш билет печатается не так. хранится в строке путем проверки данных из БД, а затем преобразуется в байты, чтобы автоматически распечатываться на мини-принтере Bixolon SRP 330II.
Это код, который у меня есть:

Код: Выделить всё

private void imprimirT(String tk, int tipo, String folioFactura, boolean facturaOnline) throws SQLException, IOException {
System.out.println("\n\nInicia metodo imprimirT(" + tk + ", " + folioFactura + ", " + facturaOnline + ")");
System.out.println("Ticket:" + tk);
this.con.conectarlv();
String fec = "00-00-0000", hor = "00:00:00", suc = "", emp = "", let = "";
Double sub = 0.00, iva = 0.00, iep = 0.00, tot = 0.00, efe = 0.00, doc = 0.00, dol = 0.00, des = 0.00, cam = 0.00;

String Ticket = "";
PreparedStatement ti = this.con.conlv.prepareStatement("SELECT ven_fec, ven_hora, suc_des, ven_emp, ven_sub, ven_iva, ven_iep, ven_tot, ven_efe, ven_fpa, ven_dol, ven_cambio, ven_let FROM ventas, sucursales WHERE ven_id='" + tk + "' AND ven_suc=suc_nom GROUP BY ven_id");
ResultSet t = ti.executeQuery();
while (t.next()) {
System.out.println("Entro al ticket, emp:" + t.getString(4));
fec = t.getString(1);
hor = t.getString(2);
suc = t.getString(3);
emp = t.getString(4);
sub = t.getDouble(5);
iva = t.getDouble(6);
iep = t.getDouble(7);
tot = t.getDouble(8);
efe = t.getDouble(9);
doc = t.getDouble(10);
dol = t.getDouble(11);
cam = t.getDouble(12);
let = t.getString(13);
}
des = 0.0;
if (tipo == 1) {
Ticket = Ticket + "\r\n DEVOLUCION";
}
Ticket = Ticket + "\r\nFecha: " + fec + " Hora: " + hor + "\r\n" + this.cEncabezado;
if (this.cfol.equals("1")) {
Ticket = Ticket + "\r\nFolio: " + tk;
}
Ticket = Ticket + "\r\nSucursal: " + suc;
Ticket = Ticket + "\r\nAtendido por:" + emp + "\r\n";
Ticket = Ticket + "\r\nPRODUCTO        CANT      P.U.     TOTAL";

ti = this.con.conlv.prepareStatement("SELECT nve_prod, vde_can, vde_pre, vde_sub FROM ventas_desc, prod_des WHERE vde_fol='" + tk + "' AND vde_pro=nom_prod");
t = ti.executeQuery();
while (t.next()) {
Ticket = Ticket + "\r\n" + String.format("%1$-15s", t.getString(1)) + "\r\n" + String.format("%1$20s", t.getString(2)) + String.format("%1$10s", df.format(t.getDouble(3))) + String.format("%1$10s", df.format(t.getDouble(4)));
}
Ticket = Ticket + "\r\n";
Ticket = Ticket + "\r\nSUB-TOTAL                       $" + String.format("%1$7s", df.format(sub));
Ticket = Ticket + "\r\nI.V.A.                          $" + String.format("%1$7s", df.format(iva));
Ticket = Ticket + "\r\nI.E.P.S.                         $" + String.format("%1$7s", df.format(iep));
Ticket = Ticket + "\r\nTOTAL                           $" + String.format("%1$7s", df.format(tot));
Ticket = Ticket + "\r\n";
if (efe > 0) {
Ticket = Ticket + "\r\nEFECTIVO                        $" + String.format("%1$7s", df.format(efe));
}
if (doc > 0) {
Ticket = Ticket + "\r\nDOCUMENTO                       $" + String.format("%1$7s", df.format(doc));
}
if (dol > 0) {
Ticket = Ticket + "\r\nDOLLAR                          $" + String.format("%1$7s", df.format(dol));
}
if (des > 0) {
Ticket = Ticket + "\r\nDESCUENTO                       $" + String.format("%1$7s", df.format(des));
}
Ticket = Ticket + "\r\nSU CAMBIO                       $" + String.format("%1$7s", df.format(cam));
Ticket = Ticket + "\r\n";
Ticket = Ticket + "\r\n" + let;
Ticket = Ticket + "\n";

if (facturaOnline) {
Ticket = Ticket + "\r\nFOLIO DE FACTURACION: " + folioFactura;
Ticket = Ticket + "\nPAGINA WEB: www.farmaciasmedisim.com";
//Ticket = Ticket+"\n";
}

if (tipo == 0) {
Ticket = Ticket + "\r\n" + this.cPie;
}
Ticket = Ticket + "\r\n\r\n\r\n\r\n";
//Print Structure of ticket
byte[] bytes;
bytes = Ticket.getBytes();
System.out.println("Sesion:" + this.sesion + "Impresora: " + this.per.sesionImpresora(this.sesion) + " Imprimir Ticket");
String printerName = this.per.sesionImpresora(this.sesion);
DocFlavor docFormat = DocFlavor.BYTE_ARRAY.AUTOSENSE;

Doc docp = new SimpleDoc(finalPrintBytes, docFormat, null);
//Include printer name a his attributes
AttributeSet attributeSet = new HashAttributeSet();

attributeSet.add(new PrinterName(printerName, null));
attributeSet = new HashAttributeSet();
//Support of color or not
attributeSet.add(ColorSupported.NOT_SUPPORTED);
PrintService[] services = PrintServiceLookup.lookupPrintServices(docFormat, attributeSet);
int Pval = 0;
for (int i = 0; i < services.length; i++) {
String PintList = services[i].getName();
if (PintList.equals(printerName)) {
Pval = i;
break;
} else {
Pval = 100000000;
}
}
if (Pval != 100000000) {
try {
DocPrintJob pj = services[Pval].createPrintJob();
pj.print(docp, new HashPrintRequestAttributeSet());
} catch (PrintException ex) {
System.out.println("Error de Impresion");
System.out.println(ex.toString());
} catch (Exception e) {
System.out.println("Error de Impresion");
System.out.println(e.toString());
} finally {

}
} else {
JOptionPane.showMessageDialog(null, "NO SE ENCONTRO LA IMPRESORA", "ERROR", JOptionPane.INFORMATION_MESSAGE);
}

this.con.cerrarlv();
CortarT();
System.out.println("Fin metodo imprimirT(" + tk + ", " + folioFactura + ", " + facturaOnline + ")\n\n");
}
Билет распечатан, как показано на этом изображении.
Я изучал, как создать штрих-код, но нашел только это. штрих-код создается в виде изображения и сохраняется в формате PDF.
В других я видел, что они сначала сохраняют его в PDF, а затем выбирают принтер для его сохранения, чего я не хочу, так как мне нужен штрих-код для печати на том же билете.
Это код, с помощью которого я создаю и сохраняю штрих-код в формате PDF:

Код: Выделить всё

private void generarCodigoBarras() {
System.out.println("\n\nInicia Funcion generarCodigoBarras()");
String code = "";
try {
Document doc = new Document();
PdfWriter pdf = PdfWriter.getInstance(doc, new FileOutputStream("codigoBarras.pdf"));
doc.open();

Barcode128 code128 = new Barcode128();
code = randomCode();
code128.setCode(code);
Image img128 = code128.createImageWithBarcode(pdf.getDirectContent(), BaseColor.BLACK, BaseColor.BLACK);
doc.add(img128);
//img128.scalePercent(100);
//doc.add(new Paragraph(" "));
doc.close();
System.out.println("Fin Funcion generarCodigoBarras()\n\n");
} catch (FileNotFoundException | DocumentException e) {
System.out.println("Error al generar codigo");
System.out.println(e.toString());
System.out.println("Fin Funcion generarCodigoBarras()\n\n");
}
}

private String randomCode() {
System.out.println("\n\nInicia Funcion randomCode()");
Random randomNum = new Random();
int max = 9999999, min = 1000000;
String code = "";

code = String.valueOf(randomNum.nextInt(max - min + 1) + min);
System.out.println("El codigo es: " + code);
System.out.println("Fin Funcion randomCode()\n\n");
return code;
}
Для создания штрих-кода я использую библиотеку itextpdf-5.5.8.
Поэтому я хочу напечатать штрих-код в конце билета.
и я этого не делаю. не знаю, как сохранить штрих-код в изображении, не создавая его в формате pdf.
хотя я не уверен, что это можно сделать в netbeans 8.0.2.
нет необходимости делать это с помощью та же логика, что и у меня: если вы знаете еще способы распечатать штрих-код на минипринтере, я был бы очень признателен, если бы вы дали мне отзыв о своих знаниях.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ly-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»