TCPDF_tcpip详解套装共3册pdf

TCPDF_tcpip详解套装共3册pdf简介这篇博客主要是记录tcpdf在使用中的一些要点和注意事项。


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

简介

这篇博客主要是记录 tcpdf 在使用中的一些要点和注意事项。这里使用的 tcpdf 版本是 6.2.13。

Fonts

使用方式

There are two ways to use a new font: embedding it in the PDF (with or without subsetting) or not.

两种使用字体的方式:在 PDF 文件中嵌入字体和不嵌入字体。在 PDF 中嵌入字体的好处是,即使查看这个 PDF 的 PC 上没有安装这个 PDF 用到的字体,这个 PDF 也能正常显示,但缺点就是因为在 PDF 文件中嵌入了字体,PDF 文件的体积会增大;不嵌入字体这种方式则相反,两种方式可以根据实际情况选择使用。

然后嵌入字体这种方式,又分为在 PDF 文件中嵌入所用字体的一个子集和完全嵌入。嵌入子集能减小 PDF 文件中体积,但是限制了对这个 PDF 进行修改的能力,如果我们在修改时键入了一个子集中不包含的字符,这个字符就无法显示。

中文字体

如果我们要在 pdf 中打印中文,就需要设置中文字体,tcpdf 默认支持两种中文字体:stsongstdlight 和 cid0cs。但我们可以使用 tcpdf 基于 ttf 字体文件生成字体的功能,可以自由使用其他字体。

打印 HTML 注意事项

当我们使用 tcpdf 打印 html 时,我们会发现,同一段 html 代码通过 tcpdf 打印出来的效果,和通过浏览器查看的效果并不一样;当你进一步尝试为这段 html 代码添加一些 css 控制其表现时,你又会发现,添加的很多 css 并没有起任何作用。Why?原因和同一段 html 代码通过 chrome 查看和通过 ie 查看效果不一样相同,因为浏览器要渲染 html,chrome 和 ie 的渲染引擎不同,自然表现就不一样,而且对 css 的支持也不一样。同样,tcpdf 也是自己渲染 html,所以同一段 HTML 代码的渲染效果和浏览器不同也是正常的,然后对于很多 CSS 不支持也正常,因为毕竟 tcpdf 不是浏览器,又是自己解释 html,不可能做到像浏览器那样。

ok,现在我们知道,tcpdf 对 html 的渲染效果和浏览器有差别,支持的 CSS 有限,支持的 HTML 标签也有限。那怎样在使用 tcpdf 打印 pdf 时尽可能的调整出自己想要的效果呢?答案就是搞清楚一些坑,然后多尝试。下面就谈谈我遇到的一个坑。

标签的间距

首先,tcpdf 并不支持 CSS margin 属性;然后 tcpdf 为每个 html 标签都设置了默认的 margin;最后我们通过 setHtmlVSpace 函数对每个标签的 margin 进行调整。

这里面最大的问题在于 tcpdf 为每个 html 标签设置的默认 margin 并不合适,比如 tcpdf 竟然为 div 标签也设置了 margin,fuck;然后 tcpdf 对间距的计算是直接累加的,不会像浏览器那样根据实际情况对间距进行处理。

所以,怎么弄处理标签的间距很重要。没有固定方法,比如我的做法就是通过 setCellHeightRatio 函数控制行间距,在额外利用换行符对间距进行控制的。大家可以根据自己的情况指定相应的解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195861.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 一个用js写的接口http调试程序[通俗易懂]

    一个用js写的接口http调试程序

    2022年1月20日
  • JavaScript算法题整理

    JavaScript算法题整理1.获得两个数相除的商和余数console.log(10/3);//商:3.3333console.log(10%3);//余数:1//获得两个数相除的商和余数console.log(Math.floor(10/3));//13//Math.floor(向下取整)、Math.ceil(向上取整)、round(四舍五入)console.log(0.1+0.2);//在js中,尽量避免做小数点运算//如果有小数位的运算varsum=(0.1*100+0.2*100)/100;c

    2022年6月14日
  • client的中文意思是什么_java中cin什么意思

    client的中文意思是什么_java中cin什么意思IE中: document.body.clientWidth==>BODY对象宽度 document.body.clientHeight==>BODY对象高度 document.documentElement.clientWidth==>可见区域宽度 document.documentElement.clientHeight==>可见区域高度 FireFox中:

    2022年9月11日
  • frp内网穿透服务使用

    frp内网穿透服务使用frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。frp是一个开源的内网穿透应用,有客户端软件和服务端软件,大概工作过程如下服务端运行在具有公网IP的服务器上,比如Linux上,并监听某个端口,等待客户端连接。客户端运行在需要穿透的内网机器上,比如本地电脑上,连接到服务器之后,服务器开始监听客户端需要穿透的指定端口。……………………

    2022年9月12日
  • JavaScript 数组排序【六大方法】「建议收藏」

    JavaScript 数组排序【六大方法】「建议收藏」文章目录数组排序sort()方法冒泡排序选择排序插入排序快速排序希尔排序数组排序排序,就是把一个乱序的数组,通过我们的处理,让他变成一个有序的数组1.sort()方法sort()数组对象排序其原理是冒泡排序reverse()方法能够颠倒数组元素的排列顺序例如:vararr=[3,1,5,6,4,9,7,2,8];varasc=arr.sort()console.log(asc); //1,2,3,4,5,6,7,8,9vardesc=asc.

    2022年6月12日
  • L2-026 小字辈(dfs深搜)「建议收藏」

    L2-026 小字辈(dfs深搜)「建议收藏」原题链接本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。输入格式:输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。输出格式:首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔,行首尾不得有多余空格。

    2022年8月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号