使用itextsharp c#在现有PDF上绘制圆形

3
我有些麻烦在现有的PDF上画圆,我找到了一段代码可以在现有的PDF上添加文本,我试图将其改编成画圆的代码,但结果只是一个空白页面。有人有想法如何解决这个问题吗?
我的代码:
        string oldFile = @"C:\...6166-21.pdf";
        string newFile = @"C:\...NEW.pdf";

        // open the reader
        PdfReader reader = new PdfReader(oldFile);
        Rectangle size = reader.GetPageSizeWithRotation(1);
        Document document = new Document(size);

        FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
        PdfWriter writer = PdfWriter.GetInstance(document, fs);
        document.Open();

        // the pdf content
        PdfContentByte cb = writer.DirectContent;

        cb.Circle(150f, 150f, 50f);
        cb.SetColorStroke(iTextSharp.text.BaseColor.GREEN);

        // create the new page and add it to the pdf
        PdfImportedPage page = writer.GetImportedPage(reader, 1);
        cb.AddTemplate(page, 0, 0);

        // close the streams and voilá the file should be changed :)
        document.Close();
        fs.Close();
        writer.Close();
        reader.Close();
1个回答

6

您忘记添加 cb.Stroke();

请尝试如下:

cb.SetColorStroke(iTextSharp.text.BaseColor.GREEN);
cb.Circle(150f, 150f, 50f);
cb.Stroke();

1
对于有效的PDF,请在“cb.Circle”之前使用“cb.SetColorStroke”:一旦路径构建已开始,只允许进一步的路径构建操作、剪辑路径操作或路径绘制操作。(许多阅读器将接受您的结果,但较新版本可能在这方面发生更改。) - mkl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接