Для создания PDF-документов с помощью C# и .NET необходимо понимать систему координат, которая используется для точного размещения элементов на странице. В этой статье мы рассмотрим основы системы координат в PDF. В PDF-документах используется Декартова система координат, в которой точка (0, 0) находится в левом нижнем углу страницы. Координаты увеличиваются вправо и вверх. Это отличается от многих других систем, в которых начало координат находится в левом верхнем углу.
Понимание системы координат в PDF-документах и возможность использовать её в C# и .NET позволяют создавать профессионально оформленные документы с точным расположением элементов. Библиотека SautinSoft.Pdf предоставляет мощные инструменты для работы с PDF, упрощая и ускоряя процесс создания документов и работы с ними.
Пошаговое руководство:
Полный код
using System;
using System.Drawing;
using System.IO;
using System.Reflection.Metadata;
using System.Security.Cryptography.X509Certificates;
using SautinSoft;
using SautinSoft.Pdf;
using SautinSoft.Pdf.Content;
namespace Sample
{
class Sample
{
/// <summary>
/// Coordinate system in PDF document using C# and .NET
/// </summary>
/// <remarks>
/// Details: https://sautinsoft.com/products/pdf/help/net/developer-guide/coordinate-system-in-pdf-document-using-csharp-and-dotnet.php
/// </remarks>
static void Main(string[] args)
{
// Before starting this example, please get a free 100-day trial key:
// https://sautinsoft.com/start-for-free/
// Apply the key here:
// PdfDocument.SetLicense("...");
using (var document = new PdfDocument())
{
// Add a page.
var page = document.Pages.Add();
// NOTE: In PDF, location (0, 0) is at the bottom-left corner of the page
// and the positive y axis extends vertically upward.
var pageBounds = page.CropBox;
// Add a thick red line at the top of the page.
var line1 = page.Content.Elements.AddPath();
line1.BeginSubpath(new PdfPoint(596, pageBounds.Top - 0)).
LineTo(new PdfPoint(pageBounds.Left - 0, pageBounds.Top - 0));
var line1Format = line1.Format;
line1Format.Stroke.IsApplied = true;
line1Format.Stroke.Width = 5;
line1Format.Stroke.Color = PdfColor.FromRgb(1, 0, 0);
// Add a thick blue line to the left of the page.
var line2 = page.Content.Elements.AddPath();
line2.BeginSubpath(new PdfPoint(596, pageBounds.Left - 0)).
LineTo(new PdfPoint(pageBounds.Right - 0, pageBounds.Top - 0));
var line2Format = line2.Format;
line2Format.Stroke.IsApplied = true;
line2Format.Stroke.Width = 5;
line2Format.Stroke.Color = PdfColor.FromRgb(0, 0, 1);
// Add a thick red line at the bottom of the page.
var line3 = page.Content.Elements.AddPath();
line3.BeginSubpath(new PdfPoint(596, pageBounds.Left - 0)).
LineTo(new PdfPoint(pageBounds.Left - 0, pageBounds.Bottom - 0));
var line3Format = line3.Format;
line3Format.Stroke.IsApplied = true;
line3Format.Stroke.Width = 5;
line3Format.Stroke.Color = PdfColor.FromRgb(1, 0, 0);
// Add a thick red line to the right of the page.
var line4 = page.Content.Elements.AddPath();
line4.BeginSubpath(new PdfPoint(0, pageBounds.Right - 596)).
LineTo(new PdfPoint(pageBounds.Right - 596, pageBounds.Top - 0));
var line4Format = line4.Format;
line4Format.Stroke.IsApplied = true;
line4Format.Stroke.Width = 5;
line4Format.Stroke.Color = PdfColor.FromRgb(0, 0, 1);
double margin = 15;
using (var formattedText = new PdfFormattedText())
{
// Set up and fill the PdfFormattedText object.
formattedText.TextAlignment = PdfTextAlignment.Left;
formattedText.MaxTextWidth = 100;
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append("(");
formattedText.Color = PdfColor.FromRgb(1, 0, 0);
formattedText.Append("0");
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append(";");
formattedText.Color = PdfColor.FromRgb(0, 0, 1);
formattedText.Append("842");
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append(")");
// Draw text in the top-left corner of the page.
page.Content.DrawText(formattedText,
new PdfPoint(margin,
page.CropBox.Top - margin - formattedText.Height));
// Clear the PdfFormattedText object.
formattedText.Clear();
// Set up and fill the PdfFormattedText object.
formattedText.TextAlignment = PdfTextAlignment.Right;
formattedText.MaxTextWidth = 100;
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append("(");
formattedText.Color = PdfColor.FromRgb(1, 0, 0);
formattedText.Append("596");
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append(";");
formattedText.Color = PdfColor.FromRgb(0, 0, 1);
formattedText.Append("842");
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append(")");
// Draw text in the top-right corner of the page.
page.Content.DrawText(formattedText,
new PdfPoint(page.CropBox.Width - margin - formattedText.MaxTextWidth,
page.CropBox.Top - margin - formattedText.Height));
// Clear the PdfFormattedText object.
formattedText.Clear();
// Set up and fill the PdfFormattedText object.
formattedText.TextAlignment = PdfTextAlignment.Right;
formattedText.MaxTextWidth = 100;
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append("(");
formattedText.Color = PdfColor.FromRgb(1, 0, 0);
formattedText.Append("596");
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append(";");
formattedText.Color = PdfColor.FromRgb(0, 0, 1);
formattedText.Append("0");
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append(")");
// Draw text in the bottom-right corner of the page.
page.Content.DrawText(formattedText,
new PdfPoint(page.CropBox.Width - margin - formattedText.MaxTextWidth,
margin));
// Clear the PdfFormattedText object.
formattedText.Clear();
// Set up and fill the PdfFormattedText object.
formattedText.TextAlignment = PdfTextAlignment.Left;
formattedText.MaxTextWidth = 100;
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append("(");
formattedText.Color = PdfColor.FromRgb(1, 0, 0);
formattedText.Append("0");
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append(";");
formattedText.Color = PdfColor.FromRgb(0, 0, 1);
formattedText.Append("0");
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.Append(")");
// Draw text in the bottom-left corner of the page.
page.Content.DrawText(formattedText,
new PdfPoint(margin,
margin));
// Save a PDF Document.
document.Save("Coordinate system.pdf");
}
}
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("Coordinate system.pdf") { UseShellExecute = true });
}
}
}
Option Infer On
Imports System
Imports System.Drawing
Imports System.IO
Imports System.Reflection.Metadata
Imports System.Security.Cryptography.X509Certificates
Imports SautinSoft
Imports SautinSoft.Pdf
Imports SautinSoft.Pdf.Content
Namespace Sample
Class Sample
Shared Sub Main(ByVal args As String())
Using document = New PdfDocument()
Dim page = document.Pages.Add()
Dim pageBounds = page.CropBox
Dim line1 = page.Content.Elements.AddPath()
line1.BeginSubpath(New PdfPoint(596, pageBounds.Top - 0)).LineTo(New PdfPoint(pageBounds.Left - 0, pageBounds.Top - 0))
Dim line1Format = line1.Format
line1Format.Stroke.IsApplied = True
line1Format.Stroke.Width = 5
line1Format.Stroke.Color = PdfColor.FromRgb(1, 0, 0)
Dim line2 = page.Content.Elements.AddPath()
line2.BeginSubpath(New PdfPoint(596, pageBounds.Left - 0)).LineTo(New PdfPoint(pageBounds.Right - 0, pageBounds.Top - 0))
Dim line2Format = line2.Format
line2Format.Stroke.IsApplied = True
line2Format.Stroke.Width = 5
line2Format.Stroke.Color = PdfColor.FromRgb(0, 0, 1)
Dim line3 = page.Content.Elements.AddPath()
line3.BeginSubpath(New PdfPoint(596, pageBounds.Left - 0)).LineTo(New PdfPoint(pageBounds.Left - 0, pageBounds.Bottom - 0))
Dim line3Format = line3.Format
line3Format.Stroke.IsApplied = True
line3Format.Stroke.Width = 5
line3Format.Stroke.Color = PdfColor.FromRgb(1, 0, 0)
Dim line4 = page.Content.Elements.AddPath()
line4.BeginSubpath(New PdfPoint(0, pageBounds.Right - 596)).LineTo(New PdfPoint(pageBounds.Right - 596, pageBounds.Top - 0))
Dim line4Format = line4.Format
line4Format.Stroke.IsApplied = True
line4Format.Stroke.Width = 5
line4Format.Stroke.Color = PdfColor.FromRgb(0, 0, 1)
Dim margin As Double = 15
Using formattedText = New PdfFormattedText()
formattedText.TextAlignment = PdfTextAlignment.Left
formattedText.MaxTextWidth = 100
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append("(")
formattedText.Color = PdfColor.FromRgb(1, 0, 0)
formattedText.Append("0")
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append(";")
formattedText.Color = PdfColor.FromRgb(0, 0, 1)
formattedText.Append("842")
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append(")")
page.Content.DrawText(formattedText, New PdfPoint(margin, page.CropBox.Top - margin - formattedText.Height))
formattedText.Clear()
formattedText.TextAlignment = PdfTextAlignment.Right
formattedText.MaxTextWidth = 100
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append("(")
formattedText.Color = PdfColor.FromRgb(1, 0, 0)
formattedText.Append("596")
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append(";")
formattedText.Color = PdfColor.FromRgb(0, 0, 1)
formattedText.Append("842")
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append(")")
page.Content.DrawText(formattedText, New PdfPoint(page.CropBox.Width - margin - formattedText.MaxTextWidth, page.CropBox.Top - margin - formattedText.Height))
formattedText.Clear()
formattedText.TextAlignment = PdfTextAlignment.Right
formattedText.MaxTextWidth = 100
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append("(")
formattedText.Color = PdfColor.FromRgb(1, 0, 0)
formattedText.Append("596")
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append(";")
formattedText.Color = PdfColor.FromRgb(0, 0, 1)
formattedText.Append("0")
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append(")")
page.Content.DrawText(formattedText, New PdfPoint(page.CropBox.Width - margin - formattedText.MaxTextWidth, margin))
formattedText.Clear()
formattedText.TextAlignment = PdfTextAlignment.Left
formattedText.MaxTextWidth = 100
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append("(")
formattedText.Color = PdfColor.FromRgb(1, 0, 0)
formattedText.Append("0")
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append(";")
formattedText.Color = PdfColor.FromRgb(0, 0, 1)
formattedText.Append("0")
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.Append(")")
page.Content.DrawText(formattedText, New PdfPoint(margin, margin))
document.Save("Coordinate system.pdf")
End Using
End Using
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo("Coordinate system.pdf") With {
.UseShellExecute = True
})
End Sub
End Class
End Namespace
Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.ru или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже: