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?
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();
}
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();
}
}
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();
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.
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();
}
}