Updated the digital document signing system to use INCHES as the standard unit for annotations and signatures, aligning with GdPicture14's native format. Previously used DevExpress units (1/100 inch) and other formats have been replaced.
- Updated `AnnotationDto` to reflect the new coordinate system.
- Introduced `SignatureDto` for signature positions, deprecating `AnnotationDto`.
- Added conversion formulas for transforming coordinates between INCHES and other systems (DevExpress, PDF Points, PDF.js, etc.).
- Added a unit comparison table and A4 page dimensions in various units.
- Introduced a new read-only PDF.js viewer for envelopes (`/envelope/{EnvelopeKey}`).
These changes improve consistency, simplify conversions, and align with modern tools like PSPDFKit and iText7.
108 lines
2.9 KiB
C#
108 lines
2.9 KiB
C#
namespace EnvelopeGenerator.Application.Common.Dto;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public record AnnotationCreateDto
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
[Obsolete("Not required for DevExpress")]
|
|
public int ElementId { get; init; } = -1;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
[Obsolete("Not required for DevExpress")]
|
|
public string Name { get; init; } = string.Empty;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
[Obsolete("Not required for DevExpress")]
|
|
public string Value { get; init; } = string.Empty;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
[Obsolete("Not required for DevExpress")]
|
|
public string Type { get; init; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// Horizontal position of the signature field on the page.
|
|
/// <br/><br/>
|
|
/// <b>Unit:</b> INCHES (GdPicture14 native), origin at the <b>top-left</b> corner of the page, X increases to the right.
|
|
/// <br/>
|
|
/// <b>Conversion to DevExpress:</b> Multiply by 100 (DX uses 1/100 inch).
|
|
/// Convert: <c>xDX = xInches * 100.0</c>
|
|
/// <br/>
|
|
/// <b>Conversion to PDF Points:</b> Multiply by 72 (PSPDFKit, iText7 use 1/72 inch).
|
|
/// Convert: <c>xPt = xInches * 72.0</c>
|
|
/// </summary>
|
|
public double? X { get; init; }
|
|
|
|
/// <summary>
|
|
/// Vertical position of the signature field on the page.
|
|
/// <br/><br/>
|
|
/// <b>Unit:</b> INCHES (GdPicture14 native), origin at the <b>top-left</b> corner of the page, Y increases downward.
|
|
/// <br/>
|
|
/// <b>Conversion to DevExpress:</b> Multiply by 100 (DX uses 1/100 inch).
|
|
/// Convert: <c>yDX = yInches * 100.0</c>
|
|
/// <br/>
|
|
/// <b>Conversion to PDF Points (top-left origin):</b> Multiply by 72.
|
|
/// Convert: <c>yPt = yInches * 72.0</c>
|
|
/// <br/>
|
|
/// <b>Conversion to PDF Points (bottom-left origin - iText7):</b> Y-flip required.
|
|
/// Convert: <c>yPt = (pageHeightInches - yInches - elemHeightInches) * 72.0</c>
|
|
/// </summary>
|
|
public double? Y { get; init; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
[Obsolete("Not required for DevExpress")]
|
|
public double? Width { get; init; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
[Obsolete("Not required for DevExpress")]
|
|
public double? Height { get; init; }
|
|
|
|
/// <summary>
|
|
/// Added to eliminate the need for SignatureDto in DevExpress
|
|
/// </summary>
|
|
public int? Page { get; init; }
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public record AnnotationDto : AnnotationCreateDto
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public long Id { get; init; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public DateTime AddedWhen { get; init; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public DateTime? ChangedWhen { get; init; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string? ChangedWho { get; init; }
|
|
} |