24

itext には、チャンク/フレーズ/段落 (どちらでもかまいません) があり、ページの他の場所、たとえば 300 x 200 に配置したいのですが、どうすればよいですか?

4

5 に答える 5

19

以下は、大文字と小文字の区別と try/catch ブロックがすべて正しいバージョンです。

  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();
    }
  }
于 2011-08-12T20:25:11.493 に答える
2

私はこれらの線に沿って何かをしました、多分それは他の人を助けるでしょう:

ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(left,bottom,right,top);
ct.setText(new Phrase("String"));
ct.go();
于 2015-12-15T21:32:07.347 に答える
0

私の場合、この解決策だけがうまくいきました。

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

メソッドを追加

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

これは確かにあなたを助けます。

于 2016-12-09T11:11:25.020 に答える