TCPDF_tcpip详解套装共3册pdf

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021版 idea激活码(最新序列号破解)

    2021版 idea激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    59
  • .java文件怎么在cmd中运行(以Helloworld为例)

    .java文件怎么在cmd中运行(以Helloworld为例)Java环境的配置#-欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式

    2022年5月27日
    87
  • macOS U盘制作启动系统

    macOS U盘制作启动系统

    2021年7月8日
    65
  • unity 的Cinemachine组件运用

    unity 的Cinemachine组件运用1.第三人称视角控制通过PackageManager安装CineMachine1) 最简单的方法使用freeLook虚拟相机常用的调整为:1.观察目标:将要看的目标放在这里。2输入控制:把你想用来控制的虚拟轴(就是InputManager里的)的名字输入进去就行。默认是填mouse那个输入轴。注意:似乎不支持NewInputSystem。所以在用NewInputSystem时要么用在projectSetting/player里改成both设置。要么自己写脚本去调用这个组件中的

    2022年5月12日
    102
  • java面向接口编程的例子_大二java期末考试试题

    java面向接口编程的例子_大二java期末考试试题转载:https://blog.csdn.net/l1028386804/article/details/43761615 我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对…

    2025年6月2日
    0
  • 字节跳动面经(一、二、三+大boss+hr面)

    字节跳动面经(一、二、三+大boss+hr面)先介绍一下,本科和研究生都不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,字节的游戏专场又是最早开始的,就投递了,投递的是游戏测试开发岗(非测试岗),字节是自己投的第一家公司,也是第一家笔试面试的公司,面试官应该都是上海部门的,三轮面试都是视频面,面试时间是从下午5:30到9:30,一共是四个小时多一点吧(含每轮之间的等待时间…

    2022年5月25日
    487

发表回复

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

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