Please create a colorful handbook pdf in the similar way as file attached but on different proficiency C1-C2 CAE ,there must contain different pictures other than the file attached and different explanation and description of the photos to their questions created by you as examples shown in the file attached,also write list of words which are difficult with their meanings in short.I need to help my student with how to describe pictures and help him improve his speaking skills.

Reading File
Browsing Directory

~/

Reading File
Running Command

python -c "from pypdf import PdfReader; p='/tmp/workspace/attachments/9e658c01-568c-4567-a151-d5964cfea38d/DOC-20240826-WA0007..pdf'; r=PdfReader(p); print('PAGES',len(r.pages)); [print('---PAGE',i+1,'---\n', (pg.extract_text() or '')[:5000]) for i,pg in enumerate(r.pages)]"

I’ve reviewed the reference: it uses a clear exam prompt, a timed model response, a short follow-up answer, and a vocabulary box. I’ll retain that useful teaching structure but create fully original C1-C2 CAE material and visuals.
Generating Image

A realistic editorial photograph of a young urban planner in a quiet city park holding a tablet and pointing at a sustainable neighbourhood model, cyclists and trees in the background, no text

Generating Image

A realistic editorial photograph of a community volunteer in a busy repair cafe helping an older person fix a small household appliance, tools and reused materials visible, no text

Generating Image

A realistic editorial photograph of a university student studying alone in a bright public library with a laptop, notes, large windows, calm focused atmosphere, no text

Generating Image

A realistic editorial photograph of diverse young adults collaborating around a table in a lively co-working space, discussing ideas with sketches and laptops, no text

Generating Image

A realistic editorial photograph of a person buying fresh vegetables directly from a local farmer at an outdoor market, reusable bags and seasonal produce, no text

Generating Image

A realistic editorial photograph of a shopper collecting a grocery order from a smart locker outside a supermarket using a mobile phone, no text

Generating Image

A realistic editorial photograph of a scientist operating a remote underwater research vehicle in a marine laboratory with data screens, no visible text

Generating Image

A realistic editorial photograph of a conservation researcher recording observations beside a coastal wetland at sunrise, binoculars and field notebook, no text

Generating Image

A realistic editorial photograph of friends attending an immersive outdoor arts festival with a small live performance and interactive light installation, no text

Generating Image

A realistic editorial photograph of a person enjoying a quiet museum exhibition alone, studying a contemporary artwork with a guide leaflet, no text

Generating Image

A realistic editorial photograph of a commuter travelling by electric bicycle on a protected cycle lane in a modern city, morning light, no text

Generating Image

A realistic editorial photograph of passengers waiting at an electric suburban train platform with luggage, contemporary station, no text

Searching the Web

Cambridge C1 Advanced Speaking Part 2 compare photographs official format

Running Command

mkdir -p "/tmp/workspace/cae-c1c2-picture-speaking-handbook/assets" "/tmp/workspace/cae-c1c2-picture-speaking-handbook/src" "/tmp/workspace/cae-c1c2-picture-speaking-handbook/output" && python -c "import requests; urls=['https://cdn.orris.care/image-gen/c555653cd0b84abeb98378ba91995442.png','https://cdn.orris.care/image-gen/6711e69172404ef996ee555151b4c927.png','https://cdn.orris.care/image-gen/e650c169f83742629b50385d2263c277.png','https://cdn.orris.care/image-gen/64f18ba8944e44d08d48a82b10a077df.png','https://cdn.orris.care/image-gen/48b668c1d8974b68b1b02502ea6c27b7.png','https://cdn.orris.care/image-gen/fd6de18af658416ea4213991766e3f6f.png','https://cdn.orris.care/image-gen/c67deb931dbd4a13adc8f088c313d114.png','https://cdn.orris.care/image-gen/7ae47a0da2414948babbf702f439b875.png','https://cdn.orris.care/image-gen/968dc7d6414042c5b5cc21ebe6670f30.png','https://cdn.orris.care/image-gen/818e00e5af984a059ed38bfef7ded33b.png','https://cdn.orris.care/image-gen/200e19a00fd5411d8e8534123e29e8d2.png','https://cdn.orris.care/image-gen/4225c31c32b148cd9dd881b3ed05d2f2.png']; import os; [open(f'/tmp/workspace/cae-c1c2-picture-speaking-handbook/assets/img{i+1}.png','wb').write(requests.get(u,timeout=30).content) for i,u in enumerate(urls)]" && ls -lh "/tmp/workspace/cae-c1c2-picture-speaking-handbook/assets"

