Я создаю веб-приложение, которое будет использоваться для хранения документов PDF в нашей базе данных, которые поступают через автоматизированную систему при получении факсов.Пользователи должны иметь возможность просматривать эти документы, и одна из наиболее распространенных вещей, которые они должны делать с этими документами, - это переворачивать / поворачивать отдельные страницы, когда они были неправильно вставлены в факсимильный аппарат.Это почти всегда поворот страницы на 180 градусов.Я создал для этого функцию, которая, кажется, работает, но только в первый раз ее вызывают.Любые последующие вызовы этой функции, похоже, больше не работают.Еще одна странная вещь, связанная с этой функцией, заключается в том, что у меня также есть другой вызываемый метод, который добавит некоторый текст в документ в выбранных местах.Я передаю текст и некоторые координаты, и он записывает текст по этим координатам в документе, и все хорошо.Проблема в том, что после документа поворачивается (один раз будет вращаться), если пользователь пытается добавить текст в документ где-то, он, кажется, меняет координатыон помещает текст в, а текст вверх ногами.
Все это говорит мне о том, что, в конечном счете, я каким-то образом неправильно вращаю страницу.Я не могу найти хороших примеров того, как повернуть страницу в документе PdfSharp правильным способом, поэтому некоторые рекомендации были бы чрезвычайно полезными и очень ценными.Заранее спасибо.
Вот код, который я сейчас использую для поворота страниц и добавления текста на страницы:
// This is how I'm rotating the page...
public PdfDocument FlipPage(byte[] documentSource, int pageNumber)
{
using (var stream = new MemoryStream())
{
stream.Write(documentSource, 0, documentSource.Length);
var document = PdfReader.Open(stream);
var page = document.Pages[pageNumber - 1];
page.Rotate = 180;
return document;
}
}
// This is how I'm adding text to a page...
public static void AddTextToPage(this PdfDocument document, int pageNumber, Annotation annotation)
{
var page = document.Pages[pageNumber - 1];
annotation.TargetHeight = page.Height.Value;
annotation.TargetWidth = page.Width.Value;
var graphics = XGraphics.FromPdfPage(page);
var textFormatter = new XTextFormatter(graphics);
var font = new XFont("Arial", 10, XFontStyle.Regular);
graphics.DrawString(annotation.Text, font, XBrushes.Red, new PointF((float)annotation.TargetX, (float)annotation.TargetY));
}