Добрый день!
Необходимо в файлы пдф вписать строки. Использую такой код (из plm-системы):
public void AddText3 (FileDesc fDesc, MemoryStream outputPdfStream)
{
using (var input PdfStream = new MemoryStream())
using (var srcStream = fDesc. DownloadingDataStream )
{
srcStream.Copy( inputPdfStream);
inputPdfStream.Position = 0;
using (var reader = new iText.Kernel.pdf.PdfReader (inputPdfStream) )
using (var writer = new iText.Kernel.Pdf.PdfWriter (outputPdfStream))
using (var pdfDoc = new iText.Kernel.Pdf.PdfDocument (reader, writer))
{
//всего листов (для цикла)
var numberOfPages = pdfDoc.GetNumberOfPages();
//Шрифт
string fontPath = Path.Combine( Environment.GetFolderPath( Environment.Special Folder.Fonts ), "arial.ttf" );
var font = iText.Kernel.Font.Pdf FontFactory.CreateFont (fontPath, iText.10.Font.PdfEncodings.IDENTITY_H, true); // Высота шрифта
var fontSize = 14f;
//Отступы для надписи var marginx = 20;
var marginŸ = 20;
//Надпись
string text = "Учтенная копия";
// Высота области в которой будет надпись
var textWidth = font.GetWidth (text, fontSize);
for (var i = 1; i<=numberOfPages; i++)
{
//лист
var page = pdfDoc.GetPage(i);
var canvas = new iText.Kernel.Pdf.Canvas.PdfCanvas (page.NewContentStreamAfter(), page.GetResources(), pdfDoc);
var y = page.GetPageSizeWithRotation().GetHeight() - marginy - fontSize;
canvas.SaveState();
canvas
.SetFontAndSize (font, fontSize)
.BeginText()
.MoveText(0, 0)
.ShowText (text)
.EndText();
canvas.RestoreState();
}
}
}
}
на трех файлах pdf разный результат: в первом текст написан как положен слева внизу в углу, во втором - слева вверху и как будто там (0, 0) причем ось Х направлена вниз, а ось Y в право. в третьем тоже наверху только теперь текст еще и отражен зеркально.
Пробовал анализировать команды pdf "cm" чтобы понять в каком положении сейчас матрица, но понял что это без толку. Может кто сталкивался или знает в чем причина таких разных результатов.