Writing File

~/cae-c1c2-picture-speaking-handbook/src/create_handbook.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.colors import HexColor
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, Image, PageBreak, KeepTogether
from reportlab.pdfbase.pdfmetrics import stringWidth
from reportlab.lib.utils import ImageReader
from PIL import Image as PILImage
import os

ROOT = '/tmp/workspace/cae-c1c2-picture-speaking-handbook'
ASSETS = os.path.join(ROOT, 'assets')
OUT = os.path.join(ROOT, 'output', 'CAE_C1-C2_Picture_Speaking_Handbook.pdf')

INK=HexColor('#18233A'); BLUE=HexColor('#2554C7'); TEAL=HexColor('#00A6A6'); CORAL=HexColor('#F05D5E'); GOLD=HexColor('#F3B63C'); LILAC=HexColor('#7856C8'); PALE=HexColor('#F4F7FC'); MINT=HexColor('#E6F7F3'); PINK=HexColor('#FFF0F0'); GREY=HexColor('#556176')
styles=getSampleStyleSheet()
styles.add(ParagraphStyle(name='CoverTitle', parent=styles['Title'], fontName='Helvetica-Bold', fontSize=30, leading=34, textColor=INK, alignment=TA_CENTER, spaceAfter=10))
styles.add(ParagraphStyle(name='CoverSub', parent=styles['Normal'], fontName='Helvetica', fontSize=13, leading=18, textColor=GREY, alignment=TA_CENTER))
styles.add(ParagraphStyle(name='H1x', parent=styles['Heading1'], fontName='Helvetica-Bold', fontSize=22, leading=26, textColor=INK, spaceAfter=8))
styles.add(ParagraphStyle(name='H2x', parent=styles['Heading2'], fontName='Helvetica-Bold', fontSize=12.5, leading=15, textColor=BLUE, spaceBefore=5, spaceAfter=4))
styles.add(ParagraphStyle(name='Bodyx', parent=styles['BodyText'], fontName='Helvetica', fontSize=9.2, leading=12.4, textColor=INK, spaceAfter=5))
styles.add(ParagraphStyle(name='Smallx', parent=styles['BodyText'], fontName='Helvetica', fontSize=7.8, leading=10.2, textColor=INK))
styles.add(ParagraphStyle(name='Tinyx', parent=styles['BodyText'], fontName='Helvetica', fontSize=7.2, leading=9, textColor=INK))
styles.add(ParagraphStyle(name='Prompt', parent=styles['BodyText'], fontName='Helvetica-Bold', fontSize=10, leading=13.2, textColor=INK))
styles.add(ParagraphStyle(name='Quote', parent=styles['BodyText'], fontName='Helvetica-Oblique', fontSize=9.1, leading=12.3, textColor=INK))
styles.add(ParagraphStyle(name='Caption', parent=styles['BodyText'], fontName='Helvetica-Bold', fontSize=7.6, leading=9.3, textColor=GREY, alignment=TA_CENTER))


def p(txt, style='Bodyx'): return Paragraph(txt, styles[style])
def badge(txt, color=BLUE):
    t=Table([[p(txt, 'Smallx')]], colWidths=[4.35*cm]); t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),color),('TEXTCOLOR',(0,0),(-1,-1),colors.white),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4),('VALIGN',(0,0),(-1,-1),'MIDDLE')])); return t

def image(path, width, height):
    im=PILImage.open(path); im.thumbnail((int(width*4),int(height*4)))
    tmp=path.replace('.png','_small.jpg'); im.convert('RGB').save(tmp, quality=84)
    x=Image(tmp,width=width,height=height,kind='proportional'); return x

