@web-js/dom-screenshot
Version:
A lightweight DOM screenshot library based on @zumer/snapdom and html2canvas.
112 lines (111 loc) • 3.65 kB
TypeScript
import { type Options as Html2CanvasOptions } from "html2canvas";
import { type SnapOptions } from "@zumer/snapdom";
/**
* DOM截图配置选项
*/
export interface ScreenshotOptions {
/** 输出图片质量 (0-1) */
quality?: number;
/** 输出图片格式 */
format?: "png" | "jpeg" | "webp";
/** 背景颜色 */
backgroundColor?: string;
/** 是否允许跨域 */
allowTaint?: boolean;
/** 是否使用CORS */
useCORS?: boolean;
/** 缩放比例 */
scale?: number;
/** 输出宽度 */
width?: number;
/** 输出高度 */
height?: number;
/** 是否忽略元素 */
ignoreElements?: (element: Element) => boolean;
/** 是否启用SVG元素预处理 */
processSvg?: boolean;
/** 是否启用CSS渐变文本预处理 */
processGradientText?: boolean;
/** 引擎优先级 */
enginePriority?: "snapdom" | "html2canvas";
/** 是否内联字体以确保字体正确渲染 */
embedFonts?: boolean;
/** 是否预加载字体和资源 */
preCacheFonts?: boolean;
/**
* snapdom截图配置选项
*/
snapdomOptions?: Partial<SnapOptions>;
/**
* html2canvas截图配置选项
*/
html2canvasOptions?: Partial<Html2CanvasOptions>;
}
/**
* DOM截图类
*/
export declare class DomScreenshot {
private defaultOptions;
/**
* 截取DOM元素为Canvas
* @param element - 要截图的DOM元素
* @param options - 截图配置选项
* @returns Promise<HTMLCanvasElement>
*/
captureToCanvas(element: HTMLElement, options?: ScreenshotOptions): Promise<HTMLCanvasElement>;
/**
* 截取DOM元素为Base64字符串
* @param element - 要截图的DOM元素
* @param options - 截图配置选项
* @returns Promise<string>
*/
captureToBase64(element: HTMLElement, options?: ScreenshotOptions): Promise<string>;
/**
* 截取DOM元素为Blob对象
* @param element - 要截图的DOM元素
* @param options - 截图配置选项
* @returns Promise<Blob>
*/
captureToBlob(element: HTMLElement, options?: ScreenshotOptions): Promise<Blob>;
/**
* 下载DOM元素截图
* @param element - 要截图的DOM元素
* @param filename - 下载文件名
* @param options - 截图配置选项
*/
downloadScreenshot(element: HTMLElement, filename?: string, options?: ScreenshotOptions): Promise<void>;
}
/**
* 创建DOM截图实例
* @returns DomScreenshot实例
*/
export declare function createScreenshot(): DomScreenshot;
/**
* 快速截图函数 - 返回Base64
* @param element - 要截图的DOM元素
* @param options - 截图配置选项
* @returns Promise<string>
*/
export declare function screenshot(element: HTMLElement, options?: ScreenshotOptions): Promise<string>;
/**
* 快速截图函数 - 返回Canvas
* @param element - 要截图的DOM元素
* @param options - 截图配置选项
* @returns Promise<HTMLCanvasElement>
*/
export declare function screenshotToCanvas(element: HTMLElement, options?: ScreenshotOptions): Promise<HTMLCanvasElement>;
/**
* 快速截图函数 - 返回Blob
* @param element - 要截图的DOM元素
* @param options - 截图配置选项
* @returns Promise<Blob>
*/
export declare function screenshotToBlob(element: HTMLElement, options?: ScreenshotOptions): Promise<Blob>;
declare const _default: {
DomScreenshot: typeof DomScreenshot;
createScreenshot: typeof createScreenshot;
screenshot: typeof screenshot;
screenshotToCanvas: typeof screenshotToCanvas;
screenshotToBlob: typeof screenshotToBlob;
};
export default _default;