我需要在某个地方放置一定字体和大小的文本,所以我发现StampAnnotation不适合,因为我不知道在哪里以及如何安装字体。问题是,创建段落并插入文本后,您可能需要更改它,但不是插入新值,而是文本被叠加(“25pcs.”与“363936393639pcs.”重叠,但在Adobe Acrobate Pro 此文本定义为单个段落)
我将值设置为以下方式:
var font = PdfFontFactory.CreateFont("C:\\Windows\\Fonts\\GOST Common.ttf", "Identity-H");
_workingDocument.SetFont(font);
string utf8String = count + "шт.";
var writableText = new Paragraph(utf8String).SetItalic().SetBold();
switch (_format)
{
case Formats.A4Book:
x = 530;
y = 175;
ClearText(text, x, y); //Пытаюсь удалить значение при помощи PdfCleaner.AutoSweepCleanUp
AddImage(x, y); //Проставляю картинку, которая перекрывает часть другого текста, который не очищается и не должен в методе ClearText
writableText.SetFontSize(20).SetFixedPosition(x - 300, y, 350).SetTextAlignment(TextAlignment.RIGHT)
.SetHorizontalAlignment(HorizontalAlignment.RIGHT);
_workingDocument.Add(writableText);
break;
case Formats.A3Album:
... // То же самое, но другие x и y
case Formats.A3Book:
... // То же самое, но другие x и y
default:
...
}
清理逻辑:
int countTry = 0;
ICleanupStrategy cleanupStrategy =
new RegexBasedCleanupStrategy(new Regex(@"(.*)[0-9]{1,}(.*)шт(.*)", RegexOptions.IgnoreCase))
.SetRedactionColor(ColorConstants.WHITE);
while (countTry < 3)
{
try
{
PdfCleaner.AutoSweepCleanUp(_document.GetFirstPage(), cleanupStrategy);
}
catch
{
// ignore
}
finally
{
countTry++;
}
}
我有 iText 版本 8.0.5、iText.pdfsweep 4.0.3、itext.bouncy-castle-adapter 8.0.5、.Net 8