это может звучать как очень простой вопрос, но я не могу понять это.
Я хочу поместить водяной знак поверх моего PDF и хочу, чтобы он начинался в левом нижнем углу и конец в верхнем правом углу. Моя начальная проблема в том, что я не могу найти левый нижний угол. У меня сложилось впечатление, что в зависимости от документа PDF, который я открываю, координаты 0,0 меняются.
Это то, что я получил до сих пор:
static string fontname = "Calibri";
public void WaterMarkPDF3(string sourceFileName)
{
PdfDocument doc = PdfReader.Open(sourceFileName, PdfDocumentOpenMode.Modify);
foreach (PdfPage page in doc.Pages)
{
//First calculate the cross angle from bottom left to top right
double Angle= -Math.Atan(page.Height / page.Width) * 180 / Math.PI;
//here I calculate how long the diagonal is so that my string can have the same length
double watermarkWidth = page.Height / Math.Sin(Angle);
XGraphics gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Prepend);
double emSize = 300;
XFont font = new XFont(fontname, emSize, XFontStyle.Bold);
XSize size = gfx.MeasureString("Teststring", font);
gfx.TranslateTransform(page.Width / 2, page.Height / 2);
gfx.RotateTransform(Angle);
gfx.TranslateTransform(-page.Width / 2, -page.Height / 2);
XGraphicsPath path = new XGraphicsPath();
path.AddString("Teststring", font.FontFamily, XFontStyle.Bold, emSize,
new XPoint(0, page.Height), XStringFormats.Default);
// add to color to the outline and filling
XPen pen = new XPen(XColor.FromArgb(75, 0, 152, 163), 2);
XBrush brush = new XSolidBrush(XColor.FromArgb(50, 0, 152, 163));
gfx.DrawPath(pen, brush, path);
}
doc.Save(sourceFileName);
}
По тому, что я понимаю 0,0 будет верхний левый угол. Обычно, если я начну свой водяной знак в new XPoint(0, page.Height)
, я ожидаю, что он будет внизу слева. Как вы можете видеть на прилагаемом рисунке, он расположен в «случайном» месте.