def photo_pair(a,b, ca, cb):
    ia=image(os.path.join(ASSETS,a),8.15*cm,5.3*cm); ib=image(os.path.join(ASSETS,b),8.15*cm,5.3*cm)
    table=Table([[ia,ib],[p('PHOTO A: '+ca,'Caption'),p('PHOTO B: '+cb,'Caption')]], colWidths=[8.35*cm,8.35*cm], hAlign='CENTER')
    table.setStyle(TableStyle([('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),3),('RIGHTPADDING',(0,0),(-1,-1),3),('BOTTOMPADDING',(0,0),(-1,-1),3)]))
    return table

def colorbox(title, content, color):
    tb=Table([[p('<font color="#FFFFFF">'+title+'</font>','H2x')],[p(content,'Smallx')]], colWidths=[16.7*cm])
    tb.setStyle(TableStyle([('BACKGROUND',(0,0),(0,0),color),('BACKGROUND',(0,1),(0,1),PALE),('BOX',(0,0),(-1,-1),0.5,color),('LEFTPADDING',(0,0),(-1,-1),8),('RIGHTPADDING',(0,0),(-1,-1),8),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5)])); return tb

def footer(canvas,doc):
    canvas.saveState(); canvas.setStrokeColor(HexColor('#D9E1F2')); canvas.line(1.5*cm,1.15*cm,19.5*cm,1.15*cm)
    canvas.setFont('Helvetica',7.5); canvas.setFillColor(GREY); canvas.drawString(1.5*cm,.72*cm,'CAE C1-C2 Picture Speaking Handbook | Original classroom material')
    canvas.drawRightString(19.5*cm,.72*cm,str(doc.page)); canvas.restoreState()

def module(num,title,imgs,captions,task,focus,description,model,partner,vocab,challenge):
    story=[]
    story.append(badge('MODULE %02d  |  %s'%(num,title), [TEAL,CORAL,LILAC,GOLD,BLUE,TEAL][(num-1)%6]))
    story.append(Spacer(1,6)); story.append(photo_pair(imgs[0],imgs[1],captions[0],captions[1])); story.append(Spacer(1,6))
    story.append(colorbox('CAE-STYLE TASK | Speak for about 1 minute',task, BLUE))
    story.append(Spacer(1,5))
    col1=[p('<b>What a strong candidate notices</b>','H2x'),p(description,'Smallx'),p('<b>Language focus</b>','H2x'),p(focus,'Smallx')]
    col2=[p('<b>Model long turn</b>','H2x'),p(model,'Quote'),p('<b>Partner question | about 30 seconds</b>','H2x'),p(partner,'Smallx')]
    t=Table([[col1,col2]],colWidths=[8.2*cm,8.5*cm]); t.setStyle(TableStyle([('BACKGROUND',(0,0),(0,0),MINT),('BACKGROUND',(1,0),(1,0),PINK),('BOX',(0,0),(-1,-1),0.35,HexColor('#C5D0E5')),('INNERGRID',(0,0),(-1,-1),0.35,HexColor('#C5D0E5')),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5)])); story.append(t); story.append(Spacer(1,5))
    story.append(colorbox('DIFFICULT WORDS | short meanings',vocab,GOLD)); story.append(Spacer(1,4))
    story.append(p('<b>C1-C2 stretch:</b> '+challenge,'Smallx'))
    story.append(PageBreak()); return story

story=[]
# cover
story += [Spacer(1,1.7*cm), p('C1-C2 CAE', 'CoverTitle'), p('Picture Speaking Handbook','CoverTitle'), Spacer(1,4), p('Compare. Speculate. Evaluate. Speak with precision.','CoverSub'), Spacer(1,15)]
coverimg=image(os.path.join(ASSETS,'img4.png'),15.5*cm,8.7*cm); ct=Table([[coverimg]],colWidths=[16*cm],hAlign='CENTER'); ct.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),PALE),('BOX',(0,0),(-1,-1),1,TEAL),('LEFTPADDING',(0,0),(-1,-1),5),('RIGHTPADDING',(0,0),(-1,-1),5),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5)])); story.append(ct)
story += [Spacer(1,14),p('<b>For teachers and ambitious learners</b><br/>Six original visual tasks with model long turns, photo-reading notes, partner questions, sophisticated language, and mini vocabulary lists. Designed for Cambridge C1 Advanced speaking practice.','CoverSub'),Spacer(1,14),p('Use the photographs as prompts, not as a script. The aim is to connect what you see with a clear, reasoned answer to the question.','Smallx') ,PageBreak()]
# guide
story += [p('How to sound C1-C2 in Picture Speaking','H1x'),p('In C1 Advanced Part 2, the interlocutor gives each candidate three photographs. You select two, compare them and answer the written questions for about one minute. Your partner then comments briefly. This handbook uses pairs to make focused classroom practice easier.','Bodyx')]
steps=[['1. Frame the contrast','Both pictures deal with... but they present sharply different approaches to...'],['2. Compare, do not list','Link the images: whereas, by contrast, unlike, in both cases, the key distinction is...'],['3. Speculate responsibly','They may well be..., it is conceivable that..., judging by..., one could infer that...'],['4. Answer the task early','Give reasons, consequences and priorities, not only description.'],['5. Round off decisively','Overall, I would argue that... / On balance, the more compelling option is...']]
t=Table([[p('<b>'+a+'</b>','Smallx'),p(b,'Smallx')] for a,b in steps],colWidths=[5.0*cm,11.7*cm]);t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),PALE),('ROWBACKGROUNDS',(0,0),(-1,-1),[MINT,colors.white]),('GRID',(0,0),(-1,-1),.35,HexColor('#CFD8E8')),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),7)])); story += [t,Spacer(1,10),colorbox('60-SECOND ROUTE','0-10 sec: identify the shared theme and the major contrast. 10-30 sec: compare details that matter. 30-50 sec: speculate and answer both questions. 50-60 sec: reach a balanced judgement.',CORAL),Spacer(1,8),p('<b>Teacher tip:</b> Ask the student to cover the model answer first. Time their own answer, record it, then compare it with the model for organisation and range, not for memorisation.','Bodyx'),Spacer(1,8),p('<b>Avoid:</b> describing every object, inventing facts with certainty, repeating “I think”, or spending 40 seconds on Photo A and barely mentioning Photo B.','Bodyx'),PageBreak()]

