---
title: "Conas comhaid PDF a chruthú"
version: 6.0
locale: ga
source: https://docs.djangoproject.com/ga/6.0/howto/outputting-pdf/
canonical: https://djangodocs.dev/ga/6.0/howto/outputting-pdf/
---
# Conas comhaid PDF a chruthú

Míníonn an doiciméad seo conas comhaid PDF a aschur go dinimiciúil ag úsáid radhairc Django Is féidir é seo a dhéanamh leis an leabharlann PDF [ReportLab](https://docs.reportlab.com/) Python foinse oscailte den scoth.

Is é an buntáiste a bhaineann le comhaid PDF a ghiniúint go dinimiciúil ná gur féidir leat PDFanna saincheaptha a chruthú chun críocha éagsúla -- abair, d'úsáideoirí éagsúla nó do phíosaí éagsúla ábhair.

Mar shampla, úsáideadh Django ag [kusports.com](https://www2.kusports.com/) chun lúibíní comórtais NCAA saincheaptha, atá cairdiúil don phriontáil a ghiniúint, mar chomhaid PDF, do dhaoine a ghlac páirt i gcomórtas March Madness.

## Suiteáil ReportLab

\<reportlab\>Is é leabharlann ReportLab: pypi: ar fáil ar PyPI \`. Tá \`treoir úsáideora \`\_ (ní comhtharlach, comhad PDF) ar fáil le híoslódáil freisin. Is féidir leat ReportLab a shuiteáil le \`\`pip\`:

```console
$ python -m pip install reportlab
```

*Windows*

```doscon
...\> py -m pip install reportlab
```

Tástáil do shuiteáil trína iompórtáil san ateangaire idirghníomhach Python:

```pycon
>>> import reportlab
```

Mura n-ardaíonn an t-ordú sin aon earráidí, d'oibrigh an tsuiteáil.

## Scríobh do thuairim

Is é an eochair chun PDFanna a ghiniúint go dinimiciúil le Django ná go ngníomhaíonn an API ReportLab ar rudaí cosúil le comhad, agus glacann rudaí djangos:class: ~django.http.FileResponse le rudaí cosúil le comhad.

Seo sampla “Hello World”:

```
import io
from django.http import FileResponse
from reportlab.pdfgen import canvas

def some_view(request):
    # Create a file-like buffer to receive PDF data.
    buffer = io.BytesIO()

    # Create the PDF object, using the buffer as its "file."
    p = canvas.Canvas(buffer)

    # Draw things on the PDF. Here's where the PDF generation happens.
    # See the ReportLab documentation for the full list of functionality.
    p.drawString(100, 100, "Hello world.")

    # Close the PDF object cleanly, and we're done.
    p.showPage()
    p.save()

    # FileResponse sets the Content-Disposition header so that browsers
    # present the option to save the file.
    buffer.seek(0)
    return FileResponse(buffer, as_attachment=True, filename="hello.pdf")
```

Ba chóir go mbeadh an cód agus na tuairimí féinmhínithe, ach tá cúpla rud tuillte ag lua:

- Socróidh an freagra an cineál MIME go huathoibríoch: mimetype: application/pdf bunaithe ar an síneadh ainm comhaid. Insíonn sé seo do bhrabhsálaithe gur comhad PDF é an doiciméad, seachas comhad HTML nó ábhar dénártha ginearic:mimetype: application/octet-stream.
- Nuair a chuirtear `as_attachment=True` chuig FileResponse\`, socraíonn sé an ceannteideal `Content-Disposition` cuí agus insíonn sé do bhrabhsálaithe gréasáin bosca dialóige a chur in iúl agus ag dearbhú conas an doiciméad a láimhseáil fiú má shocraítear réamhshocrú ar an meaisín. Má fhágann an paraiméadar as\_attachment, láimhseálfaidh brabhsálaithe an PDF ag baint úsáide as cibé clár/breiseán atá cumraithe acu le húsáid le haghaidh PDFanna.
- Is féidir leat paraiméadar treallach `file` a sholáthar. Úsáidfidh brabhsálaithe é sa dialóg “Sábháil mar...”.
- Is féidir leat dul isteach sa API ReportLab: Is féidir an maolán céanna a rith mar an chéad argóint chuig Canvas.canvas\` a chothú chuig an aic:class: ~django.http.fileResponse.
- Tabhair faoi deara go ndéantar gach modh giniúna PDF ina dhiaidh sin ar an réad PDF (sa chás seo, p\`) -- ní ar maolán \`.
- Mar fhocal scoir, tá sé tábhachtach glaoch ar ```Showpage () ``agus ``save ()``` ar an gcomhad PDF.

> **Note**
>
> Níl ReportLab sábháilte le snáithe. Thuairiscigh cuid dár n-úsáideoirí saincheisteanna aisteacha maidir le tuairimí Django a ghineann PDF a thógáil ar rochtain ag go leor daoine ag an am céanna.

## Formáidí eile

Tabhair faoi deara nach bhfuil go leor sna samplaí seo atá sainiúil le PDF - díreach na giotáin ag baint úsáide as reportlab. Is féidir leat teicníc den chineál céanna a úsáid chun aon fhormáid treallach a ghiniúint ar féidir leat leabharlann Python a fháil dó. Féach freisin: doc: /howto/outputting-csv le haghaidh sampla eile agus roinnt teicnící is féidir leat a úsáid nuair a ghintear formáidí téacs-bhunaithe.

> **See also**
>
> Soláthraíonn Pacáistí Django comparáid ar phacáistí \_ a chabhraíonn le comhaid PDF a ghiniúint \< <https://djangopackages.org/grids/g/pdf/>\> ó Django.
