前端关于pptxgen.js个人使用介绍

官方文档链接:Quick Start Guide | PptxGenJS
git地址:https://github.com/gitbrent/PptxGenJS/

1. 安装命令

npm install pptxgenjs --save

yarn add pptxgenjs

2. 示例demo
import pptxgen from "pptxgenjs"; // 引入pptxgen 

// 1. Create a Presentation 
// 1. 创建ppt
let pptx= new pptxgen();

// 2. Add a Slide to the presentation
// 2. 创建一个ppt页面,每调用一次pres.addSlide() 都可以生成一张新的页面
// 建议把每个页面的构造抽成一个个函数,然后通过函数调用生成新页面。代码不会很乱
 // 关于坐标长度与px的转换 x 1 = 127~128px 左右
let slide = pptx.addSlide();

// 3. Add 1+ objects (Tables, Shapes, etc.) to the Slide
// 3. 调用addText(),在ppt页面中插入文字Hello World from PptxGenJS...
slide.addText("Hello World from PptxGenJS...", {
    x: 1.5,
    y: 1.5,
    color: "363636",
    fill: { color: "F1F1F1" },
    align: pres.AlignH.center,
});

// 4. Save the Presentation
 //导出ppt 配置项: fileName: string 导出pptx的名字, compression:Boolean, 是否为zip导出,导出时间更久,但导出大小节省
pres.writeFile({ fileName: "Sample Presentation.pptx" });
3. 背景布局:

3.1 pptx可以设置多个可选的 PowerPoint 元数据属性,可以使用 ES6 样式的getters/setters

pptx.author = ‘Brent Ely’;
pptx.company = ‘S.T.A.R. Laboratories’;
pptx.revision = ‘15’;
pptx.subject = ‘Annual Report’;
pptx.title = ‘PptxGenJS Sample Presentation’;

3.2layout设置当前演示文稿中的所有幻灯片板式

pptx.layout = ‘LAYOUT_NAME’;

也可以使用defineLayout()方法自定义创建任意大小ppt版式

// 定义ppt的布局
pptx.defineLayout({ name: "A3", width: 10, height: 7.0710678 });
// 使用布局
pptx.layout = "A3";

3.2 设置背景

slide.background = { color: "F1F1F1" }; // 设置背景颜色
slide.background = { color: "FF3399", transparency: 50 }; // 设置背景颜色与透明度
slide.background = { data: "image/png;base64,ABC[...]123" }; //设置base64格式背景图片
slide.background = { path: "https://some.url/image.jpg" }; // 设置网络路径背景图片
slide.color = "696969"; // 设置默认字体颜色
// 在给定位置添加幻灯片编号
slide.slideNumber = { x: 1.0, y: "90%" };

// 带样式的幻灯片编号
slide.slideNumber = { x: 1.0, y: "95%", fontFace: "Courier", fontSize: 32, color: "CF0101" }

3.3 导出幻灯片

// fileName 导柱名字, 支持promise
pptx.writeFile({ fileName: 'Browser-PowerPoint-Demo.pptx' });

pptx.writeFile({ fileName: 'Browser-PowerPoint-Demo.pptx' });
    .then(fileName => {
        console.log(`created file: ${fileName}`);
    });

也支持导出其他类型文件

