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

wkhtmltopdf踩坑记录

1. 不支持writing-mode。

需求是文字纵向排列,内容从左到右,本来用的是writing-mode: tb-rl;,插件转pdf后发现失效。
解决方法:
让每一列文字单独用一个div容器包裹,对它的宽度进行限制,控制每一行只能出现一个文字,然后用定位布局【因为wkhtmltopdf不支持flex布局】。
对于特殊字符,例如: 、 。等标点符号,需要在其前或后加上br标签控制换行,否则会出现每行有一个字但是后面会跟着特殊符号的情况。
而且对于像括号、书名号这些符号,由于我们只是用了点技巧迫使它纵向排列,而不是书写顺序真的是从上到下,因此这些符号还是会横向显示。效果如下图:
在这里插入图片描述
而我们希望这些特殊符号也是遵循纵向的书写顺序的,因此我们需要用到transform属性的rotate来做一些2d的角度旋转效果

/*都要写,注意兼容性,只写transform不会生效*/-webkit-transform: rotate(90deg);-moz-transform: rotate(90deg);-ms-transform: rotate(90deg);-o-transform: rotate(90deg);transform: rotate(90deg);

2.转成pdf时打印结果没有图片(访问不到html中引入的图片)

场景描述:我一开始用的命令行是直接将本地的html转pdf,然后就报了访问不到的错误,转出的pdf是没有本地html引入的图片的

报错:Warning: Blocked access to file
这是由 0.12.6 版本中默认行为的更改引起的。wkhtmltopdf现在默认禁用本地文件访问。可以通过添加命令行参数来解决

解决方法1: 加上配置参数,允许本地文件加载其他的本地文件

wkhtmltopdf --enable-local-file-access  a.html b.pdf

解决方法2:在本地运行一下文件,然后用url的方式去转pdf
在vscode上打开要转pdf的html,然后右键选择open with live server。然后再输入指定的url。这种方式就可以,我也不知道为什么。

wkhtmltopdf  http://127.0.0.1:5501/a.html ccc1.pdf

3.转化的pdf大小与html尺寸不吻合

看了配置参数可以设置page-zise或者page-width/page-height,我没有尝试,只是把整个container的大小设置成A4大小,a4转成px是794px*1123px,因此要设置成对应的大小。然后设计图的尺寸也要修改成对应的固定宽度794px,因为设计图上的所有元素的属性都会随尺寸变化而变化【px是像素大小,是相对长度单位,具体要看分辨率】

4.文字字体样式不生效

要引入字体文件。@font-face指定字体规则和它的url。

@font-face {font-family: "Kaiti";/* 重命名字体名 */src: url("../font/Kaiti.ttf") format("opentype");font-weight: normal;font-style: normal;
}

小结

第一次使用wkhtmltopdf踩了很多坑,它不支持很多css属性,然后对Html的书写规则也要求严格。如果有读者知道更好的开源html转pdf的插件,请麻烦告诉我。

相关文章:

wkhtmltopdf踩坑记录

1. 不支持writing-mode。 需求是文字纵向排列,内容从左到右,本来用的是writing-mode: tb-rl;,插件转pdf后发现失效。 解决方法: 让每一列文字单独用一个div容器包裹,对它的宽度进行限制,控制每一行只能出现…...

贪心算法part2 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

文章目录 122.买卖股票的最佳时机II思路思路代码官方题解困难 55. 跳跃游戏思路思路代码官方题解代码困难 45.跳跃游戏II思路思路代码困难 今日收获 122.买卖股票的最佳时机II 122.买卖股票的最佳时机II 思路 局部最优:将当天价格和前一天比较,价格涨…...

[C++]异常笔记

我不怕练过一万种腿法的对手,就怕将一种腿法 练一万次的对手。 什么是C的异常 在C中,异常处理通常使用try-catch块来实现。try块用于包含可能会抛出异常的代码,而catch块用于捕获并处理异常。当异常被抛出时,程序会跳过try块中未执行…...

浅谈一级机电管道设计中的压力与介质温度

管道设计是工程设计中的一个非常重要的部分,管道的设计需要考虑到许多因素,其中就包括管道设计压力分类和介质温度分类。这两个因素是在设计管道时必须非常严格考虑的, 首先是管道设计压力分类。在管道设计中,根据工作要求和要传输…...

