fpdf2 - ភាសខ្មែរ (original) (raw)

របៀបប្រើប្រាស

ឯកសារទាំងស្រុងនៃវិធីប្រើ: fpdf.FPDF API doc

មេរៀនទី 1 - គំរូខ្លី

តោះចាប់ផ្តើមជាមួយឧទាហរណ៍ងាយៗ:

`from fpdf import FPDF

pdf = FPDF() pdf.add_page() pdf.set_font("helvetica", style="B", size=16) pdf.cell(40, 10, "Hello World!") pdf.output("tuto1.pdf") `

លទ្ធផល PDF

បន្ទាប់ពីបញ្ចូលឯកសារដើម្បីប្រើក្នុងបណ្ណាល័យ, យើងបង្កើតទំរង់ FPDF មួយ។ FPDF ទំរង់នៃតម្លៃដើមដែលត្រូវបានប្រើទីនេះគឺ: ខ្នាតនៃទំព័រទាំងអស់ជា A4 រាងបញ្ឃរ ហើយមានរង្វាស់ខ្នាតគិតជាមីលីម៉ែត្រ។ វាត្រូវបានសំគាល់យ៉ាងច្បាស់ដូចកូដមួយបន្ទាត់ខាងក្រោមនេះ:

pdf = FPDF(orientation="P", unit="mm", format="A4")

យើងក៏អាចកំណត់ PDF បានផងដែរជាទំរង់រៀងក្រដាសផ្តេក (L) ឬ អាចប្រើក្នុងទំរង់ក្រដាសផ្សេងៗទៀតដូចជា (ទំរង់លិតស្នាម Letter និង ទំរង់ផ្លូវច្បាប់ Legal) ហើយខ្នាតរង្វាស់អាចគិតជា (pt, cm, in)។

មុននេះយើងមិនបាននិយាយអំពីទំព័រទេ ដូច្នេះយើងអាចអាចបង្កើតវាដោយប្រើ add_page។ ទីតាំងជ្រុងខាងលើខាងឆ្វេង និងទីតាំងដែលកំពុងស្ថិតនៅគឺកំណត់ដោយតម្លៃដើម 1 សង់ទីម៉ែត្រពីស៊ុបនៃបន្ទាត់ ការតម្រឹមអាចផ្លាស់ប្តូរបានដោយប្រើ set_margins.

មុនយើងអាចបោះពុម្ភអត្ថបទបាន កាតព្វកិច្ចរបស់យើងគឺរើសពុម្ភអក្សរជាមុនសិនដោយប្រើ set_font មិនដូចនោះទេអត្ថបទរបស់យើងនឹងមានបញ្ហា។ យើងអាចរើសយកពុម្ភអក្សរ Helvetica ដាក់ bold ទំហំ 16 តាមវិធីដូចខាងក្រោមជាគំរូ:

pdf.set_font('Helvetica', style='B', size=16)

យើងអាចកំណត់ជាទំរង់អក្សរទ្រេតដោយប្រើ I និង ទំរង់មានបន្ទាត់រត់ពីក្រោយដោយប្រើ U ឬ មិនចាំបាច់ប្រើពួកវា វានឹងបង្ហាញទំរង់ធម្មតាជាមួយនិងការប្រើអក្សរទទេ (empty string) មានន័យ (ឬ ការរួមបញ្ចូលគ្នាផ្សេងទៀត)។ ត្រូវចាំថាទំហំអក្សរត្រូវតែអោយតម្លៃខ្នាតគិតជាចុច(points) មិនមែនគិតជាមីលីម៉ែត្រ (ឬជាខ្នាតណាមួយផ្សេងទេ) នេះជាករណីលើកលេងក្នុងការប្រើប្រាស។ ពុម្ភអក្សរដែលបានបញ្ចូលរួចស្រេចរួមមាន Times, Courier, Symbol និង ZapfDingbats

