2017-05-09 5 views
-4

私はC#でiText 7を使用しています。長い行を書く必要があります。iText7、四角形の内側にキャリッジリターンを制御する方法はありますか?

canvas.BeginText().ShowText("My text")テキストを2行目に渡す方法が見つかりません。\nは認識されません。

だから私は私のテキストは、新しい行を作成したい場所を私は制御することはできません、私は、長方形や文書レンダラを使用しますが、私は同じ問題を抱えています。

私は私が(単一ラインと短いなど)いくつかのテキストや(複数の行で構成)いくつかの段落を記述する必要があり、既存のPDF(モデル)を使用します。これらの要素はxmlで定義されています。段落の改行を区切るために改行を行うことができます。つまり、ドキュメントは動的に作成され、コンテンツと要素の配置はxmlファイル内で定義されます。

+0

あなたが矩形内に収まるテキストを追加したい場合は、なぜあなたは、低レベルのメソッドを使用していますか?このチュートリアルの[第2章](http://developers.itextpdf.com/content/itext-7-building-blocks/chapter-2-working-rootelement)を参照してください。はるかに簡単なやり方で何かを難しいやり方でやりたい理由はありますか? –

答えて

1

BeginText()ShowText()EndText()などの低レベルメソッドでコンテンツを追加するには、PDF仕様(ISO 32000)の知識が必要です。 \nが無視されているという事実に驚いているという事実は、あなたがPDFに精通していないことを教えてくれます。

iTextのは、PDFの低レベルの構文に対処したくない人のために書かれました。例えば:あなたはiTextを持つ矩形内のテキストを追加したい場合、あなたはちょうどあなたがRectangleオブジェクトを渡す先のCanvasオブジェクトを作成する必要があります。

PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 
PdfPage page = pdf.AddNewPage(); 
PdfCanvas pdfCanvas = new PdfCanvas(page); 
Rectangle rectangle = new Rectangle(36, 650, 100, 100); 
Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle); 
PdfFont font = PdfFontFactory.CreateFont(FontConstants.TIMES_ROMAN); 
PdfFont bold = PdfFontFactory.CreateFont(FontConstants.TIMES_BOLD); 
Text title = 
    new Text("The Strange Case of Dr. Jekyll and Mr. Hyde").SetFont(bold); 
Text author = new Text("Robert Louis Stevenson").SetFont(font); 
Paragraph p = new Paragraph().Add(title).Add(" by ").Add(author); 
canvas.Add(p); 
pdf.Close(); 

この例では、オンラインiTextの7のchapter 2で見つけることができますチュートリアル。 long sentence inside a rectangle

スクリーンショットは、長い文章がRectangle内部加えを示し、その文は、異なるライン上に分布得た方法(自動的に新しい行を導入します)。 \n文字のコンセプトはPDFには存在しません(疑わしいときはISO 32000をチェックしてください)。あなたは改行を紹介したい場合は、それが1 Paragraph、別のParagraph内の他の部分にコンテンツの一部を置くのに十分なのです。

+0

@herve今話題に:私が追加したスクリーンショットは、長方形が長方形の中にどのように追加されたか、そしてその行がどのように異なる行に分散されたかを示しています。 '\ n'文字の概念はPDFには存在しません(疑わしいときはISO 32000をチェックしてください)。改行を導入したい場合は、コンテンツの一部を1つの 'Paragraph'に入れ、もう1つの部分を別の' Paragraph'に入れるだけで十分です。なぜあなたの問題を解決できないのですか? –

+0

あなたの答えをありがとう。それは問題を部分的に解決します。私の場合は、既存のPDF(モデル)を使用してテキストを(1行のように短い)、いくつかの段落(複数の行で構成)を記述する必要があります。これらの要素はxmlで定義されています。段落の改行を区切るために改行を行うことができます。つまり、ドキュメントは動的に作成され、コンテンツと要素の配置はxmlファイル内で定義されます。 – herve

+0

それはあなたの質問から明らかではありませんでした。あなたの質問を改善することをお勧めします。これがあなたのチャンスです。 PDFはWordの処理形式ではありませんのでご注意ください。 PDF内のすべてのコンテンツは、絶対座標(固定位置)で追加されます。コンテンツを追加するだけでは、既存のコンテンツが新しいコンテンツに適応することは期待できません。静的な文書(既存のPDF)を使用して、文書を動的に構成しているというあなたの主張と矛盾しないことを説明したいかもしれません。より明確にする必要があります。 –

関連する問題