story += module(1,'Shaping sustainable cities',('img1.png','img2.png'),('A planner presenting a green urban proposal','A volunteer repairing an appliance with a resident'),'Compare the photographs and say <b>how these people might be contributing to a more sustainable community</b>, and <b>which activity is likely to have the more immediate effect on local people</b>.','<b>Useful grammar:</b> “The planner appears to be advocating a long-term scheme, whereas the volunteer is addressing an immediate, practical need.”<br/><b>High-level link:</b> “This may be less visible, but its cumulative impact could be substantial.”','Photo A suggests strategic, long-range decision-making: a public space, a digital plan and transport infrastructure. Photo B is more hands-on and interpersonal, with repair tools, an older resident and an object being kept in use.','Both pictures show people making sustainability part of everyday life, although they are operating at very different scales. In the first image, the planner seems to be outlining a greener neighbourhood, perhaps one designed to reduce car dependency and make public space more attractive. The emphasis is clearly on prevention: if the layout is well conceived from the outset, residents may be encouraged to cycle, walk and spend time locally. By contrast, the second photograph captures a more modest but highly tangible form of action. Rather than replacing a faulty appliance, the volunteer is helping somebody repair it, which could prevent unnecessary waste and save the owner money. In terms of an immediate effect, I would probably choose the repair cafe. The person receiving help can see the benefit straight away, and the social interaction may strengthen community ties. That said, the urban plan could ultimately affect far more people, even if its results take years to materialise.','Which of the two activities would be easier for ordinary residents to join in with? Explain your choice in two or three developed sentences.','<b>car dependency</b> - reliance on cars; <b>conceived</b> - planned or formed as an idea; <b>tangible</b> - clear and real; <b>materialise</b> - become real; <b>cumulative</b> - increasing gradually over time.','Replace one simple comparison with a concessive clause: “Although..., ...”.')
story += module(2,'Learning: solitude or collaboration?',('img3.png','img4.png'),('A student working independently in a library','Students developing ideas together in a co-working space'),'Compare the photographs and say <b>what each learning environment may offer students</b>, and <b>which student might find it easier to remain motivated</b>.','<b>Speculation:</b> “The student may be trying to eliminate distractions.” “The group is likely to benefit from a rapid exchange of feedback.”<br/><b>Evaluation:</b> “That advantage is conditional on the group remaining focused.”','The library image communicates concentration and self-discipline through the quiet setting, individual workstation and organised notes. The co-working scene conveys energy, feedback and shared problem-solving, but it also contains potential distractions.','The two settings represent contrasting routes to effective learning. In the library, the student is working in an environment deliberately designed for sustained attention. With few obvious distractions and no need to negotiate with others, she may be able to tackle a demanding piece of reading or organise her ideas at her own pace. The co-working space, on the other hand, appears far more dynamic. The students are exchanging ideas around a shared table, so they may be testing assumptions, clarifying misunderstandings and generating solutions that an individual would not have reached alone. As for motivation, I suspect the group could have an advantage because people tend to persevere when they feel accountable to others. However, this depends on the task. For deep, independent work, the library student may remain more motivated precisely because the atmosphere is calm and purposeful. So I would not say one environment is universally superior; each suits a different stage of learning.','Which environment would be more suitable for preparing a creative presentation, and why?','<b>sustained</b> - continuing for a long time; <b>negotiate</b> - discuss to reach agreement; <b>assumption</b> - something accepted without proof; <b>accountable</b> - responsible to others; <b>purposeful</b> - having a clear aim.','Use “provided that” to state one condition for successful group work.')
story += module(3,'Making everyday consumption smarter',('img5.png','img6.png'),('Buying seasonal food directly from a farmer','Collecting an online grocery order from a smart locker'),'Compare the photographs and say <b>why consumers might choose these ways of shopping</b>, and <b>which approach is more likely to change people’s habits</b>.','<b>Nuance:</b> “Convenience may be the decisive factor for time-pressed customers.”<br/><b>Comparison:</b> “In the former image..., while the latter prioritises...”','Photo A foregrounds direct contact, sensory choice and seasonal produce. Photo B foregrounds speed, digital convenience and a controlled collection point. Neither image proves the food is better, so keep claims cautious.','At first sight, these photographs show two opposing attitudes to food shopping. In the market scene, the customer is speaking directly to the producer and choosing visible, seasonal vegetables. This may appeal to people who value provenance, want to support local businesses or simply enjoy the social side of shopping. The locker service is much less personal, but it responds to a different priority: efficiency. A customer can place an order in advance and collect it at a convenient moment, which is particularly attractive for people with unpredictable schedules. I think the market is more likely to alter long-term habits because it makes the origin of food more noticeable. If shoppers repeatedly meet growers and see what is in season, they may become less inclined to buy imported products automatically. Nevertheless, the collection locker could also reduce impulsive purchases, since the shopper has planned the order beforehand. Its effect is less emotional, but potentially quite practical.','Which shopper is more likely to feel satisfied with the experience itself, not only with the food?','<b>provenance</b> - where something comes from; <b>time-pressed</b> - having very little time; <b>unpredictable</b> - not easy to know in advance; <b>inclined</b> - likely or willing; <b>impulsive</b> - done without planning.','State one drawback of each method without weakening your main judgement.')
story += module(4,'Exploring fragile environments',('img7.png','img8.png'),('A scientist controlling underwater research equipment','A researcher observing a coastal wetland in the field'),'Compare the photographs and say <b>what difficulties the researchers may encounter</b>, and <b>which type of work is likely to provide more reliable information</b>.','<b>Precision:</b> “The equipment may generate detailed data, although it is dependent on technical reliability.”<br/><b>Hedging:</b> “It would be risky to assume that one source is inherently more trustworthy.”','The laboratory image suggests controlled technology, distance and data interpretation. The field image suggests changing weather, physical access and first-hand ecological observation. A strong answer weighs trade-offs instead of declaring a winner too quickly.','Both researchers appear to be investigating environments that are difficult to observe directly, but their working conditions could hardly be more different. The scientist in the laboratory is using a remotely operated vehicle, which may allow data to be gathered from depths that would be dangerous or impossible for divers. The drawback is that the researcher is relying on screens, sensors and a complex piece of equipment. A technical failure or a poorly chosen camera angle could limit what is discovered. In the wetland photograph, the researcher is physically present and may be able to notice subtle features, such as animal behaviour or changes in vegetation, that a device might miss. Yet fieldwork is vulnerable to weather, tides and limited access. In terms of reliability, I would argue that neither method should stand alone. The most dependable findings would probably come from combining controlled technological measurements with repeated observations on site.','Which researcher is likely to need greater patience? Give a reason connected with the photograph.','<b>remotely operated</b> - controlled from far away; <b>subtle</b> - small but important; <b>vulnerable to</b> - easily affected by; <b>dependable</b> - reliable; <b>on site</b> - at the actual place.','Use a balanced structure: “Neither... nor...” or “not so much... as...”.')
story += module(5,'Experiencing culture',('img9.png','img10.png'),('Friends at an interactive outdoor arts event','A visitor reflecting alone in a museum exhibition'),'Compare the photographs and say <b>what people might gain from these cultural experiences</b>, and <b>which event could leave a more lasting impression</b>.','<b>Abstract nouns:</b> “a sense of belonging”, “intellectual engagement”, “shared anticipation”, “personal interpretation”.<br/><b>Contrast:</b> “One is collective and spontaneous; the other is private and contemplative.”','The festival photo gives evidence of shared energy, performance and participation. The museum photo gives evidence of quiet attention and personal reflection. Do not assume that one audience is more cultured than the other.','The photographs illustrate two very different ways of engaging with culture. The outdoor event seems highly collective: the visitors are surrounded by music, light and other people, so the experience may create a strong sense of belonging. Because it is lively and unpredictable, it could appeal especially to those who see culture as something to take part in rather than merely observe. The museum visitor is having a quieter encounter with art. She appears to be studying the work carefully, perhaps using the leaflet to form her own interpretation. This may offer a deeper intellectual engagement, since she has time to notice details without competing noise or pressure from a crowd. As for which experience is more memorable, I would hesitate to generalise. A festival can be memorable because of its shared excitement and atmosphere, whereas a single artwork can remain with somebody for years if it connects with a personal memory or idea. The lasting impression depends more on the individual than on the venue.','Which of these experiences would be more accessible to someone who feels uncomfortable in crowds?','<b>collective</b> - shared by a group; <b>contemplative</b> - thoughtful and calm; <b>encounter</b> - an experience of meeting something; <b>venue</b> - place where an event happens; <b>generalise</b> - make a broad statement.','Add a counterargument beginning “Even so, ...”.')
story += module(6,'Choosing lower-impact travel',('img11.png','img12.png'),('A commuter using an electric bicycle','Passengers waiting for an electric train'),'Compare the photographs and say <b>why these travellers may have chosen this form of transport</b>, and <b>which option could be more realistic for most people</b>.','<b>Cause and effect:</b> “Its practicality is shaped by distance, infrastructure and weather.”<br/><b>Judgement:</b> “The train is arguably more inclusive, even if it offers less door-to-door flexibility.”','The bicycle image suggests autonomy, exercise and a protected lane. The train image suggests shared infrastructure, longer distances and varied passengers. “More realistic” requires consideration of different needs, not just personal preference.','Both images portray alternatives to private car use, yet they solve different transport problems. The cyclist may have chosen an electric bike because it offers independence and can make a short commute both quicker and more active. The protected lane is significant: without safe infrastructure, many people would be reluctant to cycle alongside traffic, regardless of the environmental benefits. The train passengers have made a more collective choice. Rail can carry large numbers of people over greater distances, and it may be particularly useful for commuters who cannot cycle because of age, disability, weather or the amount they need to carry. For most people, I think the train is the more realistic option, provided the service is frequent and affordable. It does not require physical fitness or secure bicycle storage, and it can connect whole towns. However, for short urban journeys, the bicycle may be the more flexible and enjoyable solution.','Which traveller is more dependent on public investment? Explain your answer.','<b>infrastructure</b> - basic systems such as roads and rail; <b>reluctant</b> - unwilling or hesitant; <b>collective</b> - involving a group; <b>inclusive</b> - suitable for many different people; <b>door-to-door</b> - directly from start to destination.','Finish with a qualified conclusion using “provided that”.')
# final page
story += [p('Reusable C1-C2 language bank','H1x'),p('Use these naturally. A high score comes from clear communication, not from inserting every expression.','Bodyx')]
rows=[['To compare','Both images revolve around... / The most striking contrast is... / Whereas Photo A..., Photo B...'],['To speculate','It may well be the case that... / One could infer that... / They seem to be on the verge of...'],['To evaluate','What makes this option compelling is... / Its main limitation is... / This is only advantageous if...'],['To give a balanced view','Granted, ... However, ... / Even though..., it would be simplistic to assume...'],['To conclude','On balance, I would argue that... / Ultimately, the deciding factor is likely to be...']]
t=Table([[p('<b>'+a+'</b>','Smallx'),p(b,'Smallx')] for a,b in rows],colWidths=[4.4*cm,12.3*cm]);t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),PALE),('ROWBACKGROUNDS',(0,0),(-1,-1),[MINT,colors.white]),('GRID',(0,0),(-1,-1),.35,HexColor('#CFD8E8')),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),7)]));story += [t,Spacer(1,10),colorbox('SELF-CHECK AFTER EACH ANSWER','Did I compare rather than describe? Did I answer both questions? Did I use at least two careful speculative phrases? Did I develop my preference with a reason or consequence? Did I finish within about one minute?',TEAL),Spacer(1,10),p('<b>Practice routine:</b> 1) Cover the model. 2) Speak for 60 seconds. 3) Record yourself. 4) Listen once for content and once for language. 5) Repeat the same task, replacing vague words such as “nice”, “good”, “bad” and “things” with precise alternatives.','Bodyx'),Spacer(1,12),p('Created as original practice material. The generated photographs are illustrative prompts and are intentionally different from the attached reference document. The examination format summary is based on Cambridge English guidance.','Tinyx')]