Docker网络模型(八)使用 macvlan 网络

使用 macvlan 网络 一些应用程序,特别是传统的应用程序或监控网络流量的应用程序,期望直接连接到物理网络。在这种情况下,你可以使用 macvlan 网络驱动为每个容器的虚拟网络接口分配一个MAC地址,使其看起来像一个直接连接到物理网…...

控制视图内容的位置

文本域中的提示内容在默认情况下是垂直居中的,要改变文本在文本域中的位置,可以使用android:gravity来实现。 利用android:gravity可以指定如何在视图中放置视图内容,例如,如何在文本域中放置文本。 如果希望视图文本显示在上方&a…...

【分布式系统与一致性协议】

分布式系统与一致性协议 CAP原理APCPCA总结BASE理论 一致性拜占庭将军问题 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的设计目标一般包含如下: 可用性:可用性是分…...

音视频领域的未来发展方向展望

文章目录 音视频领域的未来发展方向全景音视频技术虚拟现实和增强现实的区别 人工智能技术可视化智能分析智能语音交互图像识别和视频分析技术 语音处理智能推荐技术远程实时通信 流媒体技术未来方向 音视频领域的未来发展方向 全景音视频技术:全景音视频技术是近年…...

时间同步/集群时间同步/在线/离线

目录 一、能够连接外网 二、集群不能连接外网--同步其它服务器时间 一、能够连接外网 1.介绍ntp时间协议 NTP(Network Time Protocol)网络时间协议,是用来使计算机时间同步的一种协议,它可以使计算机对其服务器或时钟源做同步…...

基于BP神经网络对MNIST数据集检测识别(numpy版本)

基于BP神经网络对MNIST数据集检测识别 1.作者介绍2.BP神经网络介绍2.1 BP神经网络 3.BP神经网络对MNIST数据集检测实验3.1 读取数据集3.2 前向传播3.3 损失函数3.4 构建神经网络3.5 训练3.6 模型推理 4.完整代码 1.作者…...

HTML5-创建HTML文档

HTML5中的一个主要变化是:将元素的语义与元素对其内容呈现结果的影响分开。从原理上讲这合乎情理。HTML元素负责文档内容的结构和含义,内容的呈现则由应用于元素上的CSS样式控制。下面介绍最基础的HTML元素:文档元素和元数据元素。 一、构建…...

Vue中Axios的封装和API接口的管理

一、axios的封装 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSR…...

MLIR面试题

1、请简要解释MLIR的概念和用途,并说明MLIR在编译器领域中的重要性。 MLIR(Multi-Level Intermediate Representation)是一种多级中间表示语言,提供灵活、可扩展和可优化的编译器基础设施。MLIR的主要目标是为不同的编程语言、领域专用语言(DSL)和编译器…...

***杨辉三角_yyds_LeetCode_python***

1.题目描述: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows …...

Mac使用DBeaver连接达梦数据库

Mac使用DBeaver连接达梦数据库 下载达梦驱动包 达梦数据库 在下载页面随便选择一个系统并下载下来。 下载下来的是zip的压缩包解压出来就是一个ISO文件,然后我们打开ISO文件进入目录:/dameng/source/drivers/jdbc 进入目录后找到这几个驱动包&#x…...

spring.expression 随笔0 概述

0. 我只是个普通码农,不值得挽留 Spring SpEL表达式的使用 常见的应用场景:分布式锁的切面借助SpEL来构建key 比较另类的的应用场景:动态校验 个人感觉可以用作控制程序的走向,除此之外,spring的一些模块的自动配置类,也会在Cond…...

从Cookie到Session: Servlet API中的会话管理详解

文章目录 一. Cookie与Session1. Cookie与Session2. Servlet会话管理操作 二. 登录逻辑的实现 一. Cookie与Session 1. Cookie与Session 首先, 在学习过 HTTP 协议的基础上, 我们需要知道 Cookie 是 HTTP 请求报头中的一个关键字段, 本质上是浏览器在本地存储数据的一种机制,…...

docker数据管理与网络通信

一、管理docker容器中数据 管理Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器( DataVolumes Containers) 。 1、 数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻…...

怎么查询电脑的登录记录及密码更改情况?

源头是办公室公用的电脑莫名其妙打不开了,问别人也都不知道密码是多少 因为本来就没设密码啊!(躺倒) 甚至已经想好了如果是50万想攻破电脑,被po抓住要怎么花这笔钱了 是我想太多 当然最后也没解决,莫名…...

