2

我怎样才能找到每个 SOH 字符,它看起来像 PDF 上的一个框,并在其顶部放置一个复选框表单域。这个问题很接近使用 itextsharp 从 Pdf 文件中提取文本和文本矩形坐标,但我无法让它工作。下面是我正在尝试做的一些代码。如果那里已经有一个表格我不能放一个表格,那也是最好的。

StringBuilder text = new StringBuilder();

if (File.Exists(filePath))
{
    using (PdfReader pdfReader = new PdfReader(filePath))
    using (FileStream fileOut = new FileStream(@"C:\Projects\document.pdf", FileMode.Create, FileAccess.Write))
    using (PdfStamper stamp = new PdfStamper(pdfReader, fileOut))
    {

        for (int page = 1; page <= pdfReader.NumberOfPages; page++)
        {
            ITextExtractionStrategy strategy = new PdfHelper.LocationTextExtractionStrategyEx();
            string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);

            currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
            text.Append(currentText);

            int count = 0;
            foreach (var strat in ((PdfHelper.LocationTextExtractionStrategyEx)(strategy)).TextLocationInfo)
            {
                RadioCheckField checkbox = new RadioCheckField(stamp.Writer, new iTextSharp.text.Rectangle(strat.TopLeft[0], strat.BottomRight[1], (strat.TopLeft[0] + 5), (strat.BottomRight[1] - 5)), ("CheckBoxInserted" + count), "On");
                checkbox.CheckType = RadioCheckField.TYPE_SQUARE;
                stamp.AddAnnotation(checkbox.CheckField, page);
            }

            RadioCheckField checkField = new RadioCheckField(stamp.Writer, new iTextSharp.text.Rectangle(450, 690, 460, 680), "checkboxname", "On");
            checkField.CheckType = RadioCheckField.TYPE_SQUARE;
            stamp.AddAnnotation(checkField.CheckField, 1);
        }
    }
}
return text.ToString();
4

0 回答 0