0

我想在iTextSharp中的pdf 文档中的特定位置使用zapfdingbatslist 打一个复选标记。

到目前为止,我可以做的是我可以显示复选标记,但它都在文档的一侧,而不是在我想要的特定 X、Y 坐标上。我在下面有一个代码,希望能让你明白我在说什么。

    String outputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf");
    System.IO.FileStream fs;
    Document doc = new Document(PageSize.A4, 20, 20, 10, 10);
    PdfContentByte cb;
    PdfWriter writer;

    fs = new System.IO.FileStream(outputFile, System.IO.FileMode.Create);
    writer = PdfWriter.GetInstance(doc, fs);
    doc.SetPageSize(iTextSharp.text.PageSize.A4.Rotate());
    writer.AddViewerPreference(PdfName.PICKTRAYBYPDFSIZE, PdfBoolean.PDFTRUE);

    doc.Open();
    cb = writer.DirectContent;

    List myList = new ZapfDingbatsList(52); // Check mark symbol from Dingbatslist

    // I have some more code here but it is not needed for the problem
    // and thererfore not shown


    // I could shohw the dingbatslist check mark here
    myList.Add(" ");
    doc.Add(myList); // However I want to show it in a specific X, Y position

    doc.Close();
    writer.Close();
    fs.Close();

任何想法?

4

1 回答 1

3

顺便说一句,我是大多数iText 文档的作者(以及 iText 的原始开发人员,包括Document, PdfWriter, ZapfdingbatsList,... 类),如果您花一些时间阅读 iText 文档,我将不胜感激.

让我们从第 2 章开始,看一些介绍该类的C# 示例。Font

例如:

Font font = new Font(Font.FontFamily.ZAPFDINGBATS, 12);

一旦你有了一个 Font 对象,你就可以创建一个Phrase(也在第 2 章中解释过):

Phrase phrase = new Phrase(zapfstring, font); 

zapfstring包含您想要的string任何 Zapfdingbats 字符的位置在哪里。

要将这个短语添加到绝对位置,您需要阅读第 3 章。查看示例以获得灵感,例如FoobarFilmfestival.cs

PdfContentByte canvas = writer.DirectContent;
ColumnText.ShowTextAligned(canvas, Element.ALIGN_CENTER, phrase, 200, 500, 0); 

其中200500是 X 和 Y 坐标,并且0是用度数表示的角度。代替ALIGN_CENTER,您也可以选择ALIGN_RIGHTALIGN_LEFT

在您的代码示例中,您使用列表将 Zapfdingbats 字形添加到文档中。请花点时间把自己放在我的位置上。是不是觉得你是参加红辣椒音乐会的袜子的发明者?

于 2013-05-04T07:15:30.443 回答