带有页面大小检测的itext 7 html到pdf(itext 7 html to pdf with page size detection)

我使用itext 7将HTML模板(Velocity)呈现为PDF,然后呈现为PNG(Apache PdfBox),用于热敏打印机打印。

我的模板呈现为:

...

我的容器的固定宽度为512px。 我想测量HTML的渲染高度,然后将其渲染为页面高度为测量高度的单页PDF。

但渲染的大小不是预期的大小。 我期望有一个512px的渲染宽度,但layoutResult返回宽度385(而不是预期的512)。

我错过了哪个参数? 谢谢。

I am using itext 7 to render HTML templates (Velocity) to PDF, then to PNG (Apache PdfBox), for thermal printer printing.

My template is rendered as :

...

My container has a fixed width to 512px. I would like to measure the rendered height of the html, and then render it as a single page PDF with page height = measured height.

But the rendered size is not the expected size. I expect to have a rendered width of 512px, but the layoutResult returns a width of 385 (instead of the expected 512).

Which parameter have I missed ? Thanks.

原文:https://stackoverflow.com/questions/50616145

更新时间:2021-03-04 14:03

最满意答案

1英寸= 96像素

1英寸= 72个用户单位= 72磅

看看你拥有的数字,看起来好像你在混淆像素和点。

96 px = 72 pt

512 px = 512 / 96 * 72 pt

512 px = 384 pt

我想你会期望512像素,并获得384点,但这不是一个错误,因为512像素等于384点。 因此没有问题。 你的问题的主要问题是你忘了提到测量系统。

1 inch = 96 px

1 inch = 72 user units = 72 pt

Looking at the numbers you have, it looks as if you are confusing pixels and points.

96 px = 72 pt

512 px = 512 / 96 * 72 pt

512 px = 384 pt

I guess you expect 512 px and get 384 pt, but that's not an error, because 512 px equals 384 pt. Hence there is no problem. The main problem with your question is that you forget to mention the measurement system.

相关问答

可以使用 http://api.itextpdf.com/itext/com/itextpdf/text/pdf/PdfReader.html#getPageSize(int ) http://api.itextpdf.com/itext/com/itextpdf/text/pdf/PdfReader.html#getPageSizeWithRotation(int ) 比较你从中得到的矩形的宽度和高度,你知道你使用的纸张大小。 Either use http://api.itextpdf.com

...

您可以尝试使用-fs-pdf-font-embed和-fs-pdf-font-encoding css规则。 从用户指南 : -fs-pdf-font-embed:与字体规则中嵌入的值一起使用,以使Flying Saucer在PDF文档中嵌入字体文件,避免需要调用FontResolver类的addFont()方法 -fs-pdf-font-encoding:在一个font-face规则中使用指定你嵌入到PDF中的自定义字体的引用; 将编码的名称作为值。 例如在您的打印CSS: @font-face

...

pdfHTML v1.0.1中添加了对page-break-after CSS属性的支持 没有/ alt标签是v1.0.0中的一个错误,并在v1.0.1中修复 (为了可见性,将其作为答案发布,因为此问题之前已经出现过)。 Support for the page-break-after CSS property has been added in pdfHTML v1.0.1 The absence of the /alt tags was a bug in v1.0.0 and is fixed

...

您正在创建PdfDocument实例而不是Document实例! 如文档所述, PdfDocument类仅供内部使用。 You're creating a PdfDocument instance instead of a Document instance! As documented, the PdfDocument class is for internal use only.

如果您知道如何在此问题中解释的方面添加额外空间: 如何扩展PDF的页面大小以添加水印? 那么你应该知道如何在底部添加额外的空间。 你的问题是重复的。 PDF文档的页面大小是使用/MediaBox定义的。 它可以使用/CropBox进行裁剪。 在我给出的答案中,我们像这样更改/MediaBox : PdfArray mediabox = pageDict.getAsArray(PdfName.MEDIABOX);

llx = mediabox.getAsNumber(0).floatValue();

...

请查看常见问题解答条目HTML中的测量系统如何与PDF中的测量系统相关联? 你会发现: 1英寸= 96像素 1英寸= 72个用户单位= 72磅 看看你拥有的数字,看起来好像你在混淆像素和点。 96 px = 72 pt

512 px = 512 / 96 * 72 pt

512 px = 384 pt

我想你会期望512像素,并获得384点,但这不是一个错误,因为512像素等于384点。 因此没有问题。 你的问题的主要问题是你忘了提到测量系统。 Please take a look at the

...

为什么你的代码不起作用 正如HTML to PDF教程的介绍中所解释的那样, HTMLWorker在很多年前就被弃用了。 它无意转换完整的HTML页面。 它不知道HTML页面有

和部分; 它只是解析所有内容。 它旨在解析小的HTML片段,您可以使用StyleSheet类定义样式; 真正的CSS不受支持。 然后是XML Worker。 XML Worker是一种解析XML的通用框架。 作为概念证明,我们决定将一些XHTML编写为PDF功能,但我们不支持所有HTML标记。 例如:

...

首先,你需要获得iText 7(核心库)和pdfHtml附加组件(将解析HTML + CSS并将其转换为iText对象的部分)。 转到github以了解如何下载这些内容。 假设你有这个HTML : 有了这个相应的CSS : 然后你可以使用这段代码: ConverterProperties converterProperties =

new ConverterProperties().setBaseUri(resoureLocation);

HtmlConverter.convertToPd

...