// 导出base64
pptx.write("base64")
    .then((data) => {
        console.log("write as base64: Here are 0-100 chars of `data`:
");
        console.log(data.substring(0, 100));
    })
    .catch((err) => {
        console.error(err);
    });

3.4 可以通过循环创建多个ppt

for (let slide of this.list) {
        let pptxSlide = pptx.addSlide();
        if (slide.styles.backgroundImage) {
          const backgroundImage = slide.styles.backgroundImage;
          pptxSlide.background = {
            path: backgroundImage,
          };
        } else {
          const color = rgbaToHex(slide.styles.backgroundColor)
            .color.slice(1)
            .toUpperCase();
          const transparency =
            (1 - rgbaToHex(slide.styles.backgroundColor).transparency) * 100;
          pptxSlide.background = { color, transparency };
        }
  }

.........
4. 模块方法

通过addSlide()创建一个ppt页面,可以插入元素

文字addText(),图片addImage(),表格addTable(),图表addChart(), 形状addShape(),媒体addMedia()

以下配置文字/图片/形状/表格/图表/媒体都需要配置,是元素在页面中的位置信息与宽高

4.1 添加文字元素, 文档地址:Text | PptxGenJS

var pptx = new PptxGenJS();
var slide = pptx.addSlide();

// 使用百分比的动态定位
slide.addText("^ (50%/50%)", { x: "50%", y: "50%" });

// 基本格式
slide.addText("Hello", { x: 0.5, y: 0.7, w: 3, color: "0000FF", fontSize: 64 });
slide.addText("World!", { x: 2.7, y: 1.0, w: 5, color: "DDDD00", fontSize: 90 });
slide.addText("Arial, 32pt, green, bold, underline, 0 inset", {
    x: 0.5,
    y: 5.0,
    w: "90%",
    margin: 0.5,
    fontFace: "Arial",
    fontSize: 32,
    color: "00CC00",
    bold: true,
    underline: true,
    isTextBox: true,
});

// 也可以一次配置多个
slide.addText(
    [
        { text: "word-level", options: { fontSize: 36, color: "99ABCC", align: "right", breakLine: true } },
        { text: "formatting", options: { fontSize: 48, color: "FFFF00", align: "center" } },
    ],
    { x: 0.5, y: 4.1, w: 8.5, h: 2.0, fill: { color: "F1F1F1" } }
);

// 详细示例参考 https://gitbrent.github.io/PptxGenJS/docs/api-text/

详细参数(个人总结,有误的话见谅)Text | PptxGenJS

 // 1磅(pt)等于1/72英寸
// 1英寸 = 25.4毫米
 // 1英寸 = 96像素(默认DPI)
 // 1磅(pt) = 1/72英寸 = 96/72像素 = 4/3像素 ≈ 1.333像素
//  pt = px * dpi / 72 (windows默认为96dpi)
 // 以 Windows 下的 96dpi 来计算,1 pt = px * 96/72 = px * 4/3
 if (el.type === 'text') {
            // 3. 调用addText(),在ppt页面中插入文字
            // https://gitbrent.github.io/PptxGenJS/docs/api-text/ -- 官方配置文档
            pptxSlide.addText(el.styles.value, {
              x: el.pathData.left / 128, // x 轴 number / string(百分比)
              y: el.pathData.top / 128, // y 轴 number / string(百分比)
              w: el.pathData.width / 128, // 宽度 number / string(百分比)
              h: el.pathData.height / 128, // 高度 number / string(百分比)
              zIndex: el.zIndex, // 层级
              color: el.styles.color.slice(1), // 字体颜色
              // fill: { color: "F1F1F1" }, //文本框背景填充
              align: el.styles.justifyContent, // 横向位置 left or center or right
              valign:
                el.styles.alignItems === 'start'
                  ? 'top'
                  : el.styles.alignItems === 'center'
                  ? 'middle'
                  : 'bottom', // 垂直位置, top middle bottom
              fontFace: el.styles.fontFamily, // 字体
              fontSize: el.styles.fontSize * 0.75, // 字号 // TODO  需px转字号
              charSpacing: el.styles.letterSpacing * 0.75, // 字符间距 number 1-256
              bold: el.styles.fontWeight === '700', // 是否加粗
              underline: el.styles.textDecoration === 'underline', // 下划线
              // isTextBox: true, // 文字盒子
              autoFit: true, // 自动适应文本框大小
              // baseline: 0, // pptxgen
              // breakLine: false, // 文本中的空格是否自动换行
              strike: el.styles.textDecoration === 'line-through', // dblStrike(双线) or sngStrike(单线) 删除线
              italic: el.styles.fontStyle === 'italic', // 倾斜 Boolean
              // subscript: true, // 下标 
              // superscript: true, // 上标
              // wrap: false, // 文本环绕
              // vert: 文本方向: 属性值 eaVert or horz or mongolianVert or vert or vert270 or wordArtVert or wordArtVertRtl
              // transparency: 透明度 值:0-100
              // softBreakBefore: Boolean 软换行符
              // shadow: 文本阴影 Ex: shadow:{ type:'outer', angle:180 .. } 详情参考文档 https://gitbrent.github.io/PptxGenJS/docs/api-text/
              // rtlMode: true, // 启用右排文本 // TODO 不知为何未生效
              rotate: el.styles.rotate, // 旋转,0-360
              // rectRadius: 2, // number 圆角半径,单位英寸, 不知道是啥
              // paraSpaceBefore number 段落间距 - 段前,
              // paraSpaceAfter number 段落间距 - 段后,
              // outline: { size: 1.5, color: "FF0000" }, // 文字外边框,有点类似加粗效果
              // margin: 20, // number 0-99, 相当于html的padding
              lineSpacingMultiple: el.styles.lineHeight / 1.25, // 行距-倍数,number, 0-9.99
              // lineSpacing: ((el.styles.lineHeight - el.styles.fontSize) * 4) / 3, //  行距-点数,number, 1-256 单位 磅 
              // line:{ width:'2', color:'A9A9A9' }, // 边框 
              // lang: "zh-TW", // 使用中文等非英文字体时设置此项,默认为 en-US
              // inset: 200, // 不知道是啥 number 1-256 单位:英寸
              // indentLevel: 30, // 缩进 1-32
              // hyperlink: { url: "https://bz.zzzmh.cn/index" },// 超链接,仅会使文字有下划线
              // highlight: "ff5522", // 高亮显示的颜色(文字填充)
              // glow: { size: 10, opacity: 0.75, color: "0088CC" }, // 文字阴影
            });
          }

4.2 添加图片元素 文档地址:Images | PptxGenJS

// 添加网络图片
slide.addImage({ path: "https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg" });

// 添加本地图片
slide.addImage({ path: "images/chart_world_peace_near.png" });

//添加base64格式图片
slide.addImage({ data: "image/png;base64,iVtDafDrBF[...]=" });

// 支持png、jpg、gif 等,
// GIF动画:仅在Microsoft 365 / Office365和最新的桌面版本上显示动画,旧版本将仅在演示模式下对其进行动画处理
// SVG 图像:在最新版本的桌面 PowerPoint 或 Microsoft 365/Office365 中受支持
// 读取和编码图像需要 CPU 时间!包含的图像越多,图像越大,消耗的时间就越多。

参数(个人总结,有误的话见谅,详细请参考文档)

if (el.type === 'image') {
            pptxSlide.addImage({
              path: el.url,
              x: el.pathData.left / 128, // x 轴 number / string(百分比)
              y: el.pathData.top / 128, // y 轴 number / string(百分比)
              w: el.pathData.width / 128, // 宽度 number / string(百分比)
              h: el.pathData.height / 128, // 高度 number / string(百分比)
              zIndex: el.zIndex, // 层级
              rotate: el.styles.rotate,
              // altText: '', // string 替代文本值
              // flipH: false, // boolean 水平翻转
              // flipV: false, // boolean 垂直翻转
              rounding: false, // 将图像塑造成圆形
              // hyperlink: { url: "https://bz.zzzmh.cn/index" }, // 超链接
              // placeholder:'', string  图像占位符
              // sizing: 裁剪图片, object {type: 'crop', 'contain' or 'cover', w: number, h: number, x: number, y: number}
              // transparency: 1-100, 透明度
            });
          }

4.3 添加媒体元素Media | PptxGenJS

// 本地路径与网络路径
slide.addMedia({ type: "video", path: "https://example.com/media/sample.mov" });
slide.addMedia({ type: "video", path: "../media/sample.mov" });

// Base64
slide.addMedia({ type: "audio", data: "audio/mp3;base64,iVtDafDrBF[...]=" });

// 在线视频(Microsoft 365支持)
slide.addMedia({ type: "online", link: "https://www.youtube.com/embed/Dph6ynRVyUc" });

//视频支持mpg、mov、mp4、m4v 等;音频支持mp3、wav 等(请参阅 PowerPoint 中支持的视频和音频文件格式:https://support.microsoft.com/en-us/office/video-and-audio-file-formats-supported-in-powerpoint-d8b12450-26db-4c7b-a5c1-593d3418fb59?ui=en-us&rs=en-us&ad=us)

// 可以使用 Microsoft 365/Office 365 查看在线视频(它们可能会在较旧的桌面 PowerPoint 版本上显示错误)
//并非所有平台都支持所有格式!MacOS 可以显示 MPG 文件,而 Windows 可能不会,有些 AVI 文件可能有效,有些可能无效。视频编解码器就是这样奇怪和痛苦的。

参数示例(有误见谅,详情看文档)

          if (el.type === 'video') {
            pptxSlide.addMedia({
              type: 'video',
              path: el.videoUrl,
              x: el.pathData.left / 128, // x 轴 number / string(百分比)
              y: el.pathData.top / 128, // y 轴 number / string(百分比)
              w: el.pathData.width / 128, // 宽度 number / string(百分比)
              h: el.pathData.height / 128, // 高度 number / string(百分比)
              zIndex: el.zIndex, // 层级
              rotate: el.styles.rotate,
              cover: el.imgUrl,
              // cover: 视频封面,base64格式字符串
              // extn:指定媒体文件的扩展名
              // link: 在线视频url链接
            });
          }

4.4 添加形状Shapes | PptxGenJS

支持形状的类型PptxGenJS/types/index.d.ts at master · gitbrent/PptxGenJS · GitHub

// 不带文本的形状
slide.addShape(pres.ShapeType.rect, { fill: { color: "FF0000" } }); // 矩形
slide.addShape(pres.ShapeType.ellipse, { // 椭圆
  fill: { type: "solid", color: "0088CC" },
});
slide.addShape(pres.ShapeType.line, { line: { color: "FF0000", width: 1 } });

// 带文本的形状
slide.addText("ShapeType.rect", {
  shape: pres.ShapeType.rect,
  fill: { color: "FF0000" },
});
slide.addText("ShapeType.ellipse", {
  shape: pres.ShapeType.ellipse,
  fill: { color: "FF0000" },
});
slide.addText("ShapeType.line", {
  shape: pres.ShapeType.line,
  line: { color: "FF0000", width: 1, dashType: "lgDash" },
});

示例(有误见谅)

 if (el.type === 'rect') { // 矩形
            pptxSlide.addShape(
              el.isUse.radius
                ? pres.shapes.ROUNDED_RECTANGLE
                : pres.ShapeType.rect,
              {
                x: el.pathData.left / 128, // x 轴 number / string(百分比)
                y: el.pathData.top / 128, // y 轴 number / string(百分比)
                w: el.pathData.width / 128, // 宽度 number / string(百分比)
                h: el.pathData.height / 128, // 高度 number / string(百分比)
                zIndex: el.zIndex, // 层级
                fill: {
                  color: rgbaToHex(el.styles.backgroundColor)
                    .color.slice(1)
                    .toUpperCase(),
                  transparency:
                    (1 - rgbaToHex(el.styles.backgroundColor).transparency) *
                    100, // 0-100
                },
                align: 'center',
                flipH: false, // boolean 水平翻转
                flipV: false, // boolean 垂直翻转
                // hyperlink: { url: "https://bz.zzzmh.cn/index" }, // 超链接,仅会使文字有下划线

                line: {
                  width: el.styles.border.width * 0.75, // 单位 磅 points
                  color: el.styles.border.color.slice(1).toUpperCase(),
                  dashType:
                    el.styles.border.style === 'solid'
                      ? 'solid'
                      : el.styles.border.style === 'dashed'
                      ? 'sysDot'
                      : 'sysDot', // dashType: dash 虚线, dashDot 虚线点, lgDash--长虚线, lgDashDot-长虚线点, lgDashDotDot--长虚线点点, solid, sysDash-系统虚线 or sysDot 系统点线
                  // beginArrowType: "oval", // 起始箭头,arrow 箭头, diamond 菱形, oval 椭圆, stealth 隐形箭头, triangle 三角 or none
                  // endArrowType: "diamond",// 结束箭头	arrow, diamond, oval, stealth, triangle or none
                }, // width: 1-256
                // shadow: {
                //   type: "outer", // outer 外阴影 or  inner 内阴影 or none
                //   blur: 100, // 模糊度 0-100 磅
                //   angle: 200, // 0-359 旋转度数
                //   offset: 100, // y 0-200 磅
                //   color: "000000",
                //   opacity: ".3", // 透明度
                //   rotateWithShape: true,
                // },

                rotate: el.styles.rotate, // -360 to 360
                rectRadius:
                  convertRangeTo100(
                    el.styles.radius,
                    el.pathData.height,
                    el.pathData.width
                  ) / 100,
              }
            );
          }
if (el.type === 'round') { // 圆
            pptxSlide.addShape(pres.ShapeType.ellipse, {
              x: el.pathData.left / 128, // x 轴 number / string(百分比)
              y: el.pathData.top / 128, // y 轴 number / string(百分比)
              w: el.pathData.width / 128, // 宽度 number / string(百分比)
              h: el.pathData.height / 128, // 高度 number / string(百分比)
              zIndex: el.zIndex, // 层级
              fill: {
                color: rgbaToHex(el.styles.backgroundColor)
                  .color.slice(1)
                  .toUpperCase(),
                transparency:
                  (1 - rgbaToHex(el.styles.backgroundColor).transparency) * 100, // 0-100
              },
              align: 'center',
              flipH: false, // boolean 水平翻转
              flipV: false, // boolean 垂直翻转
              // hyperlink: { url: "https://bz.zzzmh.cn/index" }, // 超链接,会使文字有下划线

              line: {
                width: el.styles.border.width * 0.75, // 单位 磅 points
                color: el.styles.border.color.slice(1).toUpperCase(),
                dashType:
                  el.styles.border.style === 'solid'
                    ? 'solid'
                    : el.styles.border.style === 'dashed'
                    ? 'sysDot'
                    : 'sysDot', // dashType: dash 虚线, dashDot 虚线点, lgDash--长虚线, lgDashDot-长虚线点, lgDashDotDot--长虚线点点, solid, sysDash-系统虚线 or sysDot 系统点线
                // beginArrowType: "oval", // 起始箭头,arrow 箭头, diamond 菱形, oval 椭圆, stealth 隐形箭头, triangle 三角 or none
                // endArrowType: "diamond",// 结束箭头	arrow, diamond, oval, stealth, triangle or none
              }, // width: 1-256
              // shadow: {
              //   type: "outer", // outer 外阴影 or  inner 内阴影 or none
              //   blur: 100, // 模糊度 0-100 磅
              //   angle: 200, // 0-359 旋转度数
              //   offset: 100, // y 0-200 磅
              //   color: "000000",
              //   opacity: ".3", // 透明度
              //   rotateWithShape: true,
              // },

              rotate: el.styles.rotate, // -360 to 360
              rectRadius:
                convertRangeTo100(
                  el.styles.radius,
                  el.pathData.height,
                  el.pathData.width
                ) / 100,
            });
          }
        });

