Показать математические способности, используя Ruby PDF :: Writer или Ruport? - PullRequest
1 голос
/ 09 февраля 2009

Существует ли простой способ отображения возможностей в PDF, созданных с использованием библиотеки Ruby PDF :: Writer? Я понимаю, что могу просто напечатать показатель степени немного больше, чем базовое число, однако я подумал, что, возможно, есть какой-то более простой способ сделать это ... например, какой-нибудь тег разметки.

В принципе, я хочу, чтобы отобразить x ** - 2.

Заранее спасибо!

1 Ответ

3 голосов
/ 09 февраля 2009

Я написал быстрый алгоритм, чтобы сделать то, что мне нужно сделать. Надеюсь, это сработает и для вас. Единственное требование - использовать PDF :: Writer. Метод ниже использует PDF :: Writer и Ruport. Однако, если вы не используете Ruport, вам нужно изменить только метод draw_text. Замените его методом "text" в PDF :: Writer.

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)

Дайте мне знать, если у вас возникли проблемы с этим методом, или вы найдете ответ на мой оригинальный вопрос.

-JP

...