| Components | All | New | MacOS | Windows | Linux | iOS | ||||
| Examples | Mac & Win | Server | Client | Guides | Statistic | FMM | Blog | Deprecated | Old | |
DynaPDF.WriteFTextEx
Writes text on current page with formatting commands.
| Component | Version | macOS | Windows | Linux | Server | iOS SDK |
| DynaPDF | 3.1 | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
MBS( "DynaPDF.WriteFTextEx"; PDF; PosX; PosY; Width; Height; Align; Text { ; PlainText } ) More
Parameters
| Parameter | Description | Example | Flags |
|---|---|---|---|
| The PDF reference returned from DynaPDF.New. | |||
| PosX | X-Coordinate of output rectangle | $x | |
| PosY | Y-Coordinate of output rectangle | $y | |
| Width | Width of output rectangle | $w | |
| Height | Height of output rectangle or -1. | $h | |
| Align | The text alignment. Can be left, center, right or justify. | "left" | |
| Text | The text to write. | "Hello World" | |
| PlainText | Pass 1 to ignore formatting commands and treat text as plain text. Default is 0 to interpret commands in text. |
0 | Optional Added in version 9.1. |
Result
Returns OK or error message.
Description
Writes text on current page with formatting commands.Use DynaPDF.GetFTextHeightEx or DynaPDF.GetFTextHeight to calculate the space needed for the text if you want to create a matching text rectangle for vertical alignment.
See DynaPDF.AllowPageBreak for whether to do page breaks or not.
Please set a font first with DynaPDF.SetFont function before you write on the page.
See DynaPDF.WriteStyledTextEx to convert FileMaker styles to DynaPDF commands.
See also WriteFTextEx function in DynaPDF manual.
Examples
Write text in a rectangle:
MBS( "DynaPDF.WriteFTextEx"; $PDF; 100; 500; 100; 100; "left"; "Hello World" )
Loop over pages and add page numbers:
Set Variable [$PageCount; Value:MBS( "DynaPDF.GetPageCount"; $pdf )]
Set Variable [$PageNumber; Value:1]
Set Variable [$pageWidth; Value:MBS("DynaPDF.GetPageWidth"; $pdf)]
Set Variable [$pageHeight; Value:MBS("DynaPDF.GetPageHeight"; $pdf)]
Loop
Set Variable [$r; Value:MBS("DynaPDF.EditPage"; $pdf; $PageNumber)]
Set Variable [$r; Value:MBS( "DynaPDF.SetFont"; $pdf; "Helvetica"; 0; 12)]
Set Variable [$r; Value:MBS( "DynaPDF.WriteFTextEx"; $pdf; 50; $pageHeight - 50; $pageWidth-100; 30; "right"; GetAsText($PageNumber) & " of " & $PageCount)]
Set Variable [$r; Value:MBS("DynaPDF.EndPage"; $pdf)]
Set Variable [$PageNumber; Value:$PageNumber +1]
Exit Loop If [$PageNumber > $PageCount]
End Loop
Set Variable [$PageNumber; Value:1]
Set Variable [$pageWidth; Value:MBS("DynaPDF.GetPageWidth"; $pdf)]
Set Variable [$pageHeight; Value:MBS("DynaPDF.GetPageHeight"; $pdf)]
Loop
Set Variable [$r; Value:MBS("DynaPDF.EditPage"; $pdf; $PageNumber)]
Set Variable [$r; Value:MBS( "DynaPDF.SetFont"; $pdf; "Helvetica"; 0; 12)]
Set Variable [$r; Value:MBS( "DynaPDF.WriteFTextEx"; $pdf; 50; $pageHeight - 50; $pageWidth-100; 30; "right"; GetAsText($PageNumber) & " of " & $PageCount)]
Set Variable [$r; Value:MBS("DynaPDF.EndPage"; $pdf)]
Set Variable [$PageNumber; Value:$PageNumber +1]
Exit Loop If [$PageNumber > $PageCount]
End Loop
Annotate PDF page with text on top center:
# make pdf
Set Field [PDF::Annotated PDF; PDF::Original PDF]
#Clear current PDF document
Set Variable [$pdf; Value:MBS("DynaPDF.New")]
#Load PDF from container
Set Variable [$r; Value:MBS("DynaPDF.OpenPDFFromContainer"; $pdf; PDF::Original PDF)]
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFFile"; $pdf)]
# write on each page a header
Set Variable [$index; Value:1]
Set Variable [$count; Value:MBS("DynaPDF.GetPageCount"; $pdf)]
Loop
Set Variable [$r; Value:MBS("DynaPDF.EditPage"; $pdf; $index)]
Set Variable [$r; Value:MBS("DynaPDF.SetPageCoords"; $pdf; "topdown")]
Set Variable [$r; Value:MBS("DynaPDF.SetFont"; $pdf; "Arial"; 0; 10; 1; "unicode")]
Set Variable [$PageWidth; Value:MBS("DynaPDF.GetPageWidth"; $pdf)]
Set Variable [$print; Value:MBS("DynaPDF.WriteFTextEx"; $pdf; 0; 20; $PageWidth; -1; "center"; "Doc - " & PDF::PK & "")]
Set Variable [$r; Value:MBS("DynaPDF.EndPage"; $pdf)]
Set Variable [$index; Value:$index + 1]
Exit Loop If [$index > $count]
End Loop
#save
Set Field [PDF::Annotated PDF; MBS( "DynaPDF.Save"; $PDF; "print.pdf" )]
#Cleanup
Set Variable [$r; Value:MBS("DynaPDF.Release"; $pdf)]
Set Field [PDF::Annotated PDF; PDF::Original PDF]
#Clear current PDF document
Set Variable [$pdf; Value:MBS("DynaPDF.New")]
#Load PDF from container
Set Variable [$r; Value:MBS("DynaPDF.OpenPDFFromContainer"; $pdf; PDF::Original PDF)]
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFFile"; $pdf)]
# write on each page a header
Set Variable [$index; Value:1]
Set Variable [$count; Value:MBS("DynaPDF.GetPageCount"; $pdf)]
Loop
Set Variable [$r; Value:MBS("DynaPDF.EditPage"; $pdf; $index)]
Set Variable [$r; Value:MBS("DynaPDF.SetPageCoords"; $pdf; "topdown")]
Set Variable [$r; Value:MBS("DynaPDF.SetFont"; $pdf; "Arial"; 0; 10; 1; "unicode")]
Set Variable [$PageWidth; Value:MBS("DynaPDF.GetPageWidth"; $pdf)]
Set Variable [$print; Value:MBS("DynaPDF.WriteFTextEx"; $pdf; 0; 20; $PageWidth; -1; "center"; "Doc - " & PDF::PK & "")]
Set Variable [$r; Value:MBS("DynaPDF.EndPage"; $pdf)]
Set Variable [$index; Value:$index + 1]
Exit Loop If [$index > $count]
End Loop
#save
Set Field [PDF::Annotated PDF; MBS( "DynaPDF.Save"; $PDF; "print.pdf" )]
#Cleanup
Set Variable [$r; Value:MBS("DynaPDF.Release"; $pdf)]
Write some text with a link:
MBS( "DynaPDF.WriteFTextEx"; $PDF; 100; 500; 100; 100; "left"; "Link to DynaPDF: \FC[16711680]\ul#\LK[false, TRUE, false, https://www.dynaforms.com]Test\EK#\ul#\FC[0]." )
Write text in RGB colors:
Set Variable [ $r ; Value: MBS("DynaPDF.SetColorSpace"; $pdf; "DeviceRGB") ]
# calculate color values for RBB
Set Variable [ $red ; Value: MBS( "DynaPDF.RGB"; 255; 0; 0 ) ]
Set Variable [ $green ; Value: MBS( "DynaPDF.RGB"; 0; 255; 0 ) ]
Set Variable [ $blue ; Value: MBS( "DynaPDF.RGB"; 0; 0; 255 ) ]
# now write some text
Set Variable [ $r ; Value: MBS("DynaPDF.DynaPDF.WriteFTextEx"; $pdf; 100; 100; 500; 200;
"left"; "Testing: " &
"\FC[" & $red & "]Red" &
"\FC[" & $green & "]Green" &
"\FC[" & $blue & "]Blue" ) ]
# calculate color values for RBB
Set Variable [ $red ; Value: MBS( "DynaPDF.RGB"; 255; 0; 0 ) ]
Set Variable [ $green ; Value: MBS( "DynaPDF.RGB"; 0; 255; 0 ) ]
Set Variable [ $blue ; Value: MBS( "DynaPDF.RGB"; 0; 0; 255 ) ]
# now write some text
Set Variable [ $r ; Value: MBS("DynaPDF.DynaPDF.WriteFTextEx"; $pdf; 100; 100; 500; 200;
"left"; "Testing: " &
"\FC[" & $red & "]Red" &
"\FC[" & $green & "]Green" &
"\FC[" & $blue & "]Blue" ) ]
Write text in CMYK colors:
# set colorspace
Set Variable [ $r ; Value: MBS("DynaPDF.SetColorSpace"; $pdf; "DeviceCMYK") ]
# calculate color values for CMYK
Set Variable [ $cyan ; Value: MBS( "DynaPDF.CMYK"; 255; 0; 0; 0 ) ]
Set Variable [ $magenta ; Value: MBS( "DynaPDF.CMYK"; 0; 255; 0; 0 ) ]
Set Variable [ $yellow ; Value: MBS( "DynaPDF.CMYK"; 0; 0; 255; 0 ) ]
Set Variable [ $black ; Value: MBS( "DynaPDF.CMYK"; 0; 0; 0; 255 ) ]
# now write some text
Set Variable [ $r ; Value: MBS("DynaPDF.DynaPDF.WriteFTextEx"; $pdf; 100; 100; 500; 200;
"left"; "Testing: " &
"\FC[" & $cyan & "]Cyan" &
"\FC[" & $Magenta & "]Magenta" &
"\FC[" & $Yellow & "]Yellow" &
"\FC[" & $Black & "]Black" ) ]
Set Variable [ $r ; Value: MBS("DynaPDF.SetColorSpace"; $pdf; "DeviceCMYK") ]
# calculate color values for CMYK
Set Variable [ $cyan ; Value: MBS( "DynaPDF.CMYK"; 255; 0; 0; 0 ) ]
Set Variable [ $magenta ; Value: MBS( "DynaPDF.CMYK"; 0; 255; 0; 0 ) ]
Set Variable [ $yellow ; Value: MBS( "DynaPDF.CMYK"; 0; 0; 255; 0 ) ]
Set Variable [ $black ; Value: MBS( "DynaPDF.CMYK"; 0; 0; 0; 255 ) ]
# now write some text
Set Variable [ $r ; Value: MBS("DynaPDF.DynaPDF.WriteFTextEx"; $pdf; 100; 100; 500; 200;
"left"; "Testing: " &
"\FC[" & $cyan & "]Cyan" &
"\FC[" & $Magenta & "]Magenta" &
"\FC[" & $Yellow & "]Yellow" &
"\FC[" & $Black & "]Black" ) ]
Draw page number inside a round rectangle box:
# set color white to fill and light gray for frame
Set Variable [ $r ; Value: MBS( "DynaPDF.SetStrokeColor"; $pdf; ,1; ,1; ,1) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.SetFillColor"; $pdf; 1; 1; 1) ]
# draw round rect with one point border
Set Variable [ $r ; Value: MBS( "DynaPDF.SetLineWidth"; $pdf; 1) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.RoundRectEx"; $pdf; 50; $pageHeight - 50; $pageWidth - 100; 30; 5; 5; "FillStroke" ) ]
#
# set color black
Set Variable [ $r ; Value: MBS( "DynaPDF.SetStrokeColor"; $pdf; 0; 0; 0) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.SetFillColor"; $pdf; 0; 0; 0) ]
# and write centered text
Set Variable [ $r ; Value: MBS( "DynaPDF.SetFont"; $pdf; "Helvetica"; 0; 20) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.WriteFTextEx"; $pdf; 50; $pageHeight - 50; $pageWidth-100; 30; "center"; GetAsText($PageNumber) & " of " & $PageCount) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.SetStrokeColor"; $pdf; ,1; ,1; ,1) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.SetFillColor"; $pdf; 1; 1; 1) ]
# draw round rect with one point border
Set Variable [ $r ; Value: MBS( "DynaPDF.SetLineWidth"; $pdf; 1) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.RoundRectEx"; $pdf; 50; $pageHeight - 50; $pageWidth - 100; 30; 5; 5; "FillStroke" ) ]
#
# set color black
Set Variable [ $r ; Value: MBS( "DynaPDF.SetStrokeColor"; $pdf; 0; 0; 0) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.SetFillColor"; $pdf; 0; 0; 0) ]
# and write centered text
Set Variable [ $r ; Value: MBS( "DynaPDF.SetFont"; $pdf; "Helvetica"; 0; 20) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.WriteFTextEx"; $pdf; 50; $pageHeight - 50; $pageWidth-100; 30; "center"; GetAsText($PageNumber) & " of " & $PageCount) ]
Render text block as image:
Set Variable [ $pdf ; Value: MBS("DynaPDF.New") ]
# Add page
Set Variable [ $r ; Value: MBS("DynaPDF.AppendPage"; $pdf) ]
Set Variable [ $r ; Value: MBS("DynaPDF.SetPageCoords"; $pdf; "topdown") ]
Set Variable [ $r ; Value: MBS("DynaPDF.SetFont"; $pdf; "Helvetica"; 0; 12) ]
# Write some text
Set Variable [ $text ; Value: "The award winning \FT[Helvetica:1]MBS Plugin\FT[Helvetica:0] is easily the most powerful plug-in available for Claris FileMaker today. There are over 7,700 functions that allow Claris FileMaker developers to extend their solutions in some amazing ways. …" ]
Set Variable [ $r ; Value: MBS("DynaPDF.SetFillColor"; $pdf; 0; 0; 0) ]
Set Variable [ $r ; Value: MBS("DynaPDF.WriteFTextEx"; $pdf; 10; 10; 300; -1; "justify"; $Text) ]
# now figure out how much space we needed to make the page the right size
Set Variable [ $height ; Value: MBS("DynaPDF.GetLastTextPosY"; $pdf) ]
Set Variable [ $ph ; Value: MBS("DynaPDF.GetPageHeight"; $pdf) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.SetBBox"; $PDF; "Media"; 0; $ph; 320; $height - 10 ) ]
# close page, document and save PDF
Set Variable [ $r ; Value: MBS("DynaPDF.EndPage"; $pdf) ]
# render a picture
Set Variable [ $Result ; Value: MBS("DynaPDF.RenderPage"; $pdf; 1; 150) ]
#
Set Variable [ $r ; Value: MBS("DynaPDF.Release"; $pdf) ]
# Put in Container
Set Field [ Create Text::PDF ; $Result ]
# Add page
Set Variable [ $r ; Value: MBS("DynaPDF.AppendPage"; $pdf) ]
Set Variable [ $r ; Value: MBS("DynaPDF.SetPageCoords"; $pdf; "topdown") ]
Set Variable [ $r ; Value: MBS("DynaPDF.SetFont"; $pdf; "Helvetica"; 0; 12) ]
# Write some text
Set Variable [ $text ; Value: "The award winning \FT[Helvetica:1]MBS Plugin\FT[Helvetica:0] is easily the most powerful plug-in available for Claris FileMaker today. There are over 7,700 functions that allow Claris FileMaker developers to extend their solutions in some amazing ways. …" ]
Set Variable [ $r ; Value: MBS("DynaPDF.SetFillColor"; $pdf; 0; 0; 0) ]
Set Variable [ $r ; Value: MBS("DynaPDF.WriteFTextEx"; $pdf; 10; 10; 300; -1; "justify"; $Text) ]
# now figure out how much space we needed to make the page the right size
Set Variable [ $height ; Value: MBS("DynaPDF.GetLastTextPosY"; $pdf) ]
Set Variable [ $ph ; Value: MBS("DynaPDF.GetPageHeight"; $pdf) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.SetBBox"; $PDF; "Media"; 0; $ph; 320; $height - 10 ) ]
# close page, document and save PDF
Set Variable [ $r ; Value: MBS("DynaPDF.EndPage"; $pdf) ]
# render a picture
Set Variable [ $Result ; Value: MBS("DynaPDF.RenderPage"; $pdf; 1; 150) ]
#
Set Variable [ $r ; Value: MBS("DynaPDF.Release"; $pdf) ]
# Put in Container
Set Field [ Create Text::PDF ; $Result ]
See also
- DynaPDF.SetColorSpace
- DynaPDF.SetFillColor
- DynaPDF.SetFont
- DynaPDF.SetPageBreakExpression
- DynaPDF.SetPageCoords
- DynaPDF.SetStrokeColor
- DynaPDF.WebLink
- DynaPDF.WriteFTextExRotated
- DynaPDF.WriteStyledText
- DynaPDF.WriteText
Release notes
- Version 9.1
- Added PlainText flag to DynaPDF.WriteFText, DynaPDF.WriteFTextEx and DynaPDF.WriteFTextExRotated functions.
- Version 7.4
Example Databases
- Barcode/DynaPDF Barcode
- DynaPDF/Add Page Numbers
- DynaPDF/Book Creation
- DynaPDF/Catalog with tables
- DynaPDF/Create Text as PDFA
- DynaPDF/Invoice/Invoice
- DynaPDF/Merge PDFs
- DynaPDF/Report
- DynaPDF/Shrink PDF pages
- DynaPDF/Signature Appearance
Blog Entries
- Draw images with text using DynaPDF
- MBS Plugin Advent calendar: 15 - DynaPDF
- Merge documents with DynaPDF
- Things you can do with DynaPDF
- New in MBS FileMaker Plugin 11.0
- New in MBS FileMaker Plugin 10.5
- Example Script for DynaPDF.FindText and DynaPDF.WebLink
- MBS FileMaker Plugin, version 9.1pr2
FileMaker Magazin
This function checks for a license.
Created 18th August 2014, last changed 19th December 2025