Я столкнулся с этой проблемой, когда я генерирую штрих-код с использованием code128 и сохраняю его в файле PNG. Тот же файл PNG при подаче на принтер. Задание с необходимыми свойствами документа для печати на этикетке требуемого размера, размер уменьшается и не сканируется.
Фактический размер для поставляемой печати - 40 мм x 15 мм. Размер, напечатанный на этикетке - 20 мм x 10 мм
Я добавляю этот атрибут в PrintRequestAttributeSet - pras.add (MediaSize.findMedia (40, 15, Size2DSyntax.MM));
Но это не удалось точно, я попытался поэкспериментировать со значениями параметров x и y, но напечатанный размер находится в пределах 25 x 10 мм.
Любые входные данные для печати штрих-кода необходимого размера приветствуются. Я дал полную информацию о коде ниже.
(PS: я использую термопринтер "Honeywell PC42t Plus" для печати, и в настоящее время мои этикетки имеют размер 700 x 280 мм, я жду, чтобы получить фактические этикетки размером 40 мм x 15 мм. Итак, чтобы проверить это, я могу напечатать фактический штрих-код 40 мм x 15 мм, используя все пространство этикетки, как только получу фактические этикетки)
public class One_TestMyBarcode {
private static final String MIME_TYPE = "image/x-png";
private static final String DELIMTER = "-";
static String image_name = "NewBarcode_One.png";
public static void main(String[] args) {
FileInputStream textStream = null;
int lastSeqNo = 001;
String roCode= "ERO";
AtomicInteger seqNo = new AtomicInteger(lastSeqNo);
Code128Bean code128 = new Code128Bean();
code128.setHeight(15f);
//code128.setBarHeight(40f);
//code128.setModuleWidth(0.3);
code128.setModuleWidth(0.2);
code128.setQuietZone(10);
code128.doQuietZone(true);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BitmapCanvasProvider canvas = new BitmapCanvasProvider(baos, MIME_TYPE, 300, BufferedImage.TYPE_BYTE_BINARY,
false, 0);
StringBuffer codeData = new StringBuffer();
codeData.append(roCode);
codeData.append(DELIMTER);
int currentSeqNo = seqNo.getAndIncrement();
String seq = String.format("%07d", currentSeqNo);
codeData.append(seq);
codeData.append(DELIMTER);
Calendar current = Calendar.getInstance();
String year = Integer.toString(current.get(Calendar.YEAR)).substring(2);
codeData.append(year);
//logger.debug("barcode dimension is ");
code128.calcDimensions(codeData.toString());
code128.generateBarcode(canvas, codeData.toString());
try {
canvas.finish();
} catch (IOException e) {
throw new RuntimeException(e);
}
FileOutputStream fos = null;
try {
//fos = new FileOutputStream("C:\\Users\\Vinayak\\Desktop\\barcode\\" +image_name);
fos = new FileOutputStream(image_name);
fos.write(baos.toByteArray());
fos.flush();
fos.close();
//textStream = new FileInputStream("C:\\Users\\Vinayak\\Desktop\\barcode\\" +image_name);
textStream = new FileInputStream(image_name);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
DocFlavor flavor = DocFlavor.INPUT_STREAM.PNG;
// Position the default print service
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
// Create a print job
DocPrintJob job = printService.createPrintJob();
// Set the print properties
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//printed a very small size (20mm x 10mm) and does not scan
pras.add(MediaSize.findMedia(40, 15, Size2DSyntax.MM));
//DOESN'T Scan Either
//pras.add(OrientationRequested.LANDSCAPE);
//pras.add(OrientationRequested.PORTRAIT);
//pras.add(MediaSizeName.ISO_A10);
//Doesn't print at all
//pras.add(new MediaPrintableArea(0, 0, 40, 15, MediaPrintableArea.MM));
pras.add(new Copies(1));
DocAttributeSet das = new HashDocAttributeSet();
// Specify print content
Doc doc = new SimpleDoc(textStream, flavor, das);
// Do not display the print dialog, print directly
try {
System.err.println("Loop - print");
job.print(doc, pras); // Make specific print operations for each page
} catch (PrintException pe) {
pe.printStackTrace();
}
}
}