5

次のような iTextSharp フッター テンプレート メソッドがあります。

public PdfTemplate footerTemplate(){
    PdfTemplate footer = cb.CreateTemplate(500, 50);
    footer.BeginText();
    BaseFont bf2 = BaseFont.CreateFont(BaseFont.TIMES_ITALIC, "windows-1254", BaseFont.NOT_EMBEDDED);
    footer.SetFontAndSize(bf2, 11);
    footer.SetColorStroke(BaseColor.DARK_GRAY);
    footer.SetColorFill(BaseColor.GRAY);
    int al = -200;
    int v = 45 - 15;
        float widthoftext = 500.0f - bf2.GetWidthPoint(footerOneLine[0], 11);
        footer.ShowTextAligned(al, footerOneLine[0], widthoftext, v, 0);
    footer.EndText();
    return footer;
}

footerTemplate() は次のような文字列を取得しています:

footerOneLine.Add("<b>All this line is bold, and <u>this is bold and underlined</u></b>");

そして、私は別の方法で文字列を HTML にします。メソッドは次のとおりです。

private Paragraph CreateSimpleHtmlParagraph(String text) {
    //Our return object
    Paragraph p = new Paragraph();

    //ParseToList requires a StreamReader instead of just text
    using (StringReader sr = new StringReader(text)) {
        //Parse and get a collection of elements
        List<IElement> elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, null);
        foreach (IElement e in elements) {
            //Add those elements to the paragraph
            p.Add(e);
        }
    }
    //Return the paragraph
    return p;
}

CreateSimpleHtmlParagraph問題:上記のコードでメソッドを使用できませんでした。上記のコードでメソッドをfooter.ShowTextAligned(al, footerOneLine[0], widthoftext, v, 0);使用する方法footer.ShowTextAligned(int, string, float, float, float); を教えてください。CreateSimpleHtmlParagraph敬具。

4

1 に答える 1

0

どのように使用しているのか正確にはわかりませんPdfTemplateが、 などの iTextSharp のテキスト抽象化ParagraphとなどのChunk生の PDF コマンドを混在させていますShowText()。抽象化は最終的に生のコマンドを使用しますが、通常は手動で計算しなければならない改行や現在の座標などの考慮に便利に役立ちます。

幸いなことに、テキストを描画する固定の四角形があることを受け入れる限りColumnText、オブジェクトを直接操作するという抽象化が 1 つ呼び出されます。PdfWriter.PdfContentByte

//Create a ColumnText from the current writer
var ct = new ColumnText(writer.DirectContent);
//Set the dimensions of the ColumnText
ct.SetSimpleColumn(0, 0, 500, 0 + 20);
//Create two fonts
var helv_n = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
var helv_b = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
//Create a paragraph
var p = new Paragraph();
//Add two chunks to the paragraph with different fonts 
p.Add(new Chunk("Hello ", new iTextSharp.text.Font(helv_n, 12)));
p.Add(new Chunk("World", new iTextSharp.text.Font(helv_b, 12)));
//Add the paragraph to the ColumnText
ct.AddElement(p);
//Tell the ColumnText to draw itself
ct.Go();
于 2013-03-29T20:32:30.000 に答える