Hi Norbert,
while I was implementing an idempiere plugin which allows using LibreOffice as Report Templates I used barcode4j to generate the Barcodes. I looked also into barbecue but at the end took barcode4j because it supported one or two more barcode types if I'm not wrong. Unfortuanetyl barcode4j does not support QR-Codes nor AZTEC-Codes. For these (and only these) I used Zxing.
While implementing my barcode support I looked also at the barcode4j code and tell you the following (this might be related to your first question):
1. When you provide barcode4j say an EAN13 Code with 13 Numbers. Barcode4j will ignore the last number, take the 12 Numbers, calculate by itself the checksum (the 13th number) and append it to the 12-Number string to form again the 13 Length Number.
The same will happen if you provide it a 12 Length Number (which shoulde be a UPCA Code). In that case, the same proceudre applies: barcode4j will take only 11 Numbers and calculate the checksum by itself.
NOTE: I was using the barcode4j.jar relaesed in 2010. The current Code in the CVS Repository has changed a bit and ti seems they accept 12 and 13 Length Number for EAN13 generation. With 12 Numbers the 13th number will be calculated as checkusm and accordlingly appended. With 13 Numbers the 13th Numbers will be checked against the self calcluated checksum.
2. As far as I recall iDempiere has a field for UPC and EAN Code Numbers in the Product Window only (are there any other fields for EAN or UPC numbers in idempiere?). That field seems to be a simple Varchar Field and no check whatsover is done. I thought once to implement a ModelValidator to check the entered Barcode Number. But for that I need to have a type info, some kind of dropo down list indicating me what kind of barcode tpye (UPCA, EAN13, etc.) is the entered one. Without that Type Info and the usage of barcopde4j we may run into problems:
a) A 12 Number long Code can be considered as a full UPCA Code or an EAN13 code just missing the checkusm which barcode4j would be able to calculate.
b) Imagine that you want to use 2D Barcodes like DataMAtrix, PDF417 or similar which are able to code long text. Your field contains text but how are we supposed to know if the text should be encoded as DatatAMtrix, PDF417 or something similar without Barcode Type Indictaion?
c) Imagine you want to print a batch of reports at once. Let say 10 reports. Without barcode type indication you have two assure that all 10 reports use the same barcode type. Lets say you mix it up (a lot of records in the database) and you have EAN3 and EAN8 codes distributed around the records. Without a barcode indictaion and on runtime change of the barcode type barcode4j should generate you will get an Exception from barcode4j stating that for generating EAN13 the 8 Numbers in the filed are too few and vice versa.
At last it seems you are using the in-built Reporting Engine of iDempiere. I have never uesed it so unfortuanetely I can't tell anything about that :(