ឥលូវយើងអាចបោះពុម្ភសាកល្បងជាមួយការប្រើ cell។ មួយក្រឡា (cell) គឹមួយចតុកោណផ្ទៃគិតចាប់ពីផ្តើមបន្ទាត់ រហូតចប់នៃបន្ទាត់ផ្តេក ជាមួយស៊ុបដែលដែលអាចសរសេរអត្ថបទបាន។ វាបញ្ចេញទៅលើទីតាំងដែលកំពុងស្ថិនៅ។ យើងអាចកំណត់វិមាត្រ និង អត្ថបទ (ចំកណ្តាល ឬ ដោយការតម្រឹមស្រេចបាន) ប្រសិនបើមានការកំណត់ព្រំដែនវាអាចបង្ហាញផងដែរ ហើយនិងបង្ហាញចេញបន្ទាប់ពីទីតាំងដែលកំពុងនៅ (ដាក់ទៅខាងស្តាំ ឬ ដាក់ពីក្រោម ឬ ដាក់បន្ទាប់ពីចុះបន្ទាត់)។ ដើម្បីដាក់ស៊ុមជាបន្ទាត់ជុំវិញយើងប្រើ:

pdf.cell(40, 10, 'Hello World!', 1)

ដើម្បីដាក់ Cell ថ្មីមួយទៀតជាប់វា ដោយតម្រឹមអត្ថបទចេញពីកណ្តាលសម្រាប់បន្ទាត់បន្ទាប់យើងអាចប្រើ:

pdf.cell(60, 10, 'Powered by FPDF.', new_x="LMARGIN", new_y="NEXT", align='C')

ចំណាំ: ការចុះបន្ទាត់អាចធ្វើបានដោយប្រើ ln. វិធីសាស្រ្តនេះជាការបញ្ជាក់បន្ថែមលើការបញ្ចប់កថាខ័ណ្ឌតាមរយៈគម្លាតកម្ពស់នៃបន្ទាត់។

ជាចុងក្រោយ ក្នុងការបញ្ចប់នៃការបង្កើត យើងត្រូវផ្តល់នូវផ្លូវរបស់ទីតាំងដែលយើងត្រូវរក្សារឯកសារទុកដោយប្រើ output ដោយមិនចាំបាច់ផ្តល់ប៉ារ៉ាម៉ែត output() បញ្ចូនត្រលប់វិញជាស្រទាប់ PDF bytearray

មេរៀនទី 2 - ក្បាលទំព័រ បាតកថា បំនែកទំពរ និង រូបភាព

នេះជាឧទារហ៍មួយដែលមានពីរទំព័រ ក្បាលទំព័រ, បាតកថាទំព័រ ឬ ជើងទំព័រ និង យីហោ:

`from fpdf import FPDF

class PDF(FPDF): def header(self): # Rendering logo: self.image("../docs/fpdf2-logo.png", 10, 8, 33) # Setting font: helvetica bold 15 self.set_font("helvetica", style="B", size=15) # Moving cursor to the right: self.cell(80) # Printing title: self.cell(30, 10, "Title", border=1, align="C") # Performing a line break: self.ln(20)

def footer(self):
    # Position cursor at 1.5 cm from bottom:
    self.set_y(-15)
    # Setting font: helvetica italic 8
    self.set_font("helvetica", style="I", size=8)
    # Printing page number:
    self.cell(0, 10, f"Page {self.page_no()}/{{nb}}", align="C")

Instantiation of inherited class

pdf = PDF() pdf.add_page() pdf.set_font("Times", size=12) for i in range(1, 41): pdf.cell(0, 10, f"Printing line number {i}", new_x="LMARGIN", new_y="NEXT") pdf.output("new-tuto2.pdf") `

លទ្ធផលចេញជាឯកសារ PDF

ឯកសារនេះបង្កើតដោយប្រើ header និង footer ជារបៀបនៃដំណើរបង្កើតនៃក្បាលទំព័រ និង បាតកថាទំព័រ។ ពួកវានឹងចេញមកដោយស្វ័យប្រវត្តិ។ វាមានស្រាប់មកជាមួយ FPDF ត្រាន់តែវាបង្ហាញចេញជាចន្លោះទំនេរដែលធ្វើអោយយើងមើលមិនដឹង។ ដូច្នេះយើងគ្រាន់តែតែបន្ថែមបន្ថយវាជាការស្រេច។

រូបភាពនៃយីហោបានបង្ហាញ image តាមរយៈការកំណត់ប្រវែងទទឹងដាក់វាលើជ្រុងខាងលើនៃផ្នែកខាងឆ្វេង។ កម្ពស់គឺគណនាដោយស្វ័យប្រវត្តិផ្អែកតាមច្បាប់សមាមាត្រ។

