条形码在IText中没有正确填充

时间:2014-08-19 08:03:23

标签: java pdf-generation itextsharp itext

我正在使用ItextSharp,因为我填充了表单字段,因为某些字段是条形码,我在模板级别声明为文本,我将替换为Image。

代码:

private void addBarcode(PdfStamper stamper, AcroFields fields, String barcodeValue, String fieldName) throws Exception
{
 try
 {
    PdfContentByte overContent = stamper.getOverContent(1);
    Barcode barcode = new Barcode39();
    barcode.setCode(barcodeValue);
    barcode.setFont(null);
    barcode.setBarHeight(10f);
    Image image39 = barcode.createImageWithBarcode(overContent, BaseColor.BLACK, null);
    List<FieldPosition> barcodeArea = fields.getFieldPositions(fieldName);
    if (CollectionUtils.isEmpty(barcodeArea))
    {
        return;
    }
    Rectangle rect = barcodeArea.get(0).position;
    image39.scaleToFit(rect.getWidth(), rect.getHeight());
    image39.setAbsolutePosition(rect.getLeft() + (rect.getWidth() - image39.getScaledWidth()) / 2, rect.getBottom() + (rect.getHeight() - image39.getScaledHeight()) / 2);
    overContent.addImage(image39);
  } catch (Exception ex)
  {
   LOGGER.error(ex.getMessage(), ex);
   throw ex;
  }
 } 

相同的代码工作方式不同(我在三个地方调用相同的代码)。图像附在下面。第三个很好,其他两个都不行,灰色条形码即将到来 的 IMAGE1:

Gray color bar code
图像2:

Gray color bar code
的Image3:

exact one

我也试过stamper.getUnderContent(1);

感谢。

1 个答案:

答案 0 :(得分:0)

设置不透明度。此问题已解决。

<强>代码:

PdfGState state = new PdfGState();
state.setFillOpacity(100f);
overContent.setGState(state);