2013-08-07 2 views
1

Я пытаюсь напечатать то же, что и в моем графическом интерфейсе апплета.Печать апплета GUI

То, что при печати, это не совсем то же самое ... размер каждого компонента изменяется непропорционально.

ГИП:

enter image description here

Отпечатано:

enter image description here

Поля не проблема, я могу исправить их легко ... но, как вы можете увидеть штрих-кода и вертикальный текст не имеет подходящего размера.

Основной класс:

public class Impresion extends Applet{ 
     PrinterJob job = PrinterJob.getPrinterJob(); 
     Panel test; 
     Label test2; 
     Label test3; 
     String copyParam = null; 
     String dialogParam = null; 
     String codeParam = null; 
     String descParam = null; 
     public void init(){ 
      copyParam = this.getParameter("copias"); 
      dialogParam = this.getParameter("ventanita"); 
      codeParam = this.getParameter("codigo"); 
      descParam = this.getParameter("descripcion"); 
      copyParam = "1"; 
      dialogParam = "1"; 
      codeParam = "002/113"; 
      descParam = "asd"; 

      if (copyParam == null || dialogParam == null || codeParam == null || descParam == null){ 
       System.out.println("Faltan parametros. - "+copyParam+" - "+dialogParam+" - "+codeParam+" - "+descParam); 
      } else { 
       job.setPrintable(new Dibujar(codeParam, descParam)); 
       PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 
       float leftMargin = (float) 0.1; 
       float topMargin = (float) 0.1; 
       float rightMargin = (float) 0.1; 
       float bottomMargin = (float) 0.1; 
       float mediaWidth = (float) 60.0; 
       float mediaHeight = (float) 50.0; 
       aset.add(new MediaPrintableArea(leftMargin, topMargin, (mediaWidth - leftMargin - rightMargin), (mediaHeight - topMargin - bottomMargin), Size2DSyntax.MM)); 
       int copias = Integer.parseInt(copyParam); 
       aset.add(new Copies(copias)); 
       boolean imprimir = true; 
       if (dialogParam.indexOf('1') != -1){ 
        imprimir = job.printDialog(aset); 
       } 
       if (imprimir){ 
        try { 
         job.print(aset); 
        } catch (PrinterException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     } 
    } 

Версия для печати Класс:

public class Dibujar implements Printable{ 
     String codeParam = null; 
     String descParam = null; 
     public Dibujar(String code, String desc) { 
      codeParam = code; 
      descParam = desc; 
     } 

     public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException{ 
      if (pageIndex > 0){ 
       return NO_SUCH_PAGE; 
      } 
      Barcode b = null; 
      try { 
       b = BarcodeFactory.createCodabar(codeParam); 
       b.setDrawingText(false); 
       b.setBarWidth(1); 
       b.draw((Graphics2D) g, 30, 8); 
      } catch (BarcodeException | OutputException e1) { 
       e1.printStackTrace(); 
      } 
      g.setFont(new Font("Arial", Font.BOLD, 9)); 
      String description = descParam; 
      g.drawString(description, 16, 70); 
      AffineTransform at = AffineTransform.getRotateInstance(Math.toRadians(90),16,8); 
      Graphics2D g2 = (Graphics2D) g; 
      g2.transform(at); 
      g.setFont(new Font("Arial", Font.BOLD, 14)); 
      g2.drawString(codeParam.replace("/", ""),16,8); 
      g2.transform(new AffineTransform()); 
      return PAGE_EXISTS; 
     } 
    } 
+0

Это могут быть параметры, которые вы используете для «b.draw ((Graphics2D) g, 30, 8); и "g2.drawString (codeParam.replace ("/"," "), 16,8);"? Вы пытались их отрегулировать? –

+0

Или, возможно, отрегулировав это: «aset.add (новый MediaPrintableArea (leftMargin, topMargin, (mediaWidth - leftMargin - rightMargin), (mediaHeight - topMargin - bottomMargin), Size2DSyntax.MM)); ? –

+0

Вы были правы, спасибо –

ответ

0

Настройка параметров в этом:

aset.add(new MediaPrintableArea(leftMargin, topMargin, (mediaWidth - leftMargin - rightMargin), (mediaHeight - topMargin - bottomMargin), Size2DSyntax.MM)); 

Или настроить параметры в этих двух:

b.draw((Graphics2D) g, 30, 8); 
//.... 
g2.drawString(codeParam.replace("/", ""),16,8); 
Смежные вопросы