4.5 图表与表格(我没写.详情参考文档)

图表地址:Charts | PptxGenJS

表格地址:Tables | PptxGenJS

4.5.1 图表

let pres = new pptxgen();
let dataChartAreaLine = [
  {
    name: "Actual Sales",
    labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
    values: [1500, 4600, 5156, 3167, 8510, 8009, 6006, 7855, 12102, 12789, 10123, 15121],
  },
  {
    name: "Projected Sales",
    labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
    values: [1000, 2600, 3456, 4567, 5010, 6009, 7006, 8855, 9102, 10789, 11123, 12121],
  },
];

slide.addChart(pres.ChartType.line, dataChartAreaLine, { x: 1, y: 1, w: 8, h: 4 });

4.5.2 表格

// TABLE 1: Single-row table
let rows = [["Cell 1", "Cell 2", "Cell 3"]];
slide.addTable(rows, { w: 9 });

// TABLE 2: Multi-row table
// - each row's array element is an array of cells
let rows = [["A1", "B1", "C1"]];
slide.addTable(rows, { align: "left", fontFace: "Arial" });

// TABLE 3: Formatting at a cell level
// - use this to selectively override the table's cell options
let rows = [
    [
        { text: "Top Lft", options: { align: "left", fontFace: "Arial" } },
        { text: "Top Ctr", options: { align: "center", fontFace: "Verdana" } },
        { text: "Top Rgt", options: { align: "right", fontFace: "Courier" } },
    ],
];
slide.addTable(rows, { w: 9, rowH: 1, align: "left", fontFace: "Arial" });

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/940649.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vulnhub靶场Nginx解析漏洞复现

