Please translate the entire text in Russian language and also write list of words under " check these words" write the meaning of these words in Russian language.
| English | Русский |
|---|---|
| fascinated | очарованный, увлечённый |
| strange object | странный объект |
| planet | планета |
| meteor | метеор |
| military plane | военный самолёт |
| curious | любознательный |
| explanation | объяснение |
| involve | включать в себя |
| mostly | в основном |
| investigate | исследовать, расследовать |
| sighting | наблюдение, случай обнаружения |
| interview witness | опрашивать свидетеля |
| analyse | анализировать |
| hotspot | место, где что-то часто происходит или наблюдается |
| rooftop | крыша |
| hillside | склон холма |
| record information | записывать информацию |
| camcorder | видеокамера |
| telescope | телескоп |
| device | устройство, прибор |
| take up | заняться, начать заниматься |
| enthusiastic | увлечённый, полный энтузиазма |
| patient | терпеливый |
| find out | выяснить, узнать |
| spot | заметить, увидеть |
Make a colorful handbook pdf
~/
mkdir -p "/tmp/workspace/ufo-handbook/src" "/tmp/workspace/ufo-handbook/output" && fc-match "DejaVu Sans" | head -1
python - <<'PY' from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4 from reportlab.lib.colors import HexColor, white, black from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont from reportlab.platypus import Paragraph, Table, TableStyle from reportlab.lib.styles import ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT from reportlab.lib.units import mm from reportlab.lib.colors import Color from reportlab.pdfbase.pdfmetrics import stringWidth import os out='/tmp/workspace/ufo-handbook/output/UFO_Hunting_Russian_Handbook.pdf' font='/usr/share/fonts/truetype/noto/NotoSans-Regular.ttf' fontb='/usr/share/fonts/truetype/noto/NotoSans-Bold.ttf' if not os.path.exists(font): font='/usr/share/fonts/opentype/noto/NotoSans-Regular.ttf' fontb='/usr/share/fonts/opentype/noto/NotoSans-Bold.ttf' pdfmetrics.registerFont(TTFont('Noto',font)) pdfmetrics.registerFont(TTFont('NotoB',fontb)) W,H=A4 c=canvas.Canvas(out,pagesize=A4) c.setTitle('Охотник за НЛО - Русский учебный справочник') blue=HexColor('#0FA9D5'); dark=HexColor('#183A63'); yellow=HexColor('#FFD43B'); orange=HexColor('#FF7A32'); mint=HexColor('#DDF6F3'); purple=HexColor('#7257B8'); pale=HexColor('#F6FAFE'); red=HexColor('#E94F61') def bg(): c.setFillColor(pale); c.rect(0,0,W,H,fill=1,stroke=0) c.setFillColor(blue); c.circle(W-22*mm,H-17*mm,37*mm,fill=1,stroke=0) c.setFillColor(HexColor('#BCECF7')); c.circle(18*mm,18*mm,23*mm,fill=1,stroke=0) def footer(page): c.setFillColor(dark); c.setFont('Noto',8); c.drawCentredString(W/2,10*mm,f'Охотник за НЛО • Русский учебный справочник • {page}') def para(txt,x,y,w,style): p=Paragraph(txt,style); _,h=p.wrap(w,1000); p.drawOn(c,x,y-h); return y-h h1=ParagraphStyle('h1',fontName='NotoB',fontSize=25,leading=29,textColor=white,alignment=TA_CENTER) h2=ParagraphStyle('h2',fontName='NotoB',fontSize=15,leading=19,textColor=dark) body=ParagraphStyle('body',fontName='Noto',fontSize=10.5,leading=15,textColor=dark) q=ParagraphStyle('q',fontName='NotoB',fontSize=11,leading=15,textColor=purple) small=ParagraphStyle('small',fontName='Noto',fontSize=9.3,leading=12.5,textColor=dark) # cover bg() c.setFillColor(dark); c.roundRect(22*mm,183*mm,166*mm,75*mm,8*mm,fill=1,stroke=0) c.setFillColor(orange); c.circle(45*mm,206*mm,15*mm,fill=1,stroke=0) c.setFillColor(yellow); c.circle(165*mm,241*mm,10*mm,fill=1,stroke=0) # UFO c.setFillColor(HexColor('#C8F5F4')); c.ellipse(68*mm,211*mm,142*mm,229*mm,fill=1,stroke=0) c.setFillColor(HexColor('#79D8DF')); c.ellipse(91*mm,222*mm,119*mm,242*mm,fill=1,stroke=0) c.setStrokeColor(white); c.setLineWidth(1.6); c.arc(91*mm,222*mm,119*mm,242*mm,0,180) c.setFillColor(white); c.setFont('NotoB',26); c.drawCentredString(W/2,246*mm,'ОХОТНИК ЗА НЛО!') c.setFont('Noto',12); c.drawCentredString(W/2,237*mm,'Русский перевод и словарь') # Tagline c.setFillColor(white); c.roundRect(35*mm,157*mm,140*mm,16*mm,8*mm,fill=1,stroke=0) c.setFillColor(dark); c.setFont('NotoB',11); c.drawCentredString(W/2,163*mm,'Прочитайте интервью. Выучите новые слова. Расскажите о хобби.') # key content c.setFillColor(mint); c.roundRect(24*mm,53*mm,162*mm,84*mm,7*mm,fill=1,stroke=0) y=128*mm c.setFont('NotoB',15); c.setFillColor(dark); c.drawString(34*mm,y,'Что внутри?') y-=13*mm items=[('1','Перевод текста об увлечении Ника Портера.'),('2','Ключевые слова: английский - русский.'),('3','Мини-задания для устной практики.')] for n,t in items: c.setFillColor(orange); c.circle(40*mm,y+1*mm,5*mm,fill=1,stroke=0) c.setFillColor(white); c.setFont('NotoB',10); c.drawCentredString(40*mm,y-2*mm,n) c.setFillColor(dark); c.setFont('Noto',11); c.drawString(51*mm,y-2*mm,t) y-=20*mm footer(1); c.showPage() # page 2 bg() c.setFillColor(dark); c.roundRect(17*mm,258*mm,176*mm,22*mm,5*mm,fill=1,stroke=0) p=Paragraph('Перевод: интервью с охотником за НЛО',h2); p.wrapOn(c,160*mm,20*mm); p.drawOn(c,25*mm,263*mm) y=250*mm intro='Странный объект движется по небу. Это птица? Самолёт? Или НЛО? Ника Портера увлекает возможность существования жизни на других планетах, поэтому в свободное время он пытается выяснить, что это за объекты. Мы задали ему несколько вопросов о его необычном хобби.' y=para(intro,20*mm,y,170*mm,body)-5*mm sections=[ ('Итак, Ник, почему ты так интересуешься НЛО?','Ну, тысячи людей по всему миру видят в небе странные объекты. Большинство из них - это планеты, метеоры или военные самолёты. Но как насчёт остальных? Я очень любознательный человек, поэтому хочу найти объяснение!'), ('А что именно включает в себя твоё хобби?','Ну, я основал клуб НЛО, и мы в основном исследуем случаи наблюдения НЛО. Мы опрашиваем свидетелей и анализируем видео и фотографии. Иногда мы также отправляемся в место, где НЛО наблюдают особенно часто. Сегодня вечером мы как раз идём туда. Обычно мы забираемся высоко на крышу или на склон холма. Если мы видим что-то странное, мы записываем как можно больше информации! Мы используем видеокамеры, фотоаппараты, телескопы и другие устройства. Затем мы анализируем информацию на наших ноутбуках.'), ('Что бы ты посоветовал читателям, которые хотят заняться поиском НЛО?','Охотником за НЛО может стать любой. Нужно только быть увлечённым и терпеливым. Вам нужно вступить в местный клуб НЛО. Так вы узнаете, где находятся места частых наблюдений НЛО, и рядом будут свидетели, если вы что-нибудь заметите.')] for title,text in sections: y=para(title,20*mm,y,170*mm,q)-2*mm y=para(text,20*mm,y,170*mm,body)-5*mm # closing c.setFillColor(yellow); c.roundRect(20*mm,22*mm,170*mm,21*mm,5*mm,fill=1,stroke=0) closing=Paragraph('<b>Итак, чего же вы ждёте?</b> Охота за НЛО - это очень весело, и никогда не знаешь: возможно, именно вы превратите научную фантастику в научный факт!',small) closing.wrapOn(c,158*mm,18*mm); closing.drawOn(c,26*mm,27*mm) footer(2); c.showPage() # Vocabulary page bg() c.setFillColor(purple); c.roundRect(17*mm,258*mm,176*mm,22*mm,5*mm,fill=1,stroke=0) p=Paragraph('Словарь: Check these words',h2); p.wrapOn(c,160*mm,20*mm); p.drawOn(c,25*mm,263*mm) words=[ ('fascinated','очарованный, увлечённый'),('strange object','странный объект'),('planet','планета'),('meteor','метеор'),('military plane','военный самолёт'),('curious','любознательный'),('explanation','объяснение'),('involve','включать в себя'),('mostly','в основном'),('investigate','исследовать, расследовать'),('sighting','наблюдение, случай обнаружения'),('interview witness','опрашивать свидетеля'),('analyse','анализировать'),('hotspot','место частых наблюдений'),('rooftop','крыша'),('hillside','склон холма'),('record information','записывать информацию'),('camcorder','видеокамера'),('telescope','телескоп'),('device','устройство, прибор'),('take up','заняться, начать заниматься'),('enthusiastic','увлечённый, полный энтузиазма'),('patient','терпеливый'),('find out','выяснить, узнать'),('spot','заметить, увидеть')] data=[[Paragraph('<b>English</b>',small),Paragraph('<b>Русский</b>',small),Paragraph('<b>English</b>',small),Paragraph('<b>Русский</b>',small)]] for i in range(0,len(words),2): a,b=words[i]; c1,d=words[i+1] if i+1<len(words) else ('','') data.append([Paragraph(a,small),Paragraph(b,small),Paragraph(c1,small),Paragraph(d,small)]) t=Table(data,colWidths=[35*mm,54*mm,35*mm,54*mm],rowHeights=[9*mm]+[9.4*mm]*13) t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),yellow),('GRID',(0,0),(-1,-1),0.35,HexColor('#A9CBD8')),('BACKGROUND',(0,1),(-1,-1),white),('BACKGROUND',(0,1),(-1,-1),HexColor('#FFFFFF')),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),3*mm),('RIGHTPADDING',(0,0),(-1,-1),2*mm),('TOPPADDING',(0,0),(-1,-1),1.3*mm),('BOTTOMPADDING',(0,0),(-1,-1),1.3*mm),('BACKGROUND',(0,2),(-1,2),HexColor('#EDF9FC')),('BACKGROUND',(0,4),(-1,4),HexColor('#EDF9FC')),('BACKGROUND',(0,6),(-1,6),HexColor('#EDF9FC')),('BACKGROUND',(0,8),(-1,8),HexColor('#EDF9FC')),('BACKGROUND',(0,10),(-1,10),HexColor('#EDF9FC')),('BACKGROUND',(0,12),(-1,12),HexColor('#EDF9FC'))])) t.wrapOn(c,176*mm,200*mm); t.drawOn(c,17*mm,115*mm) # practice box c.setFillColor(dark); c.roundRect(17*mm,25*mm,176*mm,72*mm,6*mm,fill=1,stroke=0) c.setFillColor(white); c.setFont('NotoB',14); c.drawString(25*mm,86*mm,'Попробуйте сказать по-русски') pr=['1. I am curious about UFOs.','2. We investigate UFO sightings.','3. You need to be patient and enthusiastic.'] y=74*mm for s in pr: c.setFillColor(yellow); c.circle(28*mm,y+1*mm,3*mm,fill=1,stroke=0) c.setFillColor(white); c.setFont('Noto',10.2); c.drawString(36*mm,y-2*mm,s) c.setStrokeColor(HexColor('#87C9D8')); c.line(36*mm,y-7*mm,177*mm,y-7*mm) y-=17*mm footer(3); c.save() print(out) PY python - <<'PY' from pypdf import PdfReader p='/tmp/workspace/ufo-handbook/output/UFO_Hunting_Russian_Handbook.pdf' r=PdfReader(p) print('pages',len(r.pages),'bytes',__import__('os').path.getsize(p)) print(r.pages[1].extract_text()[:150]) PY
fc-match -v "Noto Sans" | sed -n '1,4p'
fc-match -f '%{file}\n' "Noto Sans" && fc-match -f '%{file}\n' "Noto Sans:style=Bold"
python - <<'PY' from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4 from reportlab.lib.colors import HexColor,white from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont from reportlab.platypus import Paragraph,Table,TableStyle from reportlab.lib.styles import ParagraphStyle from reportlab.lib.enums import TA_CENTER from reportlab.lib.units import mm import os base='/tmp/workspace/ufo-handbook'; os.makedirs(base+'/output',exist_ok=True) pdfmetrics.registerFont(TTFont('Noto','/usr/share/fonts/google-noto-vf/NotoSans[wght].ttf')) pdfmetrics.registerFont(TTFont('NotoB','/usr/share/fonts/google-noto-vf/NotoSans[wght].ttf')) out=base+'/output/UFO_Hunting_Russian_Handbook.pdf'; W,H=A4 c=canvas.Canvas(out,pagesize=A4); c.setTitle('Охотник за НЛО - Русский учебный справочник') blue=HexColor('#11A9D5'); dark=HexColor('#183A63'); yellow=HexColor('#FFD43B'); orange=HexColor('#FF7A32'); mint=HexColor('#DDF6F3'); purple=HexColor('#7257B8'); pale=HexColor('#F6FAFE') def bg(): c.setFillColor(pale);c.rect(0,0,W,H,fill=1,stroke=0);c.setFillColor(blue);c.circle(W-20*mm,H-15*mm,35*mm,fill=1,stroke=0);c.setFillColor(HexColor('#BCECF7'));c.circle(18*mm,18*mm,22*mm,fill=1,stroke=0) def foot(n): c.setFillColor(dark);c.setFont('Noto',8);c.drawCentredString(W/2,9*mm,f'Охотник за НЛО • Русский учебный справочник • {n}') def p(txt,x,y,w,st): q=Paragraph(txt,st);_,h=q.wrap(w,1000);q.drawOn(c,x,y-h);return y-h h2=ParagraphStyle('h2',fontName='NotoB',fontSize=15,leading=19,textColor=dark) body=ParagraphStyle('body',fontName='Noto',fontSize=10.3,leading=14.5,textColor=dark) question=ParagraphStyle('question',fontName='NotoB',fontSize=11,leading=14.5,textColor=purple) small=ParagraphStyle('small',fontName='Noto',fontSize=8.7,leading=11.5,textColor=dark) # cover bg();c.setFillColor(dark);c.roundRect(22*mm,183*mm,166*mm,75*mm,8*mm,fill=1,stroke=0);c.setFillColor(HexColor('#C8F5F4'));c.ellipse(68*mm,211*mm,142*mm,229*mm,fill=1,stroke=0);c.setFillColor(HexColor('#79D8DF'));c.ellipse(91*mm,222*mm,119*mm,242*mm,fill=1,stroke=0);c.setFillColor(white);c.setFont('NotoB',26);c.drawCentredString(W/2,246*mm,'ОХОТНИК ЗА НЛО!');c.setFont('Noto',12);c.drawCentredString(W/2,237*mm,'Русский перевод и словарь') c.setFillColor(white);c.roundRect(35*mm,157*mm,140*mm,16*mm,8*mm,fill=1,stroke=0);c.setFillColor(dark);c.setFont('NotoB',10);c.drawCentredString(W/2,163*mm,'Прочитайте интервью. Выучите новые слова. Расскажите о хобби.') c.setFillColor(mint);c.roundRect(24*mm,53*mm,162*mm,84*mm,7*mm,fill=1,stroke=0);c.setFillColor(dark);c.setFont('NotoB',15);c.drawString(34*mm,128*mm,'Что внутри?') for i,t in enumerate(['Перевод текста об увлечении Ника Портера.','Ключевые слова: английский - русский.','Мини-задания для устной практики.']): y=(111-i*20)*mm;c.setFillColor(orange);c.circle(40*mm,y+1*mm,5*mm,fill=1,stroke=0);c.setFillColor(white);c.setFont('NotoB',10);c.drawCentredString(40*mm,y-2*mm,str(i+1));c.setFillColor(dark);c.setFont('Noto',11);c.drawString(51*mm,y-2*mm,t) foot(1);c.showPage() # translation bg();c.setFillColor(dark);c.roundRect(17*mm,258*mm,176*mm,22*mm,5*mm,fill=1,stroke=0);p('Перевод: интервью с охотником за НЛО',25*mm,274*mm,160*mm,h2);y=250*mm intro='Странный объект движется по небу. Это птица? Самолёт? Или НЛО? Ника Портера увлекает возможность существования жизни на других планетах, поэтому в свободное время он пытается выяснить, что это за объекты. Мы задали ему несколько вопросов о его необычном хобби.' y=p(intro,20*mm,y,170*mm,body)-5*mm sections=[('Итак, Ник, почему ты так интересуешься НЛО?','Ну, тысячи людей по всему миру видят в небе странные объекты. Большинство из них - это планеты, метеоры или военные самолёты. Но как насчёт остальных? Я очень любознательный человек, поэтому хочу найти объяснение!'),('А что именно включает в себя твоё хобби?','Ну, я основал клуб НЛО, и мы в основном исследуем случаи наблюдения НЛО. Мы опрашиваем свидетелей и анализируем видео и фотографии. Иногда мы также отправляемся в место, где НЛО наблюдают особенно часто. Сегодня вечером мы как раз идём туда. Обычно мы забираемся высоко на крышу или на склон холма. Если мы видим что-то странное, мы записываем как можно больше информации! Мы используем видеокамеры, фотоаппараты, телескопы и другие устройства. Затем мы анализируем информацию на наших ноутбуках.'),('Что бы ты посоветовал читателям, которые хотят заняться поиском НЛО?','Охотником за НЛО может стать любой. Нужно только быть увлечённым и терпеливым. Вам нужно вступить в местный клуб НЛО. Так вы узнаете, где находятся места частых наблюдений НЛО, и рядом будут свидетели, если вы что-нибудь заметите.')] for a,b in sections:y=p(a,20*mm,y,170*mm,question)-2*mm;y=p(b,20*mm,y,170*mm,body)-5*mm c.setFillColor(yellow);c.roundRect(20*mm,22*mm,170*mm,21*mm,5*mm,fill=1,stroke=0);p('<b>Итак, чего же вы ждёте?</b> Охота за НЛО - это очень весело, и никогда не знаешь: возможно, именно вы превратите научную фантастику в научный факт!',26*mm,38*mm,158*mm,small);foot(2);c.showPage() # vocab bg();c.setFillColor(purple);c.roundRect(17*mm,258*mm,176*mm,22*mm,5*mm,fill=1,stroke=0);p('Словарь: Check these words',25*mm,274*mm,160*mm,h2) words=[('fascinated','очарованный, увлечённый'),('strange object','странный объект'),('planet','планета'),('meteor','метеор'),('military plane','военный самолёт'),('curious','любознательный'),('explanation','объяснение'),('involve','включать в себя'),('mostly','в основном'),('investigate','исследовать, расследовать'),('sighting','наблюдение, случай обнаружения'),('interview witness','опрашивать свидетеля'),('analyse','анализировать'),('hotspot','место частых наблюдений'),('rooftop','крыша'),('hillside','склон холма'),('record information','записывать информацию'),('camcorder','видеокамера'),('telescope','телескоп'),('device','устройство, прибор'),('take up','заняться, начать заниматься'),('enthusiastic','увлечённый, полный энтузиазма'),('patient','терпеливый'),('find out','выяснить, узнать'),('spot','заметить, увидеть')] data=[[Paragraph('<b>English</b>',small),Paragraph('<b>Русский</b>',small),Paragraph('<b>English</b>',small),Paragraph('<b>Русский</b>',small)]] for i in range(0,len(words),2): a,b=words[i];d,e=words[i+1] if i+1<len(words) else ('','');data.append([Paragraph(a,small),Paragraph(b,small),Paragraph(d,small),Paragraph(e,small)]) t=Table(data,colWidths=[35*mm,54*mm,35*mm,54*mm]);t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),yellow),('GRID',(0,0),(-1,-1),.35,HexColor('#A9CBD8')),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),2.5*mm),('RIGHTPADDING',(0,0),(-1,-1),2*mm),('TOPPADDING',(0,0),(-1,-1),1.5*mm),('BOTTOMPADDING',(0,0),(-1,-1),1.5*mm),('ROWBACKGROUNDS',(0,1),(-1,-1),[white,HexColor('#EDF9FC')])])) t.wrapOn(c,176*mm,200*mm);t.drawOn(c,17*mm,114*mm) c.setFillColor(dark);c.roundRect(17*mm,25*mm,176*mm,71*mm,6*mm,fill=1,stroke=0);c.setFillColor(white);c.setFont('NotoB',14);c.drawString(25*mm,85*mm,'Попробуйте сказать по-русски') for i,s in enumerate(['1. I am curious about UFOs.','2. We investigate UFO sightings.','3. You need to be patient and enthusiastic.']): yy=(73-i*17)*mm;c.setFillColor(yellow);c.circle(28*mm,yy+1*mm,3*mm,fill=1,stroke=0);c.setFillColor(white);c.setFont('Noto',10);c.drawString(36*mm,yy-2*mm,s);c.setStrokeColor(HexColor('#87C9D8'));c.line(36*mm,yy-7*mm,177*mm,yy-7*mm) foot(3);c.save();print(out) PY python - <<'PY' from pypdf import PdfReader import os f='/tmp/workspace/ufo-handbook/output/UFO_Hunting_Russian_Handbook.pdf';r=PdfReader(f) print(len(r.pages),os.path.getsize(f),r.pages[2].extract_text()[:120]) PY
UFO Hunting Russian Handbook
PDF Document · PDF