Introduced `PdfViewerOptions` class to centralize PDF viewer settings such as scaling, HiDPI support, zoom transitions, and rendering delays. Bound these options to `appsettings.json` for dynamic configuration. Injected `PdfViewerOptions` into `EnvelopeViewer.razor` and updated `OnInitializedAsync` to pass settings to JavaScript. Replaced hardcoded values in `pdf-viewer.js` with configurable options, improving maintainability and flexibility. Enhanced rendering logic to respect HiDPI settings, maximum DPR, and smooth zoom transitions. Improved thumbnail rendering with configurable delays to optimize performance.
65 lines
1.9 KiB
C#
65 lines
1.9 KiB
C#
namespace EnvelopeGenerator.ReceiverUI.Options;
|
|
|
|
public class PdfViewerOptions
|
|
{
|
|
public const string SectionName = "PdfViewer";
|
|
|
|
/// <summary>
|
|
/// Base scale for thumbnail rendering (0.2 - 1.5 recommended)
|
|
/// Higher values = better quality but slower rendering
|
|
/// Default: 0.75
|
|
/// </summary>
|
|
public double ThumbnailBaseScale { get; set; } = 0.75;
|
|
|
|
/// <summary>
|
|
/// Enable HiDPI/Retina support for thumbnails
|
|
/// Default: true
|
|
/// </summary>
|
|
public bool ThumbnailEnableHiDPI { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Maximum device pixel ratio multiplier for thumbnails (1.0 - 3.0)
|
|
/// Caps DPR to avoid excessive memory usage on 4K+ displays
|
|
/// Default: 2.0
|
|
/// </summary>
|
|
public double ThumbnailMaxDPR { get; set; } = 2.0;
|
|
|
|
/// <summary>
|
|
/// Enable HiDPI/Retina support for main PDF canvas
|
|
/// Default: true
|
|
/// </summary>
|
|
public bool MainCanvasEnableHiDPI { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Maximum device pixel ratio multiplier for main canvas (1.0 - 3.0)
|
|
/// Default: 2.0
|
|
/// </summary>
|
|
public double MainCanvasMaxDPR { get; set; } = 2.0;
|
|
|
|
/// <summary>
|
|
/// Enable smooth zoom transition (fade effect)
|
|
/// Default: true
|
|
/// </summary>
|
|
public bool EnableSmoothZoom { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Zoom transition duration in milliseconds (50 - 500)
|
|
/// Default: 150
|
|
/// </summary>
|
|
public int ZoomTransitionDuration { get; set; } = 150;
|
|
|
|
/// <summary>
|
|
/// Opacity during rendering (0.0 - 1.0)
|
|
/// Lower values = more visible fade effect
|
|
/// Default: 0.85
|
|
/// </summary>
|
|
public double RenderingOpacity { get; set; } = 0.85;
|
|
|
|
/// <summary>
|
|
/// Delay between thumbnail renders in milliseconds (10 - 200)
|
|
/// Higher values = less browser stress, slower initial load
|
|
/// Default: 50
|
|
/// </summary>
|
|
public int ThumbnailRenderDelay { get; set; } = 50;
|
|
}
|