一.nginx_parsing 原理:这个解析漏洞其实是PHP CGI的漏洞,在PHP的配置⽂件中有⼀个关键的选项cgi.fix_pathinfo默认是开启的,当URL中有不存在的⽂件,PHP就会向前递归解析。在⼀个⽂件/xx.jpg后⾯加上/.php会将 /xx.jpg/xx.php 解…

harbor离线安装 配置https 全程记录

1. 下载harbor最新版本 下载网址: 找最新的版本: https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz 这里我直接使用迅雷下载, 然后上传 1.1解压 sudo tar -xf harbor-offline-installer-v2.11.2.tgz -C /opt/ 2. 配置Harb…

Next.js v15 - 服务器操作以及调用原理

约定 服务器操作是在服务器上执行的异步函数。它们可以在服务器组件和客户端组件中调用,用于处理 Next.js 应用程序中的表单提交和数据修改。 服务器操作可以通过 React 的 “use server” 指令定义。你可以将该指令放在 async 函数的顶部以将该函数标记为服务器操…

编译原理复习---目标代码生成

适用于电子科技大学编译原理期末考试复习。 1. 目标代码 是目标机器的汇编代码或机器码,在本课程中指的是类似于汇编代码的一种形式,由一条条的指令构成目标代码。 抽象机指令格式:OP 目的操作数,源操作数。 我们要做的&…

