Platforms to show: All Mac Windows Linux Cross-Platform
Required plugins for this example: MBS DynaPDF Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /DynaPDF/Letter/Web Letter
This example is the version from Sun, 5th Nov 2022.
Project "Web Letter.xojo_binary_project"
Class App Inherits WebApplication
End Class
Class Session Inherits WebSession
Const ErrorDialogCancel = "Do Not Send"
Const ErrorDialogMessage = "This application has encountered an error and cannot continue."
Const ErrorDialogQuestion = "Please describe what you were doing right before the error occurred:"
Const ErrorDialogSubmit = "Send"
Const ErrorThankYou = "Thank You"
Const ErrorThankYouMessage = "Your feedback helps us make improvements."
Const NoJavascriptInstructions = "To turn Javascript on, please refer to your browser settings window."
Const NoJavascriptMessage = "Javascript must be enabled to access this page."
End Class
Class WebPage1 Inherits WebPage
Control TextArea1 Inherits WebTextArea
ControlInstance TextArea1 Inherits WebTextArea
End Control
Control Button1 Inherits WebButton
ControlInstance Button1 Inherits WebButton
EventHandler Sub Pressed()
run
End EventHandler
End Control
Function FindFile(name as string) As FolderItem
// Look for file in parent folders from executable on
dim parent as FolderItem = app.ExecutableFile.Parent
while parent<>Nil
dim file as FolderItem = parent.Child(name)
if file<>Nil and file.Exists then
Return file
end if
parent = parent.Parent
wend
End Function
Sub run()
dim pdf as new MyDynapdfMBS
pdf.SetLicenseKey "Pro" // For this example you can use a Pro or Enterprise License
call pdf.CreateNewPDF(nil)
dim file as FolderItem = FindFile("letter-template.pdf")
// open import file
call pdf.openimportFile(file, pdf.kptopen, "")
// get first page as template
pdf.Template=pdf.importpage(1)
call pdf.append
// place template on this page
'call pdf.placeTemplate(pdf.Template, 0, 0, pdf.getpagewidth,pdf.getpageheight) // scale to fit
// placeTemplateEx fits better often
call pdf.placeTemplateEx(pdf.Template, 0, 0, 0, 0) // fit to page
call pdf.setfont "Times",pdf.kfsNone, 14, true, pdf.kcpUnicode
// start horizontal 130 from left
// start veritical 600 from bottom
// width is page width minus 130 pixels left and 50 right
// height is page height minus 100 on bottom and 250 on top
call pdf.settextrect 130,600,pdf.getpageWidth-130-50,pdf.getpageHeight-100-250
call pdf.writeftext(pdf.ktajustify, TextArea1.text)
call pdf.EndPage
call pdf.closefile
webfile = new WebFile
webfile.Data = pdf.GetBuffer
webfile.Filename = "letter.pdf"
webfile.ForceDownload = true
GoToURL webfile.URL
End Sub
Property webfile As WebFile
End Class
Class MyDynapdfMBS Inherits DynapdfMBS
EventHandler Function Error(ErrorCode as integer, ErrorMessage as string, ErrorType as integer) As integer
// output all messages on the console:
MessageBox str(ErrorCode)+": "+ErrorMessage
IgnoreWarnings = true
Return 0 // ignore
End EventHandler
EventHandler Function PageBreak(LastPosX as double, LastPosY as double, PageBreak as boolean) As integer
call endpage
call append
call SetPageCoords(kpcTopDown) // we use top down coordinates
call placeTemplate(Template, 0, 0, getpagewidth,getpageheight) // scale to fit
return 0
End EventHandler
Property IgnoreWarnings As Boolean
Property template As integer
End Class
FileTypes
Filetype Text
Filetype Icc
End FileTypes
Sign
End Sign
End Project
The items on this page are in the following plugins: MBS DynaPDF Plugin.