복붙노트

[RUBY-ON-RAILS] 어떻게 루비와 PDF 기존에 편집 또는 쓰기에?

RUBY-ON-RAILS

어떻게 루비와 PDF 기존에 편집 또는 쓰기에?

나는 복잡한 내용과 그 안에 여러 개의 빈 지역 / 구역으로 PDF 템플릿 파일의 몇 가지있다. 나는 그 빈 지역에 쓰기 텍스트 수 및 폴더에 생성 된 PDF 파일을 저장해야합니다.

나는 아주 집중적으로이 질문에 대한 답을 인터넷 검색,하지만 확실한 답을 찾지 못했습니다. 더 나은 솔루션 중 하나는 PDF :: 툴킷이지만, 기존의 PDF 문서로 교체 속성을 추가 할 수는 Adobe Acrobat의 구입을 요구한다.

PHP의 세계는 단순히 / PDF 파일 및 쓰기를 열고 기존 내용 위에 그것에 그릴 수 있습니다 FPDI 축복한다. 이이 라이브러리의 루비 포트이지만, 마지막은 2009 년 초에 일어난 것이 널리 사용 및 지원처럼 또한 해당 프로젝트가 보이지 않는 커밋합니다.

질문 :, 편집 작성하거나 기존의 PDF 파일에 그리기의 더 나은 루비 방법은 무엇입니까?

이 질문은 여기에 답변을하지 않는 것 같습니다. 이러한 질문과 관련,하지만 정말 동일하지 않습니다 :

