当前位置: 首页 > news >正文

前端关于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/3if (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 rightvalign:el.styles.alignItems === 'start'? 'top': el.styles.alignItems === 'center'? 'middle': 'bottom', // 垂直位置, top middle bottomfontFace: el.styles.fontFamily, // 字体fontSize: el.styles.fontSize * 0.75, // 字号 // TODO  需px转字号charSpacing: el.styles.letterSpacing * 0.75, // 字符间距 number 1-256bold: 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的paddinglineSpacingMultiple: 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, // 单位 磅 pointscolor: 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 360rectRadius: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, // 单位 磅 pointscolor: 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 360rectRadius: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" });

相关文章:

前端关于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 Presenta…...

Webrtc音频模块(四) 音频采集

音频的采集还是封装在AudioDeviceWindowsCore中&#xff0c;相关的Core Audio API接口是下面几个&#xff1a; IAudioClient* _ptrClientIn IAudioCaptureClient* _ptrCaptureClient rtc::scoped_refptr<IMediaObject> _dmo rtc::scoped_refptr<IMediaBuffer> _me…...

乘积小于K的子数组

要解决“乘积小于 k 的子数组”问题&#xff0c;可以使用滑动窗口技术。下面是详细的步骤和思路&#xff1a; 初始化变量&#xff1a; 定义两个指针 left 和 right&#xff0c;都初始化为 0&#xff0c;用于表示窗口的左右边界。一个 product 变量初始化为 1&#xff0c;用于存…...

vue的ElMessage的css样式不生效

我使用elementplus&#xff0c;是使用的用哪个单独引入的&#xff0c;然后表单校验时候警告的css不生效&#xff0c;就是这个效果 反复看视频的引入也没发现问题&#xff0c;后来才知道需要这个引入 import { ElMessage } from "element-plus"; import element-pl…...

视频会议系统如何对接电话会议系统?

视频会议系统如何对接电话会议系统&#xff1f; 作者&#xff1a;开源视频会议系统BigBlueButton&BBBEasy中国区团队&#xff0c;Github地址&#xff1a;https://github.com/lihaiya/bigbluebutton 视频会议系统与电话会议系统的对接&#xff0c;是现代企业通信整合的重要…...

亚马逊API接口深度解析:如何高效获取商品详情与评论数据

在当今数字化时代&#xff0c;电商平台的数据对于商家和开发者来说至关重要。亚马逊作为全球领先的电商平台&#xff0c;其API接口为开发者提供了丰富的商品信息和评论数据。本文将深入探讨如何使用亚马逊API接口获取商品详情和商品评论&#xff0c;同时提供简洁明了的使用方法…...

1222面经

1&#xff0c;Kafka 如何保障顺序消费? Kafka 保障顺序消费主要通过以下几个关键机制和配置来实现&#xff1a; 分区策略 Kafka 将主题划分为多个分区&#xff0c;每个分区内的消息是天然有序的&#xff0c;其按照消息发送到分区的先后顺序进行存储和追加。生产者在发送消息…...

271-基于XC7V690T的12路光纤PCIe接口卡

一、板卡概述 基于XC7V690T的12路光纤PCI-E接口卡&#xff0c;用于实现多通道高速光纤数据接收和发送&#xff0c;板卡兼容PCIe 2.0和PCIe 3.0规范&#xff0c;利用PCI-E Switch PEX 8748实现FPGA芯片与计算机的通信&#xff0c;计算机与板卡接口处提供PCI-e 16速接口&#xff…...

完成第一个 Vue3.2 项目后,这是我的技术总结

第一次Composition API 在vue3.2中&#xff0c;正式支持了script setup的写法,这样可以大大简化组件的代码量&#xff0c;减少一些重复操作&#xff0c;我认为当你写vue3时&#xff0c;应该把这当作默认写法。在vue3.2之前&#xff0c;一般会这样写。 <script>export de…...

类的动态演绎:程序运行中的生命绽放

任务1.按照要求设计类(根据输出设计类) 设计类就是根据数据封装的要求&#xff0c;抽象出适合的类。 有如下情况的测试程序和测试程序的输出结果&#xff0c;要求设计类Smile。 &#xff08;一&#xff09;第1种情况&#xff1a; &#xff08;1&#xff09;测试程序如下&#x…...

从代币角度介绍solana账户体系

1、solana 的账户概念介绍 Solana的账户体系是其区块链的核心组成部分&#xff0c;它允许数据和价值在链上存储和转移。以下是Solana账户体系的一些关键特点&#xff1a; • 账户模型&#xff1a; • 在Solana上&#xff0c;所有数据都存储在所谓的“账户”中&#xff0c;类似…...

Python pygame 主副屏编程时 在副屏上全屏窗口的方法

Python在windows环境中编程时&#xff0c;用pygame工具包能够很轻易的完成2D游戏的简单设计&#xff0c;非常好用&#xff0c;相关帖子很多。 而当电脑连接了多块显示器时&#xff08;注意不是windows的多桌面&#xff09;&#xff0c;系统选择扩展这些显示器后&#xff0c;可…...

服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台V7000存储上共12块SAS机械硬盘&#xff08;其中1块是热备盘&#xff09;&#xff0c;组建了2组Mdisk&#xff0c;创建了一个pool。挂载在小型机上作为逻辑盘使用&#xff0c;小型机上安装的AIXSybase。 服务器存储故障&#xff1a; V7…...

Qt开发经验 --- 避坑指南(2)

文章目录 1、 Heob窗口变得非常长&#xff0c;配置名称是一长串乱码2、 Qt安装报错 From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.3、Cmake编译错误找不到libwinpthread-1.dll4、CMake编译找不到mingw5、linux下qtcreator启动报错…...

2.4 网络概念(分层、TCP)

网络层与传输层概述 网络层&#xff1a; 抽象概念&#xff1a;网络层是基于 IP 的抽象概念&#xff0c;与数据链路层用 MAC 地址标记设备不同。MAC 地址是一种具体化的概念&#xff0c;绑定于所在的物理网络&#xff0c;而 IP 地址可以是固定的&#xff0c;也可以通过路由动态…...

Elasticsearch问题总结

Fielddata access on the_id field is disallowed, you can re-enable it by updating the dynamic cluster setting: indices.id_field_data.enabledElasticsearch默认禁用_id字段进行排序&#xff0c;这是因为_id字段通常不需要进行聚合或排序操作&#xff0c;启用字段数据可…...

C++点云大文件读取

C点云大文件读取 1. 常规读取1.1 逐行读取1.2 逐字节读取 2. 并行读取 (Multithreading)3. 使用缓冲读取 (Buffered I/O)4. 内存映射文件 (Memory Mapping) 在C中读取大文件时&#xff0c;如果需要提高读取速度&#xff0c;可以考虑以下几种方法&#xff1a; 1. 常规读取 常规…...

Hololens 2 Unity VS2019编译报错解决方案

报错问题描述不够详细&#xff0c;但是针对Hololens 2和Unity开发环境中的VS2019编译错误&#xff0c;以下 是一些常见的问题及其解决方案: 1.缺少或错误的Unity版本 确保安装了支持Hololens 2的Unity版本(例如2019.3或更高)。 2.缺少C工作负载 打开Visual Studio Installe…...

【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成无源器件及与cadence的交互)