《三》TypeScript 中函数的类型

TypeScript 允许指定函数的参数和返回值的类型。 函数声明的类型定义:function 函数名(形参: 形参类型, 形参: 形参类型, ...): 返回值类型 {} function sum(x: number, y: number): number {return x y } sum(1, 2) // 正确 sum(1, 2, 3) // 错误。输入多余的或者…...

【Sora 2 × Gaussian Splatting融合实战指南】:20年CV专家亲授3大跨模态生成瓶颈突破法

更多请点击: https://intelliparadigm.com 第一章:Sora 2 Gaussian Splatting融合的技术演进与范式跃迁 Sora 2 与 Gaussian Splatting 的深度耦合,标志着生成式视频建模从隐式神经表征迈向显式可微几何渲染的关键转折。二者并非简单串联&a…...

逆向工程师的视角:如何用Windbg双机调试分析一个未知Windows驱动(实战案例解析)

逆向工程师的视角:如何用Windbg双机调试分析未知Windows驱动 在安全研究和恶意代码分析领域,逆向工程师常常需要面对未知的Windows驱动程序。这些驱动可能是第三方闭源组件,也可能是潜在的恶意软件载体。与传统的驱动开发调试不同&#xff0c…...

大模型长文档理解新拐点已至(2026年Claude专项能力解密):支持128K上下文+动态摘要锚点+引用溯源追踪

更多请点击: https://intelliparadigm.com 第一章:大模型长文档理解新拐点已至:Claude 2026能力演进全景图 随着长上下文窗口突破200万token、原生支持跨页语义锚定与结构化元数据感知,Claude 2026标志着大模型对长文档的理解正式…...

Wat完整使用教程:从基础语法到高级修饰符

Wat完整使用教程:从基础语法到高级修饰符 【免费下载链接】wat Deep inspection of Python objects 项目地址: https://gitcode.com/gh_mirrors/wat2/wat Wat是一款强大的Python对象深度检查工具,能帮助开发者快速获取任何Python对象的详细信息&a…...

008、RISC-V在TinyML中的崛起与优势

008、RISC-V在TinyML中的崛起与优势 从一块“变砖”的开发板说起 去年冬天,我在调试一个基于Cortex-M4的智能传感器节点。项目要求将唤醒词检测模型塞进32KB的SRAM里,功耗要控制在50μA以下。折腾了两周,模型量化、算子裁剪、甚至手写汇编优化了部分矩阵运算——终于跑通了…...

激活沉睡用户:WPF应用的唤醒策略

在现代软件开发中,如何有效地激活沉睡用户是每个应用开发者都需要面对的问题。特别是对于WPF(Windows Presentation Foundation)应用来说,如何在用户不活跃一段时间后,重新唤醒他们的兴趣并引导他们回到应用中使用,是一个既有挑战又有策略性的任务。本文将介绍如何通过邮…...

Photoshop无法识别Midjourney v6生成的.exr/.hdr文件?独家逆向工程解析其自定义EXIF标签结构,并提供开源Python元数据修复工具包(GitHub Star超2.1k)

更多请点击: https://intelliparadigm.com 第一章:Photoshop无法识别Midjourney v6生成的.exr/.hdr文件?独家逆向工程解析其自定义EXIF标签结构,并提供开源Python元数据修复工具包(GitHub Star超2.1k) Mid…...

性价比好的深圳除甲醛公司

深圳作为高密度开发城市,常年保持稳定的新房交付、写字楼翻新与商铺装修需求,装修带来的甲醛残留问题,始终是业主和企业管理者关注的室内安全重点。目前深圳本地已有大量除甲醛服务机构,消费者可根据自身需求筛选适配的服务主体。…...

VisualCppRedist AIO:一站式高效解决Windows运行库依赖问题

VisualCppRedist AIO:一站式高效解决Windows运行库依赖问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一个专门为Windows…...

MLC LLM:大语言模型通用编译部署实战指南

1. 项目概述:当大语言模型遇见“通用编译” 最近几个月,我身边不少做AI应用和部署的朋友都在讨论一个词: MLC LLM 。这可不是一个新的大模型,而是一个旨在解决大语言模型(LLM)部署“最后一公里”问题的开…...