web-dev-qa-db-fra.com

texte de positionnement itext absolument

Dans itext, j’ai un morceau/une phrase/un paragraphe (je ne me soucie pas de quoi) et je veux positionner un autre endroit sur la page, par exemple. à 300 x 200. Comment ferais-je cela?

22
Jack

Finalement, j'ai écrit ma propre méthode pour le faire.

private void PlaceChunck(String text, int x, int y) {
        PdfContentByte cb = writer.DirectContent;
        BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        cb.SaveState();
        cb.BeginText();
        cb.MoveText(x, y);
        cb.SetFontAndSize(bf, 12);
        cb.ShowText(text);
        cb.EndText();
        cb.RestoreState();
    }
27
Jack

Voici une version avec tout le boîtier et le bloc try/catch corrects:

  private static void absText(String text, int x, int y) {
    try {
      PdfContentByte cb = writer.getDirectContent();
      BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
      cb.saveState();
      cb.beginText();
      cb.moveText(x, y);
      cb.setFontAndSize(bf, 12);
      cb.showText(text);
      cb.endText();
      cb.restoreState();
    } catch (DocumentException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
17
aaronbartell

J'ai fait quelque chose dans ce sens, peut-être que ça aidera les autres:

ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(left,bottom,right,top);
ct.setText(new Phrase("String"));
ct.go();
2
JstnPwll

Dans mon cas, seule cette solution a bien fonctionné.

PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(FILE));

Ajouter une méthode

private void addTextData(Document document, String text) {
        PdfContentByte cb = pdfWriter.getDirectContent();
        cb.beginText();
        try {
            BaseFont f_cn = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
            cb.setFontAndSize(f_cn, 40);

            float requiredX = 50;
            float requiredY = 50;
            Paint paint = new Paint();
            Paint.setTextSize(40);
            Typeface typeface=Typeface.createFromAsset(getAssets(), "Helvetica.ttf");
            Paint.setTypeface(typeface);
            Paint.setColor(Color.BLACK);
            Paint.setStyle(Paint.Style.FILL);

            Rect result = new Rect();
            Paint.getTextBounds(text, 0, text.length(), result);
            Log.i("Text dimensions", "Width: "+result.width()+"-Height: "+result.height());
            float calculatedY = document.getPageSize().getHeight() - result.height() - requiredY;
            cb.setTextMatrix(requiredX, calculatedY);
            cb.showText(text);
            cb.endText();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
}

Cela vous aidera à coup sûr.

0
Hiren Patel

J'espère que cela vous aidera! Voici mon code ...

 Document document = new Document(PageSize.A4);
 PdfWriter writer = PdfWriter.getInstance(document, output);
 document.open();

 FixText("Add Your Text",400,700,writer,14);
 document.close();

Ajouter une fonction:

  private static void FixText(String text, int x, int y,PdfWriter writer,int size) {
    try {
        PdfContentByte cb = writer.getDirectContent();
        BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        cb.saveState();
        cb.beginText();
        cb.moveText(x, y);
        cb.setFontAndSize(bf, size);
        cb.showText(text);
        cb.endText();
        cb.restoreState();
    } catch (DocumentException | IOException e) {
        e.printStackTrace();
    }
}
0