【发布时间】:2020-03-27 03:06:43
【问题描述】:
我正在尝试找出如何查找我之前使用 iText7 添加到 PDF 中的文本。
我正在玩 iText7,并且有以下代码:
static void Main(string[] args)
{
PdfDocument pdfDocument = new PdfDocument(new PdfWriter("./test.pdf"));
pdfDocument.AddNewPage(PageSize.LETTER.Rotate());
Document document = new Document(pdfDocument);
PdfFont helv = PdfFontFactory.CreateFont(StandardFonts.HELVETICA);
Paragraph paragraph = new Paragraph("test string");
paragraph.SetFont(helv);
paragraph.SetFontSize(8);
paragraph.SetFixedPosition(500, 194, 100);
document.Add(paragraph);
document.Close();
return;
}
然后我运行不同的代码来获取流,这显示了以下内容:
q
BT
/F1 8 Tf
500 197.54 Td
(test string)Tj
ET
Q
值得注意的是,我将 Y 位置指定为 194,生成的 PDF 显示为 197.54。如果我向 PDF 添加(用户提供的)文本,然后想稍后返回并用其他内容替换该文本,我可以知道,至少对于特定的字体/大小,我必须将 3.54 添加到 Y I最初指定;我假设这与字体的基线 v. iText 指定文本块的底部有关。
我的问题是,我如何计算“3.54”对于我可能使用的任何其他字体或大小。有没有我可以从 iText 获得帮助的信息,还是只是“将 Helvetica 的字体大小乘以 0.44,Courier 等的字体大小乘以 0.35”?
到目前为止,也许只是幸运,我还没有看到将文本字符串拆分为不同的 Td/Tj 命令的任何问题,所以我暂时忽略这个潜在的未来问题。
谢谢!
【问题讨论】: