ThinReports로 텍스트 회전

하고 싶은 일


임의의 각도로 회전할 텍스트 블록ThinReports
(0.7.7에 회전 기능 없음)

작업 확인 환경

  • ThinReports 0.7.6, 0.7.7
  • Ruby 1.8.7, 1.9.3, 2.0
  • Rails 3.2, 4.0
  • 차리다


    다음 패치require:
    # coding: utf-8
    require 'active_support/core_ext'
    require 'thinreports'
    
    module ThinReportsWithTextRotation
      def self.included(base)
        base.class_eval do
          alias_method_chain :text_box, :text_rotation
        end
      end
    
      def text_box_with_text_rotation(content, x, y, w, h, attrs = {})
        rotation = !attrs[:single] && content && content.match(%r!/r(?<rate>\d+)$!)
    
        if rotation
          content = content.delete(rotation.to_s)
          attrs   = attrs.merge :rotate => rotation[:rate].to_i,
                                :rotate_around => :lower_left
        end
        text_box_without_text_rotation(content, x, y, w, h, attrs)
      end
    end
    
    ThinReports::Generator::PDF::Document.send :include, ThinReportsWithTextRotation
    

    사용법

  • (전제) 텍스트 블록만 회전할 수 있는 여러 줄 모드
  • 회전할 텍스트의 마지막 추가/r<回転率>
  • 제작 시 권한 제거/r<回転率>
  • 견본

    # coding: utf-8
    require 'thinreports'
    require_ralative 'thinreports-with-text-rotation'
    
    report = ThinReports::Report.new layout: 'foo.tlf'
    report.start_new_page do |page|
      page.item(:text).value("ラベル\nラベル/r90") # 90度回転させる
    end
    
    report.generate_file('foo.pdf')
    

    회전 후


  • 텍스트 상자의 왼쪽 하단을 시작점으로 회전
  • Rails에서 사용하는 방법

    thinreports-with-text-rotation.rb 구성config/initializers에서 OK

    최후


    계획적으로 이용하다

    좋은 웹페이지 즐겨찾기