【发布时间】:2021-05-15 10:34:28
【问题描述】:
考虑一个名为 in.pdf 的 1 页 PDF 文档,如下所示:
我们在 C# 中执行以下代码:
using (var reader = new PdfReader(@"C:\<path>\in.pdf"))
using (var writer = new PdfWriter(@"C:\<path>\out.pdf"))
using (var pdfDoc = new PdfDocument(reader, writer))
{
var page = pdfDoc.GetFirstPage();
var pdfCanvas = new PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), pdfDoc);
using (var canvas = new Canvas(pdfCanvas, new Rectangle(400, 300)))
{
canvas.Add(new Paragraph("new text\r\nnew text")
.SetFontColor(new DeviceRgb(255, 0, 0))
.SetFontSize(50));
}
pdfCanvas.Release();
}
我们得到新文本出现在原始文本下,正如预期的那样:
现在我们执行相同的代码,只做一处更改 - 我们创建PdfCanvas,如下所示:
var pdfCanvas = new PdfCanvas(page);
结果仍如预期 - 新文本高于原始文本:
最后,我们执行与PdfCanvas相同的代码,创建如下:
var pdfCanvas = new PdfCanvas(page.NewContentStreamAfter(), page.GetResources(), pdfDoc);
新文本如预期在原始文本之上,但它被翻转了!
这是一个错误吗?像这样创建 PdfCanvas 获得相同的翻转输出:
var pdfCanvas = new PdfCanvas(page.GetFirstContentStream(), page.GetResources(), pdfDoc);
//OR
var pdfCanvas = new PdfCanvas(page.GetLastContentStream(), page.GetResources(), pdfDoc);
使用 nuget 包itext7 v7.1.15。
【问题讨论】:
标签: itext7