doc=SimpleDocTemplate(OUT,pagesize=A4,rightMargin=1.5*cm,leftMargin=1.5*cm,topMargin=1.25*cm,bottomMargin=1.45*cm,title='C1-C2 CAE Picture Speaking Handbook',author='Orris')
doc.build(story,onFirstPage=footer,onLaterPages=footer)
print(OUT)
Running Command

python "/tmp/workspace/cae-c1c2-picture-speaking-handbook/src/create_handbook.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/cae-c1c2-picture-speaking-handbook/output/CAE_C1-C2_Picture_Speaking_Handbook.pdf'; r=PdfReader(p); print('pages',len(r.pages),'size',__import__('os').path.getsize(p)); print(r.pages[0].extract_text()[:500]); print(r.pages[-1].extract_text()[:400])"

Reading File
Running Command

python -c "import fitz; p='/tmp/workspace/cae-c1c2-picture-speaking-handbook/output/CAE_C1-C2_Picture_Speaking_Handbook.pdf'; d=fitz.open(p); pix=d[2].get_pixmap(matrix=fitz.Matrix(1,1),alpha=False); pix.save('/tmp/workspace/cae-c1c2-picture-speaking-handbook/output/page3_preview.png'); print('rendered',pix.width,pix.height)"

Running Command

