We analyzed the questions and prepared the feedback:
1. Barcode width: I’ve tryed many parameters combinations but I cannot manage to obtain a rendered barcode (in PDF) with (approximately) the same width as the barcode rendered by Word. This is my high priority issue, since I’m including barcodes within templates with “busy” layout and a 1cm difference in barcode width breaks things.
I propose to estimate the quality of image derived from method BarcodeGenerator.generateBarcodeImage().
If you’re satisfied with quality of BufferedImage object, then we should collaborate with Aspose.Word team to found cause of issue.
2.mage quality: word rendering looks sharper then in the generated PDF. This can be seen on screen but even better if you print out the examples.
Not blocking cause barcodes can be read on PDF, but I ask if there is some configuration that can improve output quality.
You can try to increase the size and change the font style of text.
Actually, the investigation task regarding the quality of text was created.
3.Aspect ratio: I was not able to achieve in PDF the same height/width dimensions as Word’s rendering. My priority is to have the width same as in Word, but just wondering why how can I possibly have more control on aspect ratio.
Method baseGenerationParameters.getBarcode().getBarHeight() influence height of barcode bars.
So to adjust the width and height of Barcode image, you should use following:
- Parameter BaseGenerationParameters.setAutoSizeMode() should be AutoSizeMode.NEAREST or AutoSizeMode.INTERPOLATION.
- Use next parameters to change image width and height:
baseGenerationParameters.getImageHeight().setMillimeters(100);
baseGenerationParameters.getImageWidth().setMillimeters(300);
4.Text caption style: The font size property for the text caption (below the barcode) is apparently ignored. This is low priority as I can add my own text with some manual image manipulation; I’m just curious to know if I’m missing something and if there are parameters to also make the caption look similar to the one rendered by Word (e.g. augmented spacing between characters).
Option baseGenerationParameters.getCaptionBelow() is intended for configuring additional caption. For this purpose you should use it in such way:
baseGenerationParameters.getCaptionBelow().getFont().setStyle(FontStyle.UNDERLINE);
baseGenerationParameters.getCaptionBelow().setVisible(true);
But for your case you should utilize option:
baseGenerationParameters.getBarcode().getCodeTextParameters():
baseGenerationParameters.getBarcode().getCodeTextParameters().setFontMode(FontMode.MANUAL);
baseGenerationParameters.getBarcode().getCodeTextParameters().getFont().getSize().setPixels(20);
This is a proper example of code as a whole (without using Word):
String barcodeValue = "12345";
String symbolHeight = "1000";
SymbologyEncodeType encodeType = EncodeTypes.CODE_39_STANDARD;
BarcodeGenerator generator = new BarcodeGenerator(encodeType);
generator.setCodeText(barcodeValue);
BaseGenerationParameters genParams = generator.getParameters();
genParams.getBarcode().getCodeTextParameters().setLocation(CodeLocation.NONE);
genParams.getBarcode().getCodeTextParameters().setLocation(CodeLocation.BELOW);
genParams.getCaptionAbove().setText("");
float scale = 1.0f;
float xdim = 1.0f;
scale = 0.82f;
xdim = 0.2f;
//TODO For For customizing the barcode aspect ratio
genParams.setAutoSizeMode(AutoSizeMode.INTERPOLATION);
generator.setCodeText('' + barcodeValue + '');
genParams.getBarcode().getPadding().getLeft().setMillimeters(0);
genParams.getBarcode().getPadding().getRight().setMillimeters(0);
genParams.getBarcode().getPadding().getTop().setMillimeters(0);
genParams.getBarcode().getPadding().getBottom().setMillimeters(0);
// TODO For customizing the width and height of barcode image use genParams.getImageHeight() and genParams.getImageWidth()
genParams.getImageHeight().setMillimeters(100);
genParams.getImageWidth().setMillimeters(300);
genParams.getBarcode().getXDimension().setMillimeters(xdim);
// TODO For customizing the barcode codetext style use genParams.getBarcode().getCodeTextParameters() instead genParams.getCaptionBelow()
genParams.getBarcode().getCodeTextParameters().setFontMode(FontMode.MANUAL);
genParams.getBarcode().getCodeTextParameters().getFont().getSize().setPixels(20);
genParams.getBarcode().getCodeTextParameters().getFont().setStyle(FontStyle.STRIKEOUT | FontStyle.UNDERLINE);// TODO instead 12
// TODO genParams.getCaptionBelow() is additional caption. If you want to use CaptionBelow, set genParams.getCaptionBelow().setVisible(true);
// genParams.getCaptionBelow().getFont().setStyle(FontStyle.UNDERLINE);
// genParams.getCaptionBelow().setVisible(true);
BufferedImage im = generator.generateBarCodeImage();