一、理论讲解 1. 电感设计的两个角度 电感的设计可以从两个角度考虑&#xff0c;一个是外部特性&#xff0c;一个是内部特性。外部特性就是把电感视为一个黑盒子&#xff0c;带有两个端子&#xff0c;如果带有抽头的电感就有三个端子&#xff0c;需要去考虑其电感值、Q值和自…...

记录:virt-manager配置Ubuntu arm虚拟机

virt-manager&#xff08;Virtual Machine Manager&#xff09;是一个图形用户界面应用程序&#xff0c;通过libvirt管理虚拟机&#xff08;即作为libvirt的图形前端&#xff09; 因为要在Linux arm环境做测试&#xff0c;记录下virt-manager配置arm虚拟机的过程 先在VMWare中…...

Qt Quick:CheckBox 复选框

复选框不止选中和未选中2种状态哦&#xff0c;它还有1种部分选中的状态。这3种状态都是Qt自带的&#xff0c;如果想让复选框有部分选中这个状态&#xff0c;需要将三态属性&#xff08;tristate&#xff09;设为true。 未选中的状态值为0&#xff0c;部分选中是1&#xff0c;选…...

腾讯云云开发 Copilot 深度探索与实战分享

个人主页&#xff1a;♡喜欢做梦 欢迎 &#x1f44d;点赞 ➕关注 ❤️收藏 &#x1f4ac;评论 目录 一、引言 二、产品介绍 三、产品体验过程 四、整体总结 五、给开发者的复用建议 六、对 AI 辅助开发的前景展望 一、引言 在当今数字化转型加速的时代&#xff0c;…...

Linux应用开发————mysql数据库表

mysql数据库表操作 查看表的结构 mysql> desc / describe 表名; 或者&#xff1a; mysql> show create table 表名; 常见数据库引擎&#xff1a; innodb, myISAM... 删除表 mysql> drop tabl…...

《军工记忆》第二季播出,科技创新铸国之重器