以下是此问题的解决方案: $html2pdf = new HTML2PDF('P', array($width_in_mm,$height_in_mm), 'en', true, 'UTF-8', array(0, 0, 0, 0));

宽度和高度应为MM。 如果您使用英寸将其转换为MM。 式: $width_in_mm = $width_in_inches * 25.4;

$height_in_mm = $height_in_inches * 25.4;

不要四舍五入。 即使它有一个小数点

...

对于任何想要知道的人来说没关系.....我拒绝在我的配置文件中设置的所有用户导致问题。 调整以允许管理员解决此问题。 Ok for anyone that would like to know..... I had deny all users set in my config file which was causing the problem. Adjusting to allow admins resolved this.

html2pdf页面大小,带有页面大小检测的itext 7 html到pdf(itext 7 html to pdf with page size detection)...相关推荐

  1. div 设置a4大小_如何在A4纸张尺寸页面制作HTML页面?

    在2005年11月,AlistApart.com发表了一篇关于他们如何使用HTML和CSS发表一本书的文章.请参阅:http://alistapart.com/article/boom 这是该文章的摘 ...

  2. java word 纸张大小_Java 设置Word页边距、页面大小、页面方向、页面边框

    本文将通过java示例介绍如何设置word页边距(包括上.下.左.右).页面大小(可设置letter/a3/a4/a5/a6/b4/b5/b6/envelop dl/half letter/lette ...

  3. PDF裁剪页面及调整页面大小的方法

    PDF文件相信大家现在都不陌生,现在在日常的学习和工作中都使用的是PDF文件,上次有小伙伴来询问小编PDF怎么调整页面和裁剪页面的方法,今天小编就来跟大家都来分享一下吧.有需要的小伙伴都可以看看哦. ...

  4. 安卓+ios系统--手机端页面自适应手机屏幕大小,禁止手动放大和缩小VUE

    项目需求 手机端,页面自适应手机屏幕大小,不能手动放大和缩小. 1.代码 在index.html中加入下面的代码: <!-- 手机端页面自适应手机大小,禁止手动放大 --> <met ...

  5. Java 设置Word页边距、页面大小、页面方向、页面边框

    本文将通过Java示例介绍如何设置Word页边距(包括上.下.左.右). 页面大小(可设置Letter/A3/A4/A5/A6/B4/B5/B6/Envelop DL/Half Letter/Lett ...

  6. PDF如何裁剪页面并保持页面大小不变

    现在大多的文件在使用之前有时候都会需要进行再次编辑,那么如果把一个页面中不需要的页面裁剪之后,页面的大小就会产生变化与其他的页面相比显的很突兀,不是很好看,这个时候就需要把页面的大小调整一致,那么应该 ...

  7. html5移动页面自适应手机屏幕大小,页面完美自适应移动端屏幕的方法

    码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210.210既 210 之意. 移动端由于展示区域比较小,页面在不同分辨率手机上的展示细节也被要求得更加严格, ...

  8. 将图片生成PDF的项目,要求每张图片生成一页,并且页面与图片尺寸大小相同

    将图片生成PDF的项目,要求每张图片生成一页,并且页面与图片尺寸大小相同 最近公司做项目碰到pdf生成,需要把填充的图片宽高平铺到每张页面上面,在百度搜了好久都没有朋友遇到,所以自己试了好多终于给搞定 ...

  9. wps文档页面左右边距大小怎么调整

    wps文档在日常办公中是比较常用的一款工具,多数人会通过wps文档记录一些文字或者是在文档中创建一些表格记录工作方面的内容,在添加内容后为了更方便审阅,大家可以通过调整页边距的形式来使相关内容放在文件 ...

最新文章

  1. html怎么设置只显示一行,如何利用CSS控制文本只在一行显示(不换行)
  2. Python学习笔记011——内置函数exec()
  3. 【Android基础】序列化 Serializable vs Parcelable
  4. mac linux loader,M3 Bitlocker Loader Mac版
  5. MySQL高级show profile
  6. 表情可字怎么打_小辫子表情怎么打?两根毛表情符号复制
  7. 计算机组装与维护心得体会作文,《计算机维护与局域网建设》学习心得
  8. JVM 堆、栈概述 与 常见 OOM 原因及解决方案
  9. 我的第一个Python爬虫——谈心得
  10. 部分软件免管理员权限安装
  11. python实现比较两手牌的大小--斗地主规则
  12. [Study]Vue
  13. 酷炫多彩的个性化词云可视化
  14. 网站服务器发生故障,全国DNS服务器发生故障
  15. 浅谈border-radius对border的影响
  16. desktop.ini和folder.htt
  17. 项目管理习题——挣钱分析法与成本预算和成本估算
  18. CEM计算电磁学 -- Lecture 2 学习笔记 (1) ---TMM 传输矩阵法(1)
  19. 图像去除栅格,条纹伪影的办法(附python代码)
  20. 超简单螺旋矩阵详细注释版(c语言)

热门文章

  1. win+G没反应,Xbox game bar按不出来
  2. 《Adobe Illustrator CS5中文版经典教程》—第1课1.5节使用“导航器”面板
  3. 百度出来的 KAP架构师
  4. Excel怎么把数字样式日期转为标准日期格式
  5. java项目遇到风险漏洞示例与解决方案
  6. webRTC(二十三):web远程androidandroid远程android的实现
  7. 34所自划线院校研究生奖助学金一览!
  8. forget word out a~4
  9. 旋转木马 css,CSS:3D旋转木马效果
  10. oracle ebs用什么开发,ORACLEERP开发基础之EBS开发基础