私は塊/フレーズ/パラグラフ(私は気にしません)を持っています。 300 x 200で。どうすればいいですか?itext位置決めテキスト絶対に
答えて
最後に私はそれを行うための自分の方法を書いた。
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();
}
ここでは、すべての正しいケーシングとバージョンだと/ 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();
}
}
writer.getDirectContent()Document document = new Document();を使用するとエラーが発生しました。 Font times = null; //ステップ2 PdfWriterライター; \t \t try { \t \t \t writer = PdfWriter.getInstance(document、new FileOutputStream(path)); \t \t新しい文書を作成しました。同じ文書を編集機能付きで作成しました –
私はこれらの線に沿って何かをした、多分それは他の人を助ける:私は
ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(left,bottom,right,top);
ct.setText(new Phrase("String"));
ct.go();
pとは何ですか?あなたはそれを説明できますか? –
申し訳ありません、それは 'ct'だったはずです –
このソリューションだけが問題なく動作しました。
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();
}
}
メソッドを追加します。
- 1. 位置絶対絶対絶対
- 2. 位置:絶対
- 3. OpenGL - GlVertex相対位置/絶対位置
- 4. CSS絶対位置
- 5. 絶対位置要素
こんにちは。改行をサポートしていますか? – KarolDepka
私はこの答えをdownvoteしませんが、私はそれを好きではありません。問題は、チャンク、フレーズ、段落をどのように配置するのかです。正解は、ColumnTextを使用することです。フレーズ以外の改行やオブジェクトのサポートが必要な場合は、showTextAligned()メソッド(フレーズオブジェクトのみ)を使用するか、ColumnTextインスタンスとgo()メソッドを使用できます。 –
@ BrunoLowagie - 次に完全な答えはどうですか?正しい方法の説明を見ることは役に立ちます。 –