147 lines
3.3 KiB
C#
147 lines
3.3 KiB
C#
using System.ComponentModel.DataAnnotations;
|
||
|
||
namespace HtmlToPdfService.Api.Models;
|
||
|
||
/// <summary>
|
||
/// HTML 转图片请求
|
||
/// </summary>
|
||
public class ConvertHtmlToImageRequest
|
||
{
|
||
/// <summary>
|
||
/// HTML 内容
|
||
/// </summary>
|
||
[Required(ErrorMessage = "HTML 内容不能为空")]
|
||
public string Html { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 页面加载后额外等待时间(毫秒),用于等待动画或延迟渲染
|
||
/// </summary>
|
||
public int? DelayAfterLoad { get; set; }
|
||
|
||
/// <summary>
|
||
/// 图片选项
|
||
/// </summary>
|
||
public ImageOptionsDto? Options { get; set; }
|
||
|
||
/// <summary>
|
||
/// 回调配置
|
||
/// </summary>
|
||
public CallbackOptionsDto? Callback { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否保存本地副本
|
||
/// </summary>
|
||
public bool? SaveLocal { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// URL 转图片请求
|
||
/// </summary>
|
||
public class ConvertUrlToImageRequest
|
||
{
|
||
/// <summary>
|
||
/// URL 地址
|
||
/// </summary>
|
||
[Required(ErrorMessage = "URL 不能为空")]
|
||
[Url(ErrorMessage = "URL 格式不正确")]
|
||
public string Url { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 等待条件:load, domcontentloaded, networkidle0, networkidle2
|
||
/// </summary>
|
||
public string? WaitUntil { get; set; }
|
||
|
||
/// <summary>
|
||
/// 页面加载超时(毫秒)
|
||
/// </summary>
|
||
public int? Timeout { get; set; }
|
||
|
||
/// <summary>
|
||
/// 页面加载后额外等待时间(毫秒),用于等待动画或延迟渲染
|
||
/// </summary>
|
||
public int? DelayAfterLoad { get; set; }
|
||
|
||
/// <summary>
|
||
/// 图片选项
|
||
/// </summary>
|
||
public ImageOptionsDto? Options { get; set; }
|
||
|
||
/// <summary>
|
||
/// 回调配置
|
||
/// </summary>
|
||
public CallbackOptionsDto? Callback { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否保存本地副本
|
||
/// </summary>
|
||
public bool? SaveLocal { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 图片选项 DTO
|
||
/// </summary>
|
||
public class ImageOptionsDto
|
||
{
|
||
/// <summary>
|
||
/// 图片格式:png, jpeg, webp
|
||
/// </summary>
|
||
public string Format { get; set; } = "png";
|
||
|
||
/// <summary>
|
||
/// 图片质量 (0-100),仅对 jpeg 和 webp 有效
|
||
/// </summary>
|
||
public int? Quality { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否全页截图(默认 true)
|
||
/// </summary>
|
||
public bool FullPage { get; set; } = true;
|
||
|
||
/// <summary>
|
||
/// 视口宽度(像素)
|
||
/// </summary>
|
||
public int? Width { get; set; }
|
||
|
||
/// <summary>
|
||
/// 视口高度(像素)
|
||
/// </summary>
|
||
public int? Height { get; set; }
|
||
|
||
/// <summary>
|
||
/// 截图区域(可选)
|
||
/// </summary>
|
||
public ClipAreaDto? Clip { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否省略背景(生成透明背景,仅 png 支持)
|
||
/// </summary>
|
||
public bool? OmitBackground { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 截图区域
|
||
/// </summary>
|
||
public class ClipAreaDto
|
||
{
|
||
/// <summary>
|
||
/// X 坐标
|
||
/// </summary>
|
||
public decimal X { get; set; }
|
||
|
||
/// <summary>
|
||
/// Y 坐标
|
||
/// </summary>
|
||
public decimal Y { get; set; }
|
||
|
||
/// <summary>
|
||
/// 宽度
|
||
/// </summary>
|
||
public decimal Width { get; set; }
|
||
|
||
/// <summary>
|
||
/// 高度
|
||
/// </summary>
|
||
public decimal Height { get; set; }
|
||
}
|
||
|