JaxaFx学习(三)

目录: (1)JavaFx MVVM架构实现 (2)javaFX知识点 (3)JavaFx的MVC架构 (4)JavaFx事件处理机制 (5)多窗体编程 (6)数据…

Type-C 接口电热毯:开启温暖智能新时代

在当今科技迅猛发展的时代,智能家居产品如同璀璨繁星般点缀着我们的生活,从智能灯光的温馨到温控系统的精准,处处都彰显着科技赋予生活的便捷与舒适。而在这股追求高效与智能化的洪流之中,一款极具创新的电热毯——Type-C 接口电热…

解决vscode ssh远程连接服务器一直卡在下载 vscode server问题

目录 方法1:使用科学上网 方法2:手动下载 方法3 在使用vscode使用ssh远程连接服务器时,一直卡在下载"vscode 服务器"阶段,但MobaXterm可以正常连接服务器,大概率是网络问题,解决方法如下: 方…

WSL Ubuntu

文章目录 1. 概述1.1 什么是适用于 Linux 的 Windows 子系统1.2 什么是 WSL 21.3 WSL 2 中的新增功能1.4 比较 WSL 2 和 WSL 1 2. 参考资料3. 修改存储位置4. 网络访问 1. 概述 1.1 什么是适用于 Linux 的 Windows 子系统 适用于 Linux 的 Windows 子系统可让开发人员按原样运…

