1

有没有一种简单的方法可以在使用 Ruby PDF::Writer 库生成的 PDF 中显示功能?我意识到我可以只打印比基数高一点的指数,但是我想也许有一些更简单的方法可以做到这一点......比如某种标记标签。

基本上,我想干净地显示 x**-2。

提前致谢!

4

1 回答 1

3

我写了一个快速算法来做我需要做的事情。希望它也对你有用。唯一的要求是您使用 PDF::Writer。下面的方法是使用 PDF::Writer 和 Ruport。但是,如果您不使用 Ruport,您唯一需要更改的是“draw_text”方法。用 PDF::Writer "text" 方法替换它。

def draw_text_with_exponent(text, left, font_size)
    exponent_offset = 1
    font_size_reduction = 5

    words = text.split(" ")

    buffer = ""
    words.each() do |word|
        if (word.gsub("**", '') == word)
            buffer += word + " "
        else
            number = word.split("**")
            base = number[0]
            exponent = number[1]

            buffer += base
            draw_text(buffer, :left => left, :font_size => font_size)
            left += pdf_writer.text_line_width(buffer, font_size)

            pdf_writer.y+=exponent_offset
            draw_text(exponent, :left => left, :font_size => font_size - font_size_reduction)
            left += pdf_writer.text_line_width(exponent, font_size)
            buffer = ""
            pdf_writer.y-=exponent_offset
        end
    end

    if (buffer.length > 0)
        draw_text(buffer, :left => left, :font_size => font_size)
    end
end

这是一个示例调用:

draw_text_with_exponent("The numbers are x**2 and y**3 ok?", 50, 11)

如果您对这种方法有任何问题,或者您找到了我最初问题的答案,请告诉我。

-J.P

于 2009-02-09T19:00:49.473 回答