ចំពោះការបង្ហាញលេខទំព័រវាបង្ហាញតម្លៃទទេរនៃប្រវែងទទឹងរបស់ក្រឡាផ្ទៃបន្ទាត់ (cell)។ វាមានន័យថាក្រឡាផ្ទៃត្រូវពង្រីកទៅផ្នែកនៃការកំណត់ចន្លោះទំនេរ(margin) ផ្នែកខាងស្តាំវាតម្រឹមចេញពីកណ្តាលនៃអត្ថបទមក។ លេខទំព័រដែលយើងកំពុងស្ថិតនៅនឹងបង្ហាញតម្លៃដោយប្រើ page_no ទៅតាមចំនួនសរុបនៃទំព័រជាញឹកញ៉ាប់គឺប្រើតម្លៃពិសេសបែបនេះ {nb} ដែលជំនួសដោយចំនួនសរុបនៃទំព័រ (តម្លៃពិសេសនេះអាចប្តូរបានដោយ alias_nb_pages())។ ចំណាំនៃរបៀបប្រើប្រាស set_y ដែលអោយយើងកំណត់ទីតាំងអក្សឈរ ពីលើមកក្រោម។

មានមុខងារពិសេសមួយផ្សេងទៀតដែលអាចប្រើបាន: គឺការចុះបន្ទាត់ទៅទំព័រថ្មីដោយស្វ័យប្រវត្តិខណៈពេលវាទៅដល់ចំនុចទាល់នៃទំព័រ (នៅចំនុច 2 សង់ទីម៉ែតគម្លាតពីក្រោមមក) ពេលចុះបន្ទាត់វារក្សាពុម្ភអក្សរដដែល។ ថ្វីបើក្បាលទំព័រ និង បាតកថាទំព័រមានពុម្ភអក្សរផ្ទាល់គឺ (helvetica)តែតួរអត្ថបទនៅតែជាពុម្ភ Times។ យន្តការនៃការស្តារដោយស្វ័យប្រវត្តិនេះក៏អនុវត្តចំពោះពណ៌ និងទទឹងបន្ទាត់ផងដែរ។ ដែនកំណត់ដែលមានការញែកទំព័រអាចត្រូវបានកំណត់ជាមួយពាក្យថា set_auto_page_break

មេរៀនទី 3 - ចុះបន្ទាត់ និង ដាក់ពណ៌

សូមបន្តជាមួយឧទាហរណ៍មួយដែលបោះពុម្ពកទំរង់ថាខណ្ឌយ៉ាងត្រឹមត្រូវ។ ដែលបង្ហាញពីការប្រើប្រាស់ពណ៌។

`from fpdf import FPDF

class PDF(FPDF): def header(self): # Setting font: helvetica bold 15 self.set_font("helvetica", style="B", size=15) # Calculating width of title and setting cursor position: width = self.get_string_width(self.title) + 6 self.set_x((210 - width) / 2) # Setting colors for frame, background and text: self.set_draw_color(0, 80, 180) self.set_fill_color(230, 230, 0) self.set_text_color(220, 50, 50) # Setting thickness of the frame (1 mm) self.set_line_width(1) # Printing title: self.cell( width, 9, self.title, border=1, new_x="LMARGIN", new_y="NEXT", align="C", fill=True, ) # Performing a line break: self.ln(10)

def footer(self):
    # Setting position at 1.5 cm from bottom:
    self.set_y(-15)
    # Setting font: helvetica italic 8
    self.set_font("helvetica", style="I", size=8)
    # Setting text color to gray:
    self.set_text_color(128)
    # Printing page number
    self.cell(0, 10, f"Page {self.page_no()}", align="C")

def chapter_title(self, num, label):
    # Setting font: helvetica 12
    self.set_font("helvetica", size=12)
    # Setting background color
    self.set_fill_color(200, 220, 255)
    # Printing chapter name:
    self.cell(
        0,
        6,
        f"Chapter {num} : {label}",
        new_x="LMARGIN",
        new_y="NEXT",
        align="L",
        fill=True,
    )
    # Performing a line break:
    self.ln(4)

def chapter_body(self, filepath):
    # Reading text file:
    with open(filepath, "rb") as fh:
        txt = fh.read().decode("latin-1")
    # Setting font: Times 12
    self.set_font("Times", size=12)
    # Printing justified text:
    self.multi_cell(0, 5, txt)
    # Performing a line break:
    self.ln()
    # Final mention in italics:
    self.set_font(style="I")
    self.cell(0, 5, "(end of excerpt)")

def print_chapter(self, num, title, filepath):
    self.add_page()
    self.chapter_title(num, title)
    self.chapter_body(filepath)

pdf = PDF() pdf.set_title("20000 Leagues Under the Seas") pdf.set_author("Jules Verne") pdf.print_chapter(1, "A RUNAWAY REEF", "20k_c1.txt") pdf.print_chapter(2, "THE PROS AND CONS", "20k_c1.txt") pdf.output("tuto3.pdf") `

