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

石家庄市新华区建设局网站沅江网站设计

石家庄市新华区建设局网站,沅江网站设计,企业建站用什么好,舆情分析网站刚刚实现而已:第一次明白,双击或file:///打开html文件,居然和从localhost:3000打开同一个html文件有本质的区别。 字体居然还能以Base64代码嵌入到网页,只是太大太笨。 需要安装node.js,npm安装更多依赖:…

刚刚实现而已:第一次明白,双击或file:///打开html文件,居然和从localhost:3000打开同一个html文件有本质的区别。

字体居然还能以Base64代码嵌入到网页,只是太大太笨。

需要安装node.jsnpm安装更多依赖:
npm init -y
npm install express puppeteer uuid cors

在这里插入图片描述在这里插入图片描述需要管理员在命令行:
npm start
node server.js (后台、后端,也涉及很多繁琐的设置)
如果不是有大语言模型手把手交,效率会低不少。

反复测试,仍不完美。但server.js应该是可以固定下来了:

const express = require('express');
const puppeteer = require('puppeteer');
const path = require('path');
const fs = require('fs').promises;
const { v4: uuidv4 } = require('uuid');
const cors = require('cors');const app = express();
app.use(express.static('public'));
const port = 3000;// 配置 CORS
app.use(cors({origin: 'http://localhost:3000', // 明确允许客户端来源methods: ['GET', 'POST'],allowedHeaders: ['Content-Type']
}));app.use(express.json({ limit: '10mb' }));
app.use(express.static(path.join(__dirname, 'public')));app.get('/', (req, res) => {res.send('服务器运行正常!请访问 /index.html 或点击“打印到 PDF”按钮生成 PDF。');
});app.post('/generatepdf', async (req, res) => {console.log('Received request to generate PDF');const { html } = req.body;if (!html) {console.error('Missing HTML content in request body');return res.status(400).send('Missing HTML content');}try {console.log('Launching Puppeteer...');const browser = await puppeteer.launch({headless: true,args: ['--no-sandbox', '--disable-setuid-sandbox']});console.log('Puppeteer launched successfully');const page = await browser.newPage();console.log('Setting page content...');await page.setContent(html, { waitUntil: 'networkidle0' });console.log('Page content set');console.log('Generating PDF...');const pdfBuffer = await page.pdf({format: 'A4',printBackground: true,preferCSSPageSize: true});console.log('PDF buffer size:', pdfBuffer.length);await browser.close();console.log('PDF generated successfully');// 保存 PDF 文件用于调试const filename = `jingyesi-output-${uuidv4()}.pdf`;await fs.writeFile(path.join(__dirname, filename), pdfBuffer);console.log(`PDF saved to ${filename} for debugging`);// 设置响应头并发送 PDF(使用二进制发送)res.set({'Content-Type': 'application/pdf','Content-Length': pdfBuffer.length,'Content-Disposition': 'attachment; filename="jingyesi.pdf"'});res.end(pdfBuffer, 'binary'); // 使用 res.end 确保二进制数据发送} catch (error) {console.error('Failed to generate PDF:', error);res.status(500).send('Failed to generate PDF: ' + error.message);}
});app.listen(port, () => {console.log(`服务器运行在 http://localhost:${port}`);
});

要保持 localhost:3000 后台服务器一直开启状态。访问本地其它资源的虚拟网页仍然要http-server --c-1 -cors 另外开或者修改地址之后也从同一个服务器指向的文件夹实现

不完美的地方主要是,Puppeteer 对嵌入字体的支持比较弱,Base64代码把整个字体文件打包进去之外太笨拙,引用网络字体似乎效果不理想。

http://www.dtcms.com/wzjs/832277.html

相关文章:

  • 衡水做网站网上购物系统
  • 定制网站和模板网站的区别怎么制作网站域名
  • 网站建设培训哪家好自助建网站软件平台
  • 南昌高端网站开发费用表网站加速
  • 怎么查网站接入商企业电商网站优化
  • 响应试企业网站淘宝客网站怎么做的人少了
  • 郑州网站搜索排名专做排名的网站
  • 站长之家网址查询做国外进口衣服的网站好
  • 纯英文网站建设指数是指什么
  • 北京网站主题制作网站建设服务费属于什么科目
  • 工会门户网站建设需求ui培训设计哪里好
  • 学习做网站什么是广告艺术设计
  • 广州建设工程交易中心网站徐州网站设计制作建设
  • 南京市建设中心网站wordpress占用带宽
  • 免费网站开发模板网站提高内容的丰富度创意
  • 动漫设计与制作图建站到网站收录到优化
  • 企业网站的必要性哈尔滨网站开发渠道
  • 大学生创业服务网站建设方案项目书南通建设工程造价信息网站
  • 英语做美食网站如何查看一个网站是不是用h5做的
  • 网站正在建设中 文案网络规划设计师自学能通过么
  • 做PPT不错的网站有哪些做网站需要多少钱平邑
  • 怎么随便搞个网站电子商务可以从事的职业
  • 网站建设需要钱吗网站建设最重要的环节
  • 简单建设企业办公网站成都网站制作工具
  • 肇庆网站制作案例上海市网站建
  • 中国建设银行公积金网缴网站最打动人心的广告语
  • 哪家网站优化公司好个人网站源代码
  • 嘉兴地区有人做网站吗网络公司起名大全免费
  • 哪些网上可以赚钱的网站wordpress 目录别名
  • 网站首页快照做网站要多钱