web-dev-qa-db-ja.com

iTextSharpを使用してPDF段落のフォントを設定するにはどうすればよいですか?

例に従おうとすると ここ 、次のコードを追加して、PDF doc:

using (var doc = new Document(PageSize.A4, 50, 50, 25, 25))
{
    using (var writer = PdfWriter.GetInstance(doc, ms))
    {
        doc.Open();

        var docTitle = new Paragraph("UCSC Direct - Direct Payment Form");                        
        var titleFont = FontFactory.GetFont("Lucida Sans", 18, Font.Bold);
        doc.Add(docTitle);

ただし、titleFontを作成しようとしてもコンパイルされません( " 'iTextSharp.text.FontFactory.GetFont(string、float、iTextSharp.text.BaseColor)'に最適なオーバーロードされたメソッドの一致にはいくつかあります無効な引数 ")なので、一度に1つの引数を追加することで、インテリセンスレスに「助けて」もらいます。最初の引数にはフォント名、文字列であると書かれていたので、「SegoeUI」を追加しました。次の引数はフォントサイズ、floatだったので、18.0を追加しました。最後に、フォントの色であるBaseColorタイプが必要だったので、BaseColor.Blackを追加して、次のようにしました。

var titleFont = FontFactory.GetFont("Segoe UI", 18.0, BaseColor.BLACK);

...しかし、「 'iTextSharp.text.FontFactory.GetFont(string、string、bool)'に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります "

したがって、例をコピーして、string、int、およびFontスタイルを使用すると、「いいえ」と表示され、string、float、およびBaseColorが必要になります。次にそれらの引数を追加すると、その「心」が変わり、本当に必要なのは文字列、文字列、ブール値ですか?

また、この例は、次のように段落をドキュメントに追加することを示しています。

doc.Add(docTitle, titleFont);

...しかし、「メソッド 'Add'のオーバーロードなしは2つの引数を取ります」のように、それも飛ばないでしょう。

ITextSharpを軟化させるために何ができますか?私がジグを踊るか、ダージを唱えるかにかかわらず、それは一緒に遊びたくありません。

更新

さて、これはコンパイルします:

var docTitle = new Paragraph("UCSC Direct - Direct Payment Form");
var titleFont = FontFactory.GetFont("Courier", 18, BaseColor.BLACK);
docTitle.Font = titleFont;
doc.Add(docTitle);
7
B. Clay Shannon

GetFontには 現在14の可能なオーバーロード

public static Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color)
public static Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color, bool cached)
public static Font GetFont(string fontname, string encoding, bool embedded, float size, int style)
public static Font GetFont(string fontname, string encoding, bool embedded, float size)
public static Font GetFont(string fontname, string encoding, bool embedded)
public static Font GetFont(string fontname, string encoding, float size, int style, BaseColor color)
public static Font GetFont(string fontname, string encoding, float size, int style)
public static Font GetFont(string fontname, string encoding, float size)
public static Font GetFont(string fontname, string encoding)
public static Font GetFont(string fontname, float size, int style, BaseColor color)
public static Font GetFont(string fontname, float size, BaseColor color)
public static Font GetFont(string fontname, float size, int style)
public static Font GetFont(string fontname, float size)
public static Font GetFont(string fontname)

したがって、ステップ1では、自分に最適なものを選択します。

以下の行が機能しない理由:

FontFactory.GetFont("Segoe UI", 18.0, BaseColor.BLACK);

c#仕様によるため の場合、接尾辞なしで18.0はdoubleとして解釈され、オーバーロードがないため、.Netは文字列に変換するための文字列です。

FontFactory.GetFont("Segoe UI", 18.0f, BaseColor.BLACK)

段落自体については、コンストラクターでフォントを設定するか、段落のFontプロパティを設定するだけでどちらでも機能します。

var p1 = new Paragraph("Hello", myFont);

var p2 = new Paragraph();
p2.Font = myFont;
p2.Add("Hello")
14
Chris Haas