លទ្ធផលសម្រេច PDF

អត្ថបទ Jules Verne

ប្រើ get_string_width ប្រវែងនៃខ្សែពុម្ភអក្សរលើពុម្ភអក្សរកំពុងប្រើ ដែលប្រើដើម្បីគណនាទីតាំងជុំវិញចំណងជើង។ ហើយដាក់ពណ៌ដោយប្រើ (via set_draw_color set_fill_color និង set_text_color) ហើយកំណត់កំរ៉ាស់បន្ទាត់ 1 មីលីម៉ែត (ដោយតម្លៃដើម 0.2) និងប្រើ set_line_width។ ចុងក្រោយ យើងទទួលបាន (ដាក់ប៉ារ៉ាម៉ែតចុងក្រោយដោយពាក្យថា “True” នោះបានន័យថាពណ៌ផ្ទៃក្រោយបានដាក់)។

វិធីសាស្រ្តក្នុងការបោះពុម្ភកថាខ័ណ្ឌពហុបន្ទាត់គឺ multi_cell. អត្ថបទរក្សាទំរង់ដើមយ៉ាងប្រក្រតី។ រាល់បន្ទាត់ដែលដល់ចុងខាងស្តាំ ឬ ចង់ចុះបន្ទាត់ត្រូវប្រើ (\n) ពេលយើងចុះបន្ទាត់ផ្ទៃថ្មីត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិពីក្រោមបន្ទាត់កំពុងប្រើ។ ការចុះបន្ទាត់ដោយស្វ័យប្រវត្តិនិងប្រព្រឹត្តទៅនៅខាងចុងបំផុតនៃចន្លោះ ឬ soft-hyphen (\u00ad) នៅមុខអក្សរដែលត្រូវចុះ។ សញ្ញាត្រេជាអក្សរ និងត្រូវជំនួសដោយសញ្ញាត្រេធម្មតានៅពេលដែលវាភ្ជាប់ជាមួយបន្ទាត់ត្រូវចុះ មិនចឹងទេយើងរំលងវាចោលបាន។

មានកន្លែងពីរដែលអាចកំណត់លើឯកសារបានថាជាសម្បត្តិរបស់យើងបានគឺ: ចំណងជើង (set_title) និង អ្នកសរសេរ (set_author). ទាំងអស់នេះអាចបង្ហាញជាពីរអត្ថន័យ។ ទីមួយពេលបើកឯកសារជាមួយកម្មវិធី Acrobat Reader ចុចលើ File ពីមីនុយ ហើយរើសយក Document Properties។ ទីពីរអាចរកវាឃើញពី plug-in ដោយប្រើ Right-Click ហើយរើសយកពាក្យ Document Properties។

មេរៀនទី 4 - ពហុជួរឈរ

នេះជាឧទារហ៍យោងពីលើកមុន តែត្រង់នេះយើងនឹងបង្ហាញពីរបៀបប្រើប្រាសពហុជួរឈរ។

`from fpdf import FPDF

class PDF(FPDF): def header(self): self.set_font("helvetica", style="B", size=15) width = self.get_string_width(self.title) + 6 self.set_x((210 - width) / 2) self.set_draw_color(0, 80, 180) self.set_fill_color(230, 230, 0) self.set_text_color(220, 50, 50) self.set_line_width(1) self.cell( width, 9, self.title, border=1, new_x="LMARGIN", new_y="NEXT", align="C", fill=True, ) self.ln(10)

def footer(self):
    self.set_y(-15)
    self.set_font("helvetica", style="I", size=8)
    self.set_text_color(128)
    self.cell(0, 10, f"Page {self.page_no()}", align="C")

def chapter_title(self, num, label):
    self.set_font("helvetica", size=12)
    self.set_fill_color(200, 220, 255)
    self.cell(
        0,
        6,
        f"Chapter {num} : {label}",
        new_x="LMARGIN",
        new_y="NEXT",
        border="L",
        fill=True,
    )
    self.ln(4)

def chapter_body(self, fname):
    # Reading text file:
    with open(fname, "rb") as fh:
        txt = fh.read().decode("latin-1")
    with self.text_columns(
        ncols=3, gutter=5, text_align="J", line_height=1.19
    ) as cols:
        # Setting font: Times 12
        self.set_font("Times", size=12)
        cols.write(txt)
        cols.ln()
        # Final mention in italics:
        self.set_font(style="I")
        cols.write("(end of excerpt)")

def print_chapter(self, num, title, fname):
    self.add_page()
    self.chapter_title(num, title)
    self.chapter_body(fname)

pdf = PDF() pdf.set_title("20000 Leagues Under the Seas") pdf.set_author("Jules Verne") pdf.print_chapter(1, "A RUNAWAY REEF", "20k_c1.txt") pdf.print_chapter(2, "THE PROS AND CONS", "20k_c1.txt") pdf.output("tuto4.pdf") `

