Начнем с того, что поле мультимедиа здесь не самое важное, поле кадрирования - ср. этот ответ цитируя описание соответствующих полей из спецификации PDF.Если это явно не определено, то по умолчанию используется медиа-бокс.
И точно так же, как @Vive уже ответил, в общем случае вы не можете предположить, что превышает то, что указано, т.е.
MediaBox rectangle (Обязательный; наследуемый) Прямоугольник (см. 7.9.5, «Прямоугольники»), выраженный в единицах пространства пользователя по умолчанию, который долженопределить границы физического носителя, на котором страница должна отображаться или печататься (см. 14.11.2, «Границы страницы»).
CropBox rectangle (Необязательно; наследуется) Прямоугольник, выраженный в единицах пользовательского пространства по умолчанию, который должен определять видимую область пользовательского пространства по умолчанию.Когда страница отображается или печатается, ее содержимое должно быть обрезано (обрезано) до этого прямоугольника, а затем наложено на выходной носитель некоторым способом, определяемым реализацией (см. 14.11.2, «Границы страницы»).Значение по умолчанию: значение MediaBox .
(ISO 32000-1, Таблица 30 - Записи в объекте страницы)
в сочетании с
Прямоугольники используются для описания местоположений на странице и ограничительных рамок для различных объектов.Прямоугольник должен быть записан как массив из четырех чисел, дающий координаты пары диагонально противоположных углов.
(ISO 32000-1, раздел 7.9.5 Прямоугольники)
И в дикой природе вы можете найти все виды медиа-боксов, в частности, вы даже найдете медиа-боксы, которые не содержат [lower-left-x lower-left-y upper-right-x upper-right-y]
, но вместо этого используют верхний левый и нижний правый углы или которые начинаются сверхние правые координаты и нижние левые координаты после этого!Однако они довольно редко бывают, так что вам может повезти, и вам никогда не придется иметь дело с такой коробкой.
С другой стороны, нередко не начинать с начала координат (0,0), а вместо этого где-нибудьelse.
Кстати, в конструкторах класс PdfSharp PdfRectangle
вполне осознает, что две заданные точки являются просто диагонально противоположными углами, но необязательно сначала левый нижний угол, затем верхний правый угол, ине сортирует координаты, ср.комментарии там, например:
/// <summary>
/// Initializes a new instance of the PdfRectangle class with two points specifying
/// two diagonally opposite corners.
/// </summary>
public PdfRectangle(XPoint pt1, XPoint pt2)
{
_x1 = pt1.X;
_y1 = pt1.Y;
_x2 = pt2.X;
_y2 = pt2.Y;
}
Но позже, например, в методах Contains
, код неожиданно предполагает, что первая точка находится в левом нижнем углу, а вторая точка - в верхнем правом, например,
/// <summary>
/// Determines if the specified point is contained within this PdfRectangle.
/// </summary>
public bool Contains(double x, double y)
{
// Treat rectangle inclusive/inclusive.
return _x1 <= x && x <= _x2 && _y1 <= y && y <= _y2;
}
Так что, как только вы наткнетесь на забавный мультимедийный блок, многие методы PdfSharp, использующие PdfRectangle
, вероятно, потерпят неудачу чудесным образом.;)