到目前为止,我所看到的所有使用ITextSharp的示例都是从头开始创建一个新文档,向其中添加内容并关闭它。 如果我需要对PDF执行多项操作,例如我想添加一个段落然后添加一行,该怎么办? 例如,如果我运行这个简单的控制台应用程序,我只需创建一个PDF并添加一个段落,然后关闭它,一切运行正常。
class Program
{
static void Main(string[] args)
{
Document pdfDoc = new Document();
PdfWriter.GetInstance(pdfDoc, new FileStream("TestPDF.pdf", FileMode.Create));
pdfDoc.Open();
pdfDoc.Add(new Paragraph("Some Text added"));
pdfDoc.Close();
Console.WriteLine("The file was created.");
Console.ReadLine();
}
}
但是,如果我需要做其他事情,比如像这样画一条线
class Program
{
static void Main(string[] args)
{
Document pdfDoc = new Document();
PdfWriter.GetInstance(pdfDoc, new FileStream("TestPDF.pdf", FileMode.Create));
pdfDoc.Open();
pdfDoc.Add(new Paragraph("Some Text added"));
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, new FileStream("TestPDF.pdf", FileMode.OpenOrCreate));
PdfContentByte cb = writer.DirectContent;
cb.MoveTo(pdfDoc.PageSize.Width / 2, pdfDoc.PageSize.Height / 2);
cb.LineTo(pdfDoc.PageSize.Width / 2, pdfDoc.PageSize.Height);
cb.Stroke();
writer.Close();
pdfDoc.Close();
Console.WriteLine("The file was created.");
Console.ReadLine();
}
}
我在尝试打开文件时遇到错误,因为它已经被pdfDoc打开了。 如果我把突出显示的代码放在pdfDoc.Close()之后,我收到一条错误,说“文档没有打开” 如何从添加文本切换到添加行? 我是否需要关闭文档然后使用PDFReader重新打开它并在那里进行修改或者我可以一次完成所有操作吗?
答案 0 :(得分:3)
您收到错误是因为您已经拥有一个PDFWriter的第二个实例。第二个PdfWriter.GetInstance(pdfDoc,新的FileStream(“TestPDF.pdf”,FileMode.OpenOrCreate));不需要。我对你的代码做了一个小编辑,现在看起来似乎有效了
Document pdfDoc = new Document();
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, new FileStream("TestPDF.pdf", FileMode.OpenOrCreate));
pdfDoc.Open();
pdfDoc.Add(new Paragraph("Some Text added"));
PdfContentByte cb = writer.DirectContent;
cb.MoveTo(pdfDoc.PageSize.Width / 2, pdfDoc.PageSize.Height / 2);
cb.LineTo(pdfDoc.PageSize.Width / 2, pdfDoc.PageSize.Height);
cb.Stroke();
pdfDoc.Close();
Console.WriteLine("The file was created.");
Console.ReadLine();