1
私はRailsアプリケーション内でPDFドキュメントを生成するためにPrawn gemを使用しています。私は正常にPDFを作成しましたが、目次があり、それが可能かと疑問に思っています。または、Prawn にリーダードット効果を作成する方法がありますか?Prawn:目次のための「リーダーの点」を作る方法?
私はRailsアプリケーション内でPDFドキュメントを生成するためにPrawn gemを使用しています。私は正常にPDFを作成しましたが、目次があり、それが可能かと疑問に思っています。または、Prawn にリーダードット効果を作成する方法がありますか?Prawn:目次のための「リーダーの点」を作る方法?
はい、Prawでリーダードット効果を作成する方法があります。
お持ちの場合:
space_for_dots = 1. - 2. - 3.
dots = (space_for_dots/4) * '.'
toc_entry = entry_string + dots + entry_page_number
エビ中の文字列の幅を計算するには、フォントクラスの一部である、compute_width_ofを使用することができます。追加した画像のための
例は次のようになります。
def build_toc_entry(left_text, right_text, available_width, text_size)
left_text_width = font(YOUR_FONT).compute_width_of(left_text, size: text_size)
right_text_width = font(YOUR_FONT).compute_width_of(right_text, size: text_size)
dot_width = font(YOUR_FONT).compute_width_of('.', size: text_size)
space_width = font(YOUR_FONT).compute_width_of(' ', size: text_size)
space_for_dots = available_width - left_text_width - right_text_width - space_width * 2
dots = '.' * (space_for_dots/dot_width)
"#{left_text} #{dots} #{right_text}" # return the finished toc entry
end
text 'Locate the information on the page indicated.'
text build_toc_entry('Leader Dots', '3', 350, 8)
text build_toc_entry('Dingbats', '5', 350, 8)
text build_toc_entry('Bullets', '8', 350, 8)
をこれは良いスタートのように思えるが、リーダーのドットが縦に整列する必要があります。私はそれがより多くの論理を必要とすると思う。 – Gene
まあ、私はあなたが何を意味するか分からない。 提供された画像OPでは、リーダドットはToCアイテムの直後から始まり、ページ番号の前にずっと進みます。 私の例では、すべてのToC行の長さを同じにする必要がある場合は、同じ 'available_width'を使用します。 実際には、1つのドットが完璧に別のドットの下または上に置かれている場合を除き、私はそれを特に考慮しませんでしたが、私はこの効果の主な問題は 'compute_width_of'について知りませんし、それを使ってこの種のアラインメントも動作させることができると思います。 – sLeitner
それはまさに私が意味していたものです。ほとんどの目次を見てください。異なるエントリのドットは、縦の列に整列します。それは侵害されるまで気付かれないほど一般的な組版の習慣の一つです。ここに例があります:https://www.w3.org/Style/Examples/007/leaders.en.html OPの画像を見ると、そこにもドットが垂直に並んでいることがわかります。 – Gene