លទ្ធផលសម្រេច PDF

អត្ថបទ Jules Verne

ចំនុចចំបងដែលខុសពីមេរៀនមុនគឺ ការប្រើប្រាស់មុខងារ text_columns​ ។ រាល់អក្សរទាំងអស់​ អាចជាបន្ថែមបន្ត ហើយពង្រាយវាទៅតាមជួរឈរ​ វាបង្កើតបំនែកទំព័រដោយស្វ័យប្រវត្តិពេលចាំបាច់។
ចំណាំ ពេលដែល TextColumns ដាក់អោយដើរតួជាប្រធានបរិបទ (context manager) រចនាបទរបស់អត្ថបទ និង ទម្រង់ពុំអក្សរផ្សេងៗក៏ត្រូវបានប្តូរផងដែរ។ ការផ្លាស់ប្តូរទាំងនេះគឺផ្អែកលើបន្ទុករបស់បរិបទ។ នៅពេលដែលវាបានបិទ ការកំណត់ពីមុននឹងត្រូវបានស្តារឡើងវិញ។

មេរៀនទី 5 - បង្កើតតារាង

ក្នុងមេរៀននេះនឹងពន្យល់អំពីការបង្កើតតារាងពីរផ្សេងគ្នា ដើម្បីមានភាពងាយស្រួលយើងមានឧទារហ៍ខ្លះៗអំពីការបង្កើតនេះ។

`import csv from fpdf import FPDF from fpdf.fonts import FontFace from fpdf.enums import TableCellFillMode

with open("countries.txt", encoding="utf8") as csv_file: data = list(csv.reader(csv_file, delimiter=","))

pdf = FPDF() pdf.set_font("helvetica", size=14)

Basic table:

pdf.add_page() with pdf.table() as table: for data_row in data: row = table.row() for datum in data_row: row.cell(datum)

Styled table:

pdf.add_page() pdf.set_draw_color(255, 0, 0) pdf.set_line_width(0.3) headings_style = FontFace(emphasis="BOLD", color=255, fill_color=(255, 100, 0)) with pdf.table( borders_layout="NO_HORIZONTAL_LINES", cell_fill_color=(224, 235, 255), cell_fill_mode=TableCellFillMode.ROWS, col_widths=(42, 39, 35, 42), headings_style=headings_style, line_height=6, text_align=("LEFT", "CENTER", "RIGHT", "RIGHT"), width=160, ) as table: for data_row in data: row = table.row() for datum in data_row: row.cell(datum)

pdf.output("tuto5.pdf") `

លទ្ធផលសម្រេច PDF - Countries CSV data

មានមូលដ្ឋានក្នុងការធ្វើដោយជោគជ័យជាមួយឧទារហ៍នេះដោយដាក់ទិន្នន័យដោយប្រើ FPDF.table(). វាមានភាពសម្មាញ់និងធ្វើបានលឿន។

តារាងទីពីរយើងនឹងធ្វើអោយប្រសើរជាងមុនរួមមានដូចជា: ដាក់ពណ៌ ដោយកំណត់ប្រវែងទទឹង បន្ថយបន្ទាត់កំពស់។ តម្រឹមចំណងជើងចេញពីកណ្តាល រៀបជួរឈរដោយការប្តូរតម្លៃប្រវែងទទឹងវា និង ការកំណត់តម្រឹមខាងស្តាំ។ ជាងនេះទៅទៀតនោះ គឹដកបន្ទាត់ផ្តេកចេញ។ ធ្វើបែបនេះទៅបានដោយរើសយក borders_layout ដែលមានជម្រើសជាច្រើននៅទីនោះ: TableBordersLayout.