2019年8月1日晚20点&#xff0c;《军工记忆》第二季在央视纪录频道&#xff08;CCTV-9&#xff09;播出&#xff0c;第一集《第一颗氢弹》首当其冲&#xff0c;为我们生动描绘了氢弹研制过程的艰难岁月&#xff0c;重现中国军工事业的漫漫长路&#xff0c;科技创新铸国之重器。…...

linux 无网络安装mysql

下载地址 通过网盘分享的文件&#xff1a;mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz 链接: https://pan.baidu.com/s/1qm48pNfGYMqBGfoqT3hxPw?pwd0012 提取码: 0012 安装 解压 tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz mv /usr/mysql-5.7.33-linux-glibc2.1…...

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

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

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

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

方正畅享全媒体采编系统reportCenter.do接口SQL注入漏洞复现 [附POC]

文章目录 方正畅享全媒体采编系统reportCenter.do接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现方正畅享全媒体采编系统reportCenter.do接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利…...

SpringBoot Redis 消息队列

文章目录 参考消息队列list源码 pub/sub源码 参考 https://www.cnblogs.com/uniqueDong/p/15904837.html https://www.cnblogs.com/wzh2010/p/17205390.html https://blog.csdn.net/qq_16557637/article/details/121015736 https://developer.aliyun.com/article/1095035 http…...

Oracle 中间件 Webcenter Portal服务器环境搭建

环境信息 服务器基本信息 如下表&#xff0c;本次安装总共使用2台服务器&#xff0c;具体信息如下&#xff1a; Webcenter1服务器 归类 SOA服务器 Ip Address 172.xx.xx.xx.xx HostName wcc01.xxxxxx.com Alias wccprd01 Webcenter2服务器 归类 OSB服务器 Ip Addr…...

域名和服务器是什么?域名和服务器是什么关系?

在互联网的生态系统中&#xff0c;域名和服务器是两个至关重要的组成部分。它们共同构成了我们访问网站和使用在线服务的基础。那么域名和服务器是什么?域名和服务器是什么关系? 1、域名的概念 域名是互联网中用于标识特定地址的一种文字形式。它是用户访问网站时输入的易记…...

设计模式-观察者模式

背景 气象站需要将每天测量到的温度、湿度、气压等数据公布出去&#xff0c; 需要设计开放的API&#xff0c;以便第三方获取气象站的数据&#xff0c; 如果数据有更新&#xff0c;能及时地通知第三方 传统思路&#xff1a; 创建WeatherData类&#xff0c;有温度、湿度、气…...

获取显示器(主/副屏)友好名称(FriendlyName)

在开发涉及多显示器的应用程序时&#xff0c;获取显示器的友好名称&#xff08;Friendly Name&#xff09;是一个常见需求。本文将深入探讨GetMonitorFriendlyName 方法&#xff0c;了解其实现细节和工作原理。 方法签名 public static string GetMonitorFriendlyName(bool i…...

打造智慧医院挂号枢纽:SSM 与 Vue 融合的系统设计与实施

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

图漾相机-ROS1_SDK_ubuntu版本编译(新版本)

文章目录 官网编译文档链接官网SDK下载链接1、下载 Camport ROS1 SDK1.下载git2、下载链接 2、准备编译工作1、安装 catkin2、配置环境变量3. 将Camport3中的linux库文件拷贝到 user/lib目录下4、修改lunch文件制定相机&#xff08;可以放在最后可以参考在线文档&#xff09;**…...

ENSP实验

一.实验拓扑 二.实验需求 1.学校内部的HTTP客户端可以正常通过域名www.baidu.com访问到百度网络中的HTTP服务器 2.学校网络内部网段基于192.168.1.0/24划分&#xff0c;PC1可以正常访问3.3.3.0/24网段&#xff0c;但是PC2不允许 3.学校内部路由使用静态路由&#xff0c;R1和…...

10. 虚拟机VMware Workstation Pro下共享Ubuntu和Win11文件夹

本文记录当前最新版虚拟机VMware Workstation Pro&#xff08;2024.12&#xff09;如何在win11下共享文件&#xff0c;以实现Windows与Ubuntu互传文件的目的。 1. 创建共享文件夹 1.1 先关闭虚拟机的客户机&#xff0c;打开虚拟机设置 1.2 在虚拟机设置界面找到“选项”->“…...

Qwen文章阅读笔记

一、引言 大型语言模型&#xff08;LLMs&#xff09;的影响&#xff1a; LLMs通过将大量知识压缩进神经网络&#xff0c;使得它们在复杂推理和问题解决任务上展现出了惊人的能力。这些模型能够执行之前被认为只有人类才能完成的任务&#xff0c;尤其是在涉及创造力和专业知识…...

Docker容器命令