python -c "from pypdf import PdfReader; p='/tmp/workspace/cae-c1c2-picture-speaking-handbook/output/CAE_C1-C2_Picture_Speaking_Handbook.pdf'; r=PdfReader(p); [print('PAGE',i+1,'chars',len(pg.extract_text() or ''),'tail:',(pg.extract_text() or '')[-120:].replace('\\n',' | ')) for i,pg in enumerate(r.pages)]"

Created a colorful, original 9-page C1-C2 CAE Picture Speaking Handbook.
It includes:
  • 6 original photo comparison tasks with newly generated visuals
  • CAE-style one-minute prompts
  • Advanced model answers
  • Partner follow-up questions
  • Guidance on comparing, speculating and evaluating
  • Short difficult-word glossaries for every module
  • A reusable C1-C2 language bank and self-check routine

CAE C1 C2 Picture Speaking Handbook

PDF Document · PDF

Please make some necessary changes in the colorful handbook which you have created, firstly you have created only 6 module which are amazing I like your work, please create 24 more such modules Secondly also add answers to section for partners questions as well . Thirdly the section " model long turn" should be comparatively more consise and short as it too long for student to speak and do add vocabulary words and phrases, idioms for C1 advance proficiency, and don't forget to write their meanings under each module as you did before. Fourthly change is that please mention a light blue box in the corner of every module where you help student by writing stepwise steps for answering and describing the photos for example, at start speak about backgrounds, people wearing, actions happening, something strange noticable etc , it's just an example you please decide by yourself what's better for my student to develop his speaking skills.

