C# 通过iTextSharp将从右向左的语言文本添加到现有pdf文件的自定义位置
嗨 我想使用iTextSharp版本5.0.0.0库,在现有pdf文件的顶部添加一个波斯语文本(从右到左的语言) 我使用以下代码:C# 通过iTextSharp将从右向左的语言文本添加到现有pdf文件的自定义位置,c#,asp.net,pdf,itextsharp,C#,Asp.net,Pdf,Itextsharp,嗨 我想使用iTextSharp版本5.0.0.0库,在现有pdf文件的顶部添加一个波斯语文本(从右到左的语言) 我使用以下代码: public static void InsertText(string SourceFileName, string TargetFileName, string Text, int x, int y) { PdfReader reader = new PdfReader(SourceFileName); Document
public static void InsertText(string SourceFileName, string TargetFileName, string Text, int x, int y)
{
PdfReader reader = new PdfReader(SourceFileName);
Document document = new Document(PageSize.A4, 0, 0, 0, 0); // open the writer
FileStream fs = new FileStream(TargetFileName, FileMode.Create, FileAccess.Write);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
document.Open();
PdfContentByte cb = writer.DirectContent; // select the font properties
FontFactory.RegisterDirectories();
Font fTahoma = FontFactory.GetFont("Tahoma", BaseFont.IDENTITY_H, 10, Font.NORMAL, BaseColor.RED);
writer.SetMargins(0, 0, 0, 0);
ColumnText ct = new ColumnText(writer.DirectContent);
ct.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
Phrase p = new Phrase(Text, fTahoma);
ct.SetText(p);
ct.SetSimpleColumn(x, y, x + 350, y + 20);
ct.Go();
for (int i = 1; i <= reader.NumberOfPages; i++)
{
PdfImportedPage page = writer.GetImportedPage(reader, i);
cb.AddTemplate(page, 0, 0); // close the streams and voilá the file should be changed :)
document.NewPage();
}
document.Close();
fs.Close();
writer.Close();
}
我调用InsertTextSource.pdf,Target.pdf,波斯语消息,10800;
My source.pdf页面大小为:高度:842,宽度:595
不幸的是,我只收到了一半的target.pdf信息!另一半是隐藏的!
现在的问题是:如何将从右向左的语言文本添加到现有pdf文件的顶部?问题:导入的页面可能正在覆盖文本 解决方案:添加PDF导入页面,然后添加文本