PDF控件以不同方式呈现文本

时间:2011-04-05 15:18:43

标签: vb.net pdf

我正在开发一个动态创建pdfs的网站。

我一直在玩两种不同的pdf控件 - wpcubedabcpdf,并且惊讶地发现它们看起来都以不同的方式呈现文本。

wpCubed:

enter image description here

abcpdf:

enter image description here

他们都使用arial 25pt粗体,所以我希望它们看起来相同。谁能解释他们为什么不这样做。

以下是完整文件:wpCubedabcpdf

1 个答案:

答案 0 :(得分:3)

几种不同的可能性:

  1. 缩放PDF视图中的级别。如果您的默认视图是适合宽度,并且默认页面大小不同,则可能会非常巧妙地发生。
  2. 字距。可以根据这些字符的大小调整两个字符之间的间距。在“Ti”中,“i”通常比“T”更接近“T”。如果一个支持它而另一个不支持,则输出将具有不同的宽度。
  3. 连字。典型的例子是“fi”,其中i的点和“f”的悬垂是相同的像素。如果一个支持它而另一个不支持,则输出将具有不同的宽度。
  4. 路径与字体。可以使用文本运算符或line-to / curve-to运算符绘制给定的文本字符串。后者效率极低,但有时是正确绘制给定文本的唯一方法。 pathed文本可能会缺少字体“提示”......为了使文本与像素对齐而使用的各种技巧。
  5. 无法访问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),并且笔划和填充字体。字体通常只是填充,因此该行的粗细被添加到字体的外部,没有额外的单词可以让某人选择/屏幕阅读文本。

    佑。盲人有屏幕阅读器必须讨厌这个。