Reading File
Browsing Directory

~/

Running Command

python -c "from pypdf import PdfReader; p='/tmp/workspace/attachments/9e658c01-568c-4567-a151-d5964cfea38d/DOC-20260920-WA0002.pdf'; r=PdfReader(p); print('PAGES',len(r.pages)); print((r.pages[0].extract_text() or '')[:2500]); print('LAST:',(r.pages[-1].extract_text() or '')[:1200])"

Browsing Directory

~/cae-c1c2-picture-speaking-handbook

Reading File
Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a young chef preparing a refined dish in a professional restaurant kitchen. Right: a parent and child cooking a simple meal together in a home kitchen.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: passengers using a self-service airport check-in kiosk with carry-on bags. Right: a family waiting at a rural bus stop in light rain.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a person in a quiet home office taking part in a video interview. Right: a candidate speaking to a panel in a formal interview room.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: teenagers planting trees together in an urban community garden. Right: a lone walker collecting litter from a beach at dawn.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a family reading a printed travel map at a table. Right: a traveller navigating a city street with a smartphone map.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a young athlete training alone on an outdoor running track. Right: a mixed team celebrating after a close basketball game.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a musician practising violin alone in a small studio. Right: a packed audience watching a live jazz band in a club.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a university student borrowing a physical book from an old library. Right: a student reading an e-book on a tablet on a train.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: neighbours sharing tools at a lending library. Right: a customer buying a new power tool in a large hardware store.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: friends hiking on a misty mountain trail. Right: friends relaxing at a coastal resort beside a pool.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a doctor explaining a scan to a patient in a clinic. Right: a person using a health-monitoring app on a smartphone at home.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a child building a cardboard model in a school classroom. Right: a child using a virtual reality headset in a science museum.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: an elderly couple chatting with a barista in a neighbourhood cafe. Right: a commuter working alone in a busy coffee shop.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: volunteers distributing surplus food at a community pantry. Right: a supermarket worker sorting food for discount near closing time.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a photographer taking pictures of wildlife from a respectful distance. Right: tourists taking close selfies beside a wild animal warning sign.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: an apprentice repairing a bicycle in a workshop. Right: an engineer using a 3D printer in a modern design lab.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: people voting at a local community meeting by raising hands. Right: young adults discussing an online petition on a laptop.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a gardener tending a balcony filled with herbs. Right: shoppers choosing imported flowers in a florist shop.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a person mending a jacket with needle and thread. Right: a stylish shopper trying on new clothes in a boutique.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a group of students rehearsing a theatre scene on stage. Right: an individual practising a public speech in front of a mirror.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: coworkers brainstorming around a whiteboard in an office. Right: a worker concentrating on a complex task alone at a desk.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a young person speaking with a grandparent at a family photo album. Right: young friends exchanging messages on their phones at a cafe.

