我正在开发一个动态创建pdfs的网站。
我一直在玩两种不同的pdf控件 - wpcubed和abcpdf,并且惊讶地发现它们看起来都以不同的方式呈现文本。
wpCubed:
abcpdf:
他们都使用arial 25pt粗体,所以我希望它们看起来相同。谁能解释他们为什么不这样做。
答案 0 :(得分:3)
几种不同的可能性:
无法访问PDF输出,无法确定。
话虽如此,其中几个字符的长宽比看起来不同。比较两个字符串中“test”中的“e”。来自abcpdf的“e”看起来比来自wbCubed的“更宽”。这不是字距调整,连字或缩放级别。它甚至可能不是路径与字体。
那么我们可以看到您的PDF吗?
这是来自wpcubed
的内容流BT 1 0 0 1 0 0 Tm /F1 22.500 Tf 0 Ts 0 g -2.667 Tw 452 -18 Td(This is a test)Tj ET
这是来自abcpdf的内容流:
BT 0 0 0 rg /Fabc5 25 Tf 1 0 0 1 444.825 822 Tm (This is a test) Tj 0.25 0 Td (This is a test) Tj 0.25 0 Td (This is a test) Tj 0.25 0 Td (This is a test) Tj ET嘿:“穷人大胆”。让我检查字体资源......是的。
wpcubed正在使用“Arial,bold”。 abcpdf正在使用“ArialMT”,并且用几次微小的偏移打印相同的单词。
你可能会说服abcpdf使用“Arial,bold”,在这种情况下,我希望两个输出看起来相同。我之前没有看过abcpdf,但它可能是可能的。
我刚刚查看了他们的文档,看起来XFont.findFamily("Arial")
就好了。您将检查返回的XFonts
数组,以查找“真正的”Arial Bold,而不是使用普通Arial的一些虚拟粗体技术。您可能还想查看XFont.names
而不是XFont.name
。
那个特别的“让它看起来很大胆”的技巧有一个严重的缺点:Copy-n-paste将获取文本的所有4个实例。一种更易于选择的方法是根据字体点大小的一小部分来定义线条粗细(iText使用1/30),并且笔划和填充字体。字体通常只是填充,因此该行的粗细被添加到字体的外部,没有额外的单词可以让某人选择/屏幕阅读文本。
佑。盲人有屏幕阅读器必须讨厌这个。