docker 命令说明docker pull拉取镜像docker push推送镜像到DockerRegistrydocker images查看本地镜像docker rmi删除本地镜像docker run创建并运行容器&#xff08;不能重复创建&#xff09;docker stop停止指定容器docker start启动指定容器docker restart重新启动容器docker…...

算法 计算大的长方形容器中,存放一排小长形容器,计算出小长形容器中最后一个元素的x坐标的位置的实现方法

1、先上个图&#xff1a; 2、说明 1&#xff09;中间的蓝色长方形是里面的橙色长方形的容器&#xff0c;比如第一个图中width2width3&#xff0c;因为只有一个&#xff0c;第二个图中有二个小的长方形&#xff0c;也就是说width22width3&#xff0c;第三个图中有3个小长方形&a…...

【libuv】Fargo信令1:client发connect消息给到server

tcp 单机测试,进行模拟 (借助copilot实现) 【Fargo】28:字节序列client发connect消息给到serverserver 收到后回复ack给到客户端程序借助copilot实现。项目构建 Console依赖于Halo.dll提供的api,Halo 依赖于 Immanuel, 运行效果 遗留问题 客户端似乎么有逻辑收到ack做处理各…...

MyBatis主键自增回填功能源码分析

文章目录 难点分析KeyGenerator接口概述SelectKeyGenerator分析 解析selectKey标签执行插入后执行获取主键查询 难点分析 【1】 事务的一致性。 在插入数据并获取自增主键时&#xff0c;可能会涉及事务的一致性问题&#xff0c;尤其是在并发插入的情况下。MyBatis需要确保即使…...

Git使用教程-分支使用/合并分支提交

Git使用教程-分支使用 文章目录 Git使用教程-分支使用一、分支&#xff08;branch&#xff09;的基本操作&#xff1a;二、查看分支&#xff1a;参考 一、分支&#xff08;branch&#xff09;的基本操作&#xff1a; git clone https://.git git status …...

TypeScript概述与安装指南

TypeScript概述与安装指南 HarmonyOS Next主要开发语言是ArkTS&#xff0c;ArkTS又是TS的超集&#xff0c;为了更好的学习HarmonyOS 和 ArkTS&#xff0c;从基础的TS入口介绍TS语法。 第一章&#xff1a;TypeScript概述与安装指南 1.1 什么是TypeScript&#xff1f; TypeSc…...

学技术学英文:代码中的锁:悲观锁和乐观锁

本文导读&#xff1a; 1. 举例说明加锁的场景&#xff1a; 多线程并发情况下有资源竞争的时候&#xff0c;如果不加锁&#xff0c;会出现数据错误&#xff0c;举例说明&#xff1a; 业务需求&#xff1a;账户余额>取款金额&#xff0c;才能取钱。 时间线 两人共有账户 …...

Git配置公钥步骤

GIt公钥的配置去除了git push输入账号密码的过程&#xff0c;简化了push流程。 1.生成SSH公钥和私钥 ssh-keygen -t rsa -b 4096 -C “your_emailexample.com” 遇到的所有选项都按回车按默认处理。获得的公钥私钥路径如下&#xff1a; 公钥路径 : ~/.ssh/id_rsa.pub 私钥路径…...

NSDT 3DConvert:高效实现大模型文件在线预览与转换

NSDT 3DConvert 作为一个 WebGL 展示平台&#xff0c;能够实现多种模型格式免费在线预览&#xff0c;并支持大于1GB的OBJ、STL、GLTF、点云等模型进行在线查看与交互&#xff0c;这在3D模型展示领域是一个相当强大的功能。 平台特点 多格式支持 NSDT 3DConvert兼容多种3D模型…...

优先队列【东北大学oj数据结构9-3】C++

优先队列 优先级队列是一种数据结构&#xff0c;其中保存了一组数据 S&#xff0c;其中每个元素都有一个键&#xff0c;并执行以下操作&#xff1a; insert(S, k)&#xff1a;将元素k插入集合S extractMax(S)&#xff1a;从S中取出S中key最大的元素并返回其值 创建一个程序&am…...

全志H618 Android12修改doucmentsui功能菜单项

背景: 由于当前的文件管理器在我们的产品定义当中,某些界面有改动的需求,所以需要在Android12 rom中进行定制以符合当前产品定义。 需求: 在进入File文件管理器后,查看...功能菜单时,有不需要的功能菜单,需要隐藏,如:新建窗口、不显示的文件夹、故代码分析以及客制…...

SAP PP ECN CSAP_MAT_BOM_MAINTAIN

刚开始的时候ECN总是加不上&#xff0c; 参考kimi给出的案例 点击链接查看和 Kimi 智能助手的对话 https://kimi.moonshot.cn/share/cth1ipmqvl7f04qkggdg 效果 加上了 FUNCTION ZPBOM_PLM2SAP. *"------------------------------------------------------------------…...