clickhouse-数据库引擎

1、数据库引擎和表引擎 数据库引擎默认是Ordinary,在这种数据库下面的表可以是任意类型引擎。 生产环境中常用的表引擎是MergeTree系列,也是官方主推的引擎。 MergeTree是基础引擎,有主键索引、数据分区、数据副本、数据采样、删除和修改等功…

如何使用Python进行音频片断合成

以下是几种使用 Python 进行音频合成的方法: 使用 synthesizer 库 通过 pip install synthesizer 安装后,利用其提供的合成器类,可自定义振荡器类型,如锯齿波、方波或正弦波,并调制振幅来创造不同音色,还…

【SH】在Ubuntu Server 24中基于Python Web应用的Flask Web开发(实现POST请求)学习笔记

文章目录 Flask开发环境搭建保持Flask运行Debug调试 路由和视图可变路由 请求和响应获取请求信息Request属性响应状态码常见状态码CookieSession 表单GET请求POST请求 Flask 在用户使用浏览器访问网页的过程中,浏览器首先会发送一个请求到服务器,服务器…

CLION中运行远程的GUI程序

在CLION中运行远程GUI程序,很有可能会遇到下面错误 Gtk-WARNING **: cannot open display: 这是因为远程的GUI程序不能再本地机器上显示。这个问题一般有两种解决方法 通过SSH的ForwardX11的方法,就是将远程的GUI程序显示到本地机器上,一般在…