Generating Image

A realistic editorial photography diptych, no text, vertical split. Left: a person taking a pottery class in a small studio. Right: a person watching a recorded craft tutorial at home.

I’ve reviewed the reference: it uses a clear exam prompt, a timed model response, a short follow-up answer, and a vocabulary box. I’ll retain that useful teaching structure but create fully original C1-C2 CAE material and visuals.Created a colorful, original 9-page C1-C2 CAE Picture Speaking Handbook.
It includes:
  • 6 original photo comparison tasks with newly generated visuals
  • CAE-style one-minute prompts
  • Advanced model answers
  • Partner follow-up questions
  • Guidance on comparing, speculating and evaluating
  • Short difficult-word glossaries for every module
  • A reusable C1-C2 language bank and self-check routine

CAE C1 C2 Picture Speaking Handbook

PDF Document · PDF

!

Error calling model 'gemini-3-pro-image' (RESOURCE_EXHAUSTED): 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Resource has been exhausted (e.g. check quota).', 'status': 'RESOURCE_EXHAUSTED'}}

We encountered an error while processing your request. Please try again or reach out to us for help.

!

Error calling model 'gemini-3-pro-image' (RESOURCE_EXHAUSTED): 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Resource has been exhausted (e.g. check quota).', 'status': 'RESOURCE_EXHAUSTED'}}

We encountered an error while processing your request. Please try again or reach out to us for help.

Please try again

Please try again

Try again

Try again

This is a shared conversation. Sign in to Orris to start your own chat.