해결법

  1. ==============================

    1.당신은 확실히 당신이 사용자 정의 PDF 파일을 생성 할 수있는 새우 보석을 확인해야합니다. 당신은 실제로 당신의 새로운 새우 문서 템플릿으로 기존의 PDF를 처리하여 기존의 PDF 파일에 텍스트 쓰기에 새우를 사용할 수 있습니다.

    당신은 확실히 당신이 사용자 정의 PDF 파일을 생성 할 수있는 새우 보석을 확인해야합니다. 당신은 실제로 당신의 새로운 새우 문서 템플릿으로 기존의 PDF를 처리하여 기존의 PDF 파일에 텍스트 쓰기에 새우를 사용할 수 있습니다.

    예를 들면 :

    filename = "#{Prawn::DATADIR}/pdfs/multipage_template.pdf"
    Prawn::Document.generate("full_template.pdf", :template => filename) do
      text "THis content is written on the first page of the template", :align => :center
    end
    

    이는 기존의 PDF 파일의 첫 페이지에 텍스트를 작성합니다.

    자세한 내용은 여기를 참조하십시오 : http://prawn.majesticseacreature.com/manual.pdf

  2. ==============================

    2.새우 템플릿 기능을 제거했기 때문에 내가 찾은 가장 쉬운 방법은 다음과 같다 (이것은 버그가 가득했습니다)

    새우 템플릿 기능을 제거했기 때문에 내가 찾은 가장 쉬운 방법은 다음과 같다 (이것은 버그가 가득했습니다)

    거친 예 :

    require 'prawn'
    require 'pdf/toolkit'
    
    template_filename = 'some/dir/Awesome-Graphics.pdf'
    prawn_filename = 'temp.pdf'
    output_filename = 'output.pdf'
    
    Prawn::Document.generate(prawn_filename) do
      # Generate whatever you want here.
      text_box "This is some new text!", :at => [100, 300]
    end
    
    PDF::Toolkit.pdftk(prawn_filename, "background", template_filename, "output", output_filename)
    
  3. ==============================

    3.나는 PDF 파일을 생성하고 다음 하나에 두 개의 생성 된 PDF 파일을 결합 combine_pdf을 사용하는 새우를 권장합니다. 나는이처럼 사용하고는 잘 작동합니다.

    나는 PDF 파일을 생성하고 다음 하나에 두 개의 생성 된 PDF 파일을 결합 combine_pdf을 사용하는 새우를 권장합니다. 나는이처럼 사용하고는 잘 작동합니다.

    이 PDF 파일을 결합하는 방법에의합니다 (README)에서 짧은 예 :

    company_logo = CombinePDF.load("company_logo.pdf").pages[0]
    pdf = CombinePDF.load "content_file.pdf"
    pdf.pages.each { |page| page << company_logo } # notice the << operator is on a page and not a PDF object.
    pdf.save "content_with_logo.pdf"
    
  4. ==============================

    4.내가 생각할 수있는 최선은 PDF 파일을 기존 편집하는 것을 허용하지 않습니다, 레일 - 라텍스이지만 당신이 템플릿 *와 함께 동적으로 수정 및 PDF 형식으로 그들을 컴파일 할 수 .tex.erb을 (설정할 수 것 DVI와 다른 사람의 수).

    내가 생각할 수있는 최선은 PDF 파일을 기존 편집하는 것을 허용하지 않습니다, 레일 - 라텍스이지만 당신이 템플릿 *와 함께 동적으로 수정 및 PDF 형식으로 그들을 컴파일 할 수 .tex.erb을 (설정할 수 것 DVI와 다른 사람의 수).

  5. ==============================

    5.PDFLib 당신이 원하는 일을 할 것 같다 루비 바인딩을 가지고있다.

    PDFLib 당신이 원하는 일을 할 것 같다 루비 바인딩을 가지고있다.

  6. ==============================

    6.당신은 당신이 하나의 보석을 사용할 수 있습니다 보석의 조합을 사용할 필요가 없습니다!

    당신은 당신이 하나의 보석을 사용할 수 있습니다 보석의 조합을 사용할 필요가 없습니다!

    (내가 발견 한 있도록!) PDF의 작업은 정말 루비 / 레일에 도전

    이것은 내가 레일에 PDF로 동적 텍스트를 추가 할 수 있었다 방법입니다.

    당신의 보석 파일 보석 combine_pdf이 보석을 추가

    다음은이 같은 코드를 사용할 수 있습니다 :

    # get the record from the database to add dynamically to the pdf
    user = User.last
    
    # get the existing pdf
    pdf = CombinePDF.load "#{Rails.root}/public/pdf/existing_pdf.pdf"
    
    # create a textbox and add it to the existing pdf on page 2
    pdf.pages[1].textbox "#{user.first_name} #{user.last_name}", height: 20, width: 70, y: 596, x: 72
    
    # output the new pdf which now contains your dynamic data
    pdf.save "#{Rails.root}/public/pdf/output#{Time.now.to_s}.pdf"
    

    현재 텍스트 상자 방법의 세부 사항을 찾을 수 있습니다 https://www.rubydoc.info/gems/combine_pdf/0.2.5/CombinePDF/Page_Methods#textbox-instance_method

    새우 wicked_pdf의 pdfkit의 fillable_pdf : 나는 다른 보석의 숫자를 통해이 작업에 일 소요

    그러나 이것은 2019 년의 같은 나를 위해 지금까지 가장 부드러운 솔루션이 있었다.

    나는 그들이 모든 시험을 통과하고 난 PDF의과에 있었다 에러하지 않아도이 사람에게 많은 시간을 절약 희망!

  7. ==============================

    7.내 연구에 따르면, 새우는 내가 찾은 자유와 최고의 보석 중 하나입니다. 템플릿 기능은 이후 버전에서 작동하지 않습니다. 내가 템플릿 작업을 찾을 수있는 최신 버전 1.0.0.rc2입니다 - 3 월 1 일 2013 템플릿과 함께 작동 이후 버전을 찾을 수 없습니다. 이보다 최신 버전을 사용하는 경우 그래서 염두에. 추가 정보를 원하시면 스레드 아래 확인하십시오.

    내 연구에 따르면, 새우는 내가 찾은 자유와 최고의 보석 중 하나입니다. 템플릿 기능은 이후 버전에서 작동하지 않습니다. 내가 템플릿 작업을 찾을 수있는 최신 버전 1.0.0.rc2입니다 - 3 월 1 일 2013 템플릿과 함께 작동 이후 버전을 찾을 수 없습니다. 이보다 최신 버전을 사용하는 경우 그래서 염두에. 추가 정보를 원하시면 스레드 아래 확인하십시오.

    https://groups.google.com/forum/#!searchin/prawn-ruby/prawn$20templates/prawn-ruby/RYGPImNcR0I/7mxtnrEDHeQJ

    PDFtk는 PDF 조작 및 템플릿 작업에 다른 수있는 도구입니다. 그러나, 다음과 같은 점을 언급

    자세한 내용은 아래 링크를 참조하시기 바랍니다 http://adamalbrecht.com/2014/01/31/pre-filling-pdf-form-templates-in-ruby-on-rails-with-pdftk/

  8. from https://stackoverflow.com/questions/9185942/how-to-edit-or-write-on-existing-pdf-with-ruby by cc-by-sa and MIT license