Unity 圆形循环复用滚动列表

一.在上一篇垂直循环复用滚动列表的基础上,扩展延申了圆形循环复用滚动列表。实现此效果需要导入垂直循环复用滚动列表里面的类。 1.基础类 using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using …

中国人工智能学会技术白皮书

中国人工智能学会的技术白皮书具有多方面的重要作用,是极具权威性和价值的参考资料。 看看编委会和编写组的阵容,还是很让人觉得靠谱的 如何下载这份资料呢?下面跟着步骤来吧 步骤一:进入中国智能学会官网。百度搜索“中国智能学…

maui开发成生安卓apk,运行提示该应用与此设备的CPU不兼容

在生成.NET MAUI安卓应用时遇到“该应用与此设备的CPU不兼容”的问题,确保你的.NET MAUI应用支持的Android目标框架与设备CPU架构相匹配。例如,如果你的应用是为ARM64架构编译的,而你的设备是x86架构,就会出现不兼容的问题。 一、…

二叉树 -- 堆(详解)

目录 1、堆的概念及结构 2、堆的实现(附代码) 2.1、向下调整算法建堆 3、堆的应用(附代码) 3.1、堆排序 3.2、TOP-K问题 1、堆的概念及结构 如果有一个关键码的集合K { k0,k1 ,k2 ,…,k(n-1) },把它的所有元素…

windows环境下pytorch安装踩坑

目录 1 前言2 安装Anaconda3 安装CUDA4 创建Python3.9环境5 安装Pytorch环境5.1 conda方式5.2 pip方式 6 验证是否安装成功7 注意事项7.1 no module named torch问题7.12 torch.cuda.is_available()返回False问题 8 最佳实践9 总结 1 前言 这两天由于要使用Genesis,…

Linux系统命令基础

Linux命令⾏ [pypylinux ~]$ 普通⽤户py,登陆后 [rootpylinux ~]# 超级⽤户root,登录后root代表当前登录的⽤户 分隔符pylinux 主机名~ 当前的登录的位置,此时是家⽬录# 超级⽤户身份提示符 $ 普通⽤户身份提示符操作系统⽬录分隔符 Linux目录…

PHP木马编写

一、最简单的一句话木马 <?php eval($_REQUEST[cmd]); ?> 1. <?php 和 ?> <?php 和 ?> 是 PHP 代码的开始和结束标记&#xff0c;表示 PHP 代码块的范围。 2. eval() eval() 是 PHP 中的一个内建函数&#xff0c;用来执行字符串类型的 PHP 代码。…

[Unity]【图形渲染】【游戏开发】Shader数学基础4-更多矢量运算

在计算机图形学和着色器编程中,矢量运算是核心的数学工具之一。矢量用于描述空间中的位置、方向、速度等各种物理量,并在图形变换、光照计算、纹理映射等方面起着至关重要的作用。本篇文章将详细讲解矢量和标量之间的乘法与除法、矢量的加法与减法、矢量的模与单位矢量、点积…