មេរៀនទី 6 - បង្កើតតំណរជាមួយអត្ថបទ

ក្នុងមេរៀននេះយើងនឹងពន្យល់អំពីរបៀបជាច្រើនក្នុងការដាក់តំណរនៅលើឯកសារ pdf ហើយយើងក៏ដាក់តំណរដៅទៅប្រភពផ្សេងនៅក្រៅផងដែរ។

យើងនឹងបង្ហាញពីរបៀបជាច្រើនទៀតក្នុងការលេងម៉ូដអត្ថបទរួមមានដូចជាម៉ូដឌិត ទ្រេត មានបន្ទាត់ពីក្រោម (bold, italic, underline)។

`from fpdf import FPDF

pdf = FPDF()

First page:

pdf.add_page() pdf.set_font("helvetica", size=20) pdf.write(5, "To find out what's new in self tutorial, click ") pdf.set_font(style="U") link = pdf.add_link(page=2) pdf.write(5, "here", link) pdf.set_font()

Second page:

pdf.add_page() pdf.image( "../docs/fpdf2-logo.png", 10, 10, 50, 0, "", "https://py-pdf.github.io/fpdf2/" ) pdf.set_left_margin(60) pdf.set_font_size(18) pdf.write_html( """You can print text mixing different styles using HTML tags: bold, italic, underlined, or all at once!

You can also insert links on text, such as https://py-pdf.github.io/fpdf2/, or on an image: the logo is clickable!""" ) pdf.output("tuto6.pdf") `

លទ្ធផលសម្រេច PDF - fpdf2-logo

របៀបថ្មីមួយទៀតក្នុងការបង្ហាញអត្ថបទដើម្បីបោះពុម្ភ write()។ វាមានភាពស្រដៀងទៅនឹង multi_cell() ចំណែកភាពខុសគ្នាមាន:

ដោយហេតុនេះយើងអាចសរសេរអត្ថបទជាកំណាត់ៗបាន ដោយការកំណាត់ម៉ូដខុសៗគ្នាតាមដែលយើងចង់បាន ហើយ បន្តទៅទៀតយើងចង់ដាក់វានៅកន្លែងណាក៏បាន។ ម្យ៉ាងវិញទៀត គុណវិបត្តិចម្បងរបស់វាគឺថាយើងមិនអាចតម្រឹម ឬ កែរអត្តបទច្រើនបន្ទាត់បានដូចយើងធ្វើវិធី multi_cell() ទេ។

គោលបំណងលើឧទារហ៍ទីមួយគឺអោយយើងរៀនប្រើ write() . នៅជំហានដំបូងនៃប្រយោគ យើងបានរៀនសរសេរនូវអត្ថបទដោយដោយរចនាបែបធម្មតា ហើយបន្ទាប់ទៀតយើងប្រើវិធី set_font() តមកទៀតយើងរចនាដាក់បន្ទាត់ពីក្រោមពាក្យនៅចុងបញ្ចប់នៃប្រយោគ។

របៀបដាក់នូវតំណរភ្ជាប់ទៅទំព័រទីពីរយើងអាចប្រើវិធី add_link() ដែលបង្កើតនូវតំបន់ដែលយើងអាចចុចបានហៅថា "link" ហើយវារត់ទៅរកទំព័រមួយផ្សេងទៀតនៅលើឯកសារដែលយើងកំពុងបើក។

ដើម្បីបងតំណរទៅខាងកន្លែងផ្សេងទៀតតាមរយៈរូបភាពដោយប្រើ image() . ប្រើវិធីនេះដើម្បីភ្ជាប់តំណរទៅកាន់ប្រភពមួយផ្សេងទៀត ហើយតំណរនេះអាចត្រូវបានប្រើប្រាសជាមួយប្រភពខាងក្នុង និង ខាងក្រៅ។

ជំរើសមួយផ្សេងទៀតយើងអាចដាក់រចនាពុម្ភអក្សរទៅលើការដាក់តំណរភ្ជាប់តាមវិធី write_html()។ អាចប្រើភាសារកូដ html ដែលអោយយើងថែមអត្ថបទ ផ្លាស់ប្តូររចនាពុម្ភអក្សរ និង ដាក់តំណរភ្ជាប់(link) ដោយប្រើភាសា HTML។