15 рдорд┐рдирдЯ рд╕реЗ рдХрдо рд╕рдордп рдореЗрдВ рд╕реНрдХреНрд░рд┐рдмреНрдб, рд░реВрдмреА рдФрд░ рдкреНрд░реЙрди рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗрдВ

scribd.com - рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ Scribd рдЖрдкрдХреЛ рдореБрдлреНрдд рдореЗрдВ 50,000 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреАрдбреАрдПрдл рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реИ + рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЬреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗрд╡рд▓ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рдерд╛, рдФрд░ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛? рдмреЗрд╢рдХ, рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд░реВрдмреА рдФрд░ рд░реЗрд▓ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред

рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ 2 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧреА, рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдиреМрдХрд░реА рдореЗрдВ рднрд░рд╛рдИ рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВ - рдЖрдкрдХреА рдкрд╕рдВрдж рдХрд╛ рдХреЛрдИ рднреАред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░реВрдк рдХреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдиреЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Carrierwave рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдРрд╕реА рдХреЛрдИ рдЪреАрдЬрд╝ рдЬреЛ рдЖрдкрдХреА рдЖрддреНрдорд╛ рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд▓рдЧреЗред рдпрд╣рд╛рдБ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░реВрдк рдХреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ (doc, docx,) ppt, pptx, pps, ppsx, xls, xlsx, pdf, ps, odt, odp, sxw, sxi, txt, rtf, epub)ред рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдмрдВрдбрд▓рд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

gem 'rscribd' gem 'prawn' 


рдФрд░ рдмрдВрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдордд рднреВрд▓рдирд╛ред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ Scribd рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдФрд░ рдХреБрдВрдЬреА рдФрд░ рд░рд╣рд╕реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╢реБрд░реБрдЖрддреА / scribd.rb (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдлреЙрд░реНрдо рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  Scribd::API.instance.key = 'xxxxxxxxxxxxxx' Scribd::API.instance.secret = 'xxxxxxxxxxxxxx' 


рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рдЕрдм рдореБрдЦреНрдп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

1 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ - рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рд╕реНрдХреНрд░рд┐рдм рдкрд░ рд╣реИ:

  #path_to_document -       def scribd_upload path_to_document Scribd::Document.upload file: path_to_document, access: :private end scribd = upload_document path_to_document 


рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдХреНрд░рд╛рдЗрдм рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ doc_id рдФрд░ access_key рд╣реЛрддрд╛ рд╣реИ
рд╣рдо рдЗрди рдЪрд░реЛрдВ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдорджрдж рд╕реЗ рд╣рдо рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рдл рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред
scribd.doc_id
scribd.access_key

рдЦреИрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реНрдХреНрд░рд╛рдЗрдм рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рджреВрд╕рд░рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ - рд╕реНрдЯрдмреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдирд╛ - рдЖрдВрд╢рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдПред

рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рджреВрд╕рд░реА рджреЗрд░реА рдХреА рдиреМрдХрд░реА рдЕрдкрдиреЗ рд╕рднреА рдорд╣рд┐рдорд╛ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рдЙрд╕рдХреА рдЪреБрдиреМрддреА рдкрд╣рд▓реЗ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рдХрд╛ scribd_id рд╣реИред - рдЗрд╕реЗ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдореЗрдВ рдЦреЛрдЬреЗрдВ -

  scribd = Scribd::Document.find scribd_id 


рдЗрд╕рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдкреАрдбреАрдПрдл рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрд╕ рд▓рд┐рдВрдХ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЬреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
scribd.download_url 'pdf'

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕реНрдЯрдм рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЭреАрдВрдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

  Prawn::Document.generate(path_to_template_file, :template => path_to_real_file) do |doc| (1..doc.page_count).each do |page_number| doc.image(path_to_gap, :vposition => :center, :position => :center, :width => x, :height => y) end end 


path_to_template_file - рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдЬреЛ рд╕реНрдЯрдмреНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЭреАрдВрдЧрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрдирд╛рдПрдЧрд╛)
path_to_real_file - рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореМрдЬреВрджрд╛ рд╕рд╛рдл рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкреАрдбреАрдПрдл рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░реАрдмрдб рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИред
path_to_gap - рд╕реНрдЯрдм рдЫрд╡рд┐ рдХрд╛ рдкрде

рдЦреИрд░, рдЗрд╕ рдареВрдВрда (x, y) рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдбрд╛рд▓рдирд╛ рди рднреВрд▓реЗрдВ
рдареАрдХ рд╣реИ, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдЯрдмреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрдХреНрд░рд┐рдм рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдИрдбреА рдФрд░ рд╕реАрдХреНрд░реЗрдЯ_рдХреА рд▓реЗрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рд╕рд╛рдл рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрд╕рдХреЗ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рдФрд░ рд╕реНрдЯрдмреНрд╕ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА / рд░рд╣рд╕реНрдп рдХреЗ 2 рд╕реЗрдЯ рд╣реИрдВ, рдФрд░ рд╣рдо рдпрд╣ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕рдХреЛ рдХрд┐рд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рджрд┐рдЦрд╛рдирд╛ рд╣реИред
рдпрд╣ рдиреЗрддреНрд░рд╣реАрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд╣реЛрдирд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдмрд╣реБрдд рд╣реА рдЖрд╢рд╛рдЬрдирдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦрддрд╛ рд╣реВрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦреЗрдЧрд╛, рдпрджреНрдпрдкрд┐ рд╡рд╣ рд╕реНрдЯрдмреНрд╕ рдХреЗ рд╕рд╛рде рд╣реИ рдЬреЛ рдЙрд╕реЗ рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рджрд┐рдЦрд╛рддреА рд╣реИ, рдФрд░ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрддреА рд╣реИ (рднрд╛рдЧ рдХрд╛ рдЖрдХрд╛рд░ рдЖрдкрдХреА рдкрд╕рдВрдж рдХреЗ рд╕реНрдЯрдмреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред

Source: https://habr.com/ru/post/In161487/


All Articles