【问题标题】:How to add paragraph and then a line?如何添加段落然后一行?
【发布时间】:2010-07-29 20:04:36
【问题描述】:

到目前为止,我看到的所有使用 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 再次打开它并在那里进行修改,或者我可以一次完成所有操作吗?

【问题讨论】:

    标签: itextsharp


    【解决方案1】:

    您收到错误消息,因为您尝试请求第二个 PDFWriter 实例,而您已经拥有一个。第二个 PdfWriter.GetInstance(pdfDoc, new 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多