2009-10-26 22 views

答えて

25

最後に私はそれを行うための自分の方法を書いた。

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

こんにちは。改行をサポートしていますか? – KarolDepka

+5

私はこの答えをdownvoteしませんが、私はそれを好きではありません。問題は、チャンク、フレーズ、段落をどのように配置するのかです。正解は、ColumnTextを使用することです。フレーズ以外の改行やオブジェクトのサポートが必要な場合は、showTextAligned()メソッド(フレーズオブジェクトのみ)を使用するか、ColumnTextインスタンスとgo()メソッドを使用できます。 –

+2

@ BrunoLowagie - 次に完全な答えはどうですか?正しい方法の説明を見ることは役に立ちます。 –

16

ここでは、すべての正しいケーシングとバージョンだと/ 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(); 
    } 
    } 
+0

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新しい文書を作成しました。同じ文書を編集機能付きで作成しました –

2

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

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

pとは何ですか?あなたはそれを説明できますか? –

+0

申し訳ありません、それは 'ct'だったはずです –

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

メソッドを追加します。