如何在pdf的特定位置放置文字?我做了一些搜索,但没有发现任何太好的东西。我有document.Add(new Paragraph("Date:" + DateTime.Now));
,我想把它放在pdf文件的特定区域。
我的代码:
private void savePDF_Click(object sender, EventArgs e)
{
FileStream fileStream = new FileStream(nameTxtB.Text + "Repair.pdf", FileMode.Create, FileAccess.Write, FileShare.None);
Document document = new Document();
document.Open();
iTextSharp.text.Rectangle rectangle = new iTextSharp.text.Rectangle(PageSize.LETTER);
PdfWriter pdfWriter = PdfWriter.GetInstance(document, fileStream);
iTextSharp.text.Image r3tsLogo = iTextSharp.text.Image.GetInstance("rt3slogo.PNG"); //creates r3ts logo
iTextSharp.text.Image r3Info = iTextSharp.text.Image.GetInstance("R3 Information.PNG"); //creates r3 information text below r3ts logo
r3tsLogo.SetAbsolutePosition(document.PageSize.Width - 375 - 0f, document.PageSize.Height - 130 - 0f);
r3Info.SetAbsolutePosition(document.PageSize.Width - 365 - 0f, document.PageSize.Height - 170 - 0f); //higher the number in height the lower the place of text on paper
//less number will result in text more to right in width
//increase size of picture
r3tsLogo.ScalePercent(120);
r3Info.ScalePercent(65);
//---------------adds all images to pdf file ---------------------------------
document.Add(r3tsLogo);
document.Add(r3Info);
document.Add(new Paragraph("Date:" + DateTime.Now));
document.Close();
}
答案 0 :(得分:3)
假设您知道如何在绝对位置添加图像(请参阅Joris'答案),但查看如何添加文字,那么您的问题的答案是:使用ColumnText
。
如果您只需要添加一行不需要换行,可以使用ShowTextAligned()
方法:
ColumnText.showTextAligned(writer.DirectContent,
Element.ALIGN_CENTER, new Phrase("single line"), x, y, rotation);
在这行代码中,x
和y
是文本中间的坐标(其他可能的对齐值为ALIGN_LEFT
和ALIGN_RIGHT
)。 rotation
参数定义以度为单位的旋转。请注意,文本"single line"
不会被包装。您可以添加"从页面上删除的文字"这样,如果您添加的文字太长。
如果要在特定矩形内添加文本,则需要使用Rectangle
对象定义列:
ColumnText ct = new ColumnText(writer.DirectContent);
ct.setSimpleColumn(new Rectangle(0, 0, 523, 50));
ct.addElement(new Paragraph("This could be a very long sentence that needs to be wrapped"));
ct.go();
如果您提供的文字多于适合矩形的文字,则不会呈现该文字。但是,它仍然可以在ct
对象中使用,以便您可以将其余文本添加到其他位置。
所有这些都在之前得到了回答:
单行:
多行:
我是否必须长期搜索这些示例?不,我在Absolute Positioning of text下的官方网站上找到了它们。
那些搜索的人有智慧......
答案 1 :(得分:1)
这个概念在“iText in action”一书中有详尽的解释。哪个可以在网站上找到。
http://developers.itextpdf.com/examples/itext-action-second-edition/chapter-3
短代码示例(查看网站上的其他示例):
// step 1
Document document = new Document(PageSize.POSTCARD, 30, 30, 30, 30);
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
// step 3
document.open();
// step 4
// Create and add a Paragraph
Paragraph p = new Paragraph("Foobar Film Festival", new Font(FontFamily.HELVETICA, 22));
p.setAlignment(Element.ALIGN_CENTER);
document.add(p);
// Create and add an Image
Image img = Image.getInstance(RESOURCE);
img.setAbsolutePosition(
(PageSize.POSTCARD.getWidth() - img.getScaledWidth()) / 2,
(PageSize.POSTCARD.getHeight() - img.getScaledHeight()) / 2);
document.add(img);