HtmlToPdf/mvp/HtmlToPdfService.Api/Models/ConvertToImageRequest.cs
2025-12-11 23:35:52 +08:00

147 lines
3.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; }
}