Platforms to show: All Mac Windows Linux Cross-Platform
/DynaPDF/Raster/RenderPageToImage with color management
Required plugins for this example: MBS Win Plugin, MBS MacBase Plugin, MBS DynaPDF Plugin, MBS Images Plugin, MBS Main Plugin
Last modified Tue, 21th Jan 2019.
You find this example project in your MBS Xojo Plugin download as a Xojo project file within the examples folder: /DynaPDF/Raster/RenderPageToImage with color management
Download this example: RenderPageToImage with color management.zip
Project "RenderPageToImage with color management.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
EventHandler Sub NewDocument()
dim f as FolderItem = GetOpenFolderItem(FileTypes1.Pdf)
if f<>Nil then
OpenDocument f
end if
End EventHandler
EventHandler Sub OpenDocument(item As FolderItem)
run item
End EventHandler
Sub run(item as FolderItem)
dim pdf as new MyDynapdfMBS // your DynaPDF subclass with Error event filled
pdf.SetLicenseKey "Pro" // For this example you can use a Pro or Enterprise License
call pdf.CreateNewPDF nil
// load CharacterMaps if you want to correctly process asian fonts
'call pdf.SetCMapDir(SpecialFolder.Desktop.Child("CMap"), pdf.klcmRecursive)
call pdf.SetImportFlags(pdf.kifImportAll + pdf.kifImportAsPage)
// init color management
dim ScreenProfile as FolderItem
if TargetWin32 then
// win plugin
ScreenProfile = GetWindowsColorProfileMBS
else
// mac plugin
dim screen as NSScreenMBS = NSScreenMBS.mainScreen
dim colorspace as NSColorSpaceMBS = screen.colorSpace
if colorspace <> nil then
ScreenProfile = colorspace.File
end if
end if
dim profiles as new DynaPDFColorProfilesMBS
Profiles.DefInCMYK = nil // default
Profiles.DefInGray = nil // default
Profiles.DefInRGB = nil // default
Profiles.DeviceProfile = ScreenProfile
Profiles.SoftProof = nil // default
if pdf.InitColorManagement(profiles, pdf.kcsDeviceRGB, pdf.kicmBPCompensation) then
// open file
call pdf.OpenImportFile(item,0,"")
// add page
call pdf.Append
// import the first page
call pdf.ImportPageEx(1,1.0,1.0)
call pdf.EndPage
dim p as DynaPDFPageMBS = pdf.GetPage(1)
dim ra as DynaPDFRectMBS = p.BBox(p.kpbArtBox)
dim rb as DynaPDFRectMBS = p.BBox(p.kpbBleedBox)
dim rc as DynaPDFRectMBS = p.BBox(p.kpbCropBox)
dim rm as DynaPDFRectMBS = p.BBox(p.kpbMediaBox)
dim rt as DynaPDFRectMBS = p.BBox(p.kpbTrimBox)
// render the page
call pdf.RenderPageToImage(1, nil, 72, 0, 0, DynaPDFRasterImageMBS.krfDefault, DynaPDFRasterizerMBS.kpxfRGB, DynaPDFMBS.kcfFlate, DynaPDFMBS.kifmPNG)
dim buf as string = pdf.GetImageBuffer
dim pic as Picture = PNGStringToPictureMBS(buf)
dim w as new PicWindow
w.Backdrop = pic
w.show
end if
End Sub
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
Class MyDynaPDFMBS Inherits DynaPDFMBS
EventHandler Function Error(ErrorCode as integer, ErrorMessage as string, ErrorType as integer) As integer
// output all messages on the console:
System.DebugLog str(ErrorCode)+": "+ErrorMessage
// and display dialog:
Dim d as New MessageDialog //declare the MessageDialog object
Dim b as MessageDialogButton //for handling the result
d.icon=MessageDialog.GraphicCaution //display warning icon
d.ActionButton.Caption="Continue"
d.CancelButton.Visible=True //show the Cancel button
// a warning or an error?
if BitAnd(ErrorType, me.kE_WARNING) = me.kE_WARNING then
// if user decided to ignore, we'll ignore
if IgnoreWarnings then Return 0
d.Message="A warning occurred while processing your PDF code."
// we add a third button to display all warnings
d.AlternateActionButton.Caption = "Ignore warnings"
d.AlternateActionButton.Visible = true
else
d.Message="An error occurred while processing your PDF code."
end if
d.Explanation = str(ErrorCode)+": "+ErrorMessage
b=d.ShowModal //display the dialog
Select Case b //determine which button was pressed.
Case d.ActionButton
Return 0 // ignore
Case d.AlternateActionButton
IgnoreWarnings = true
Return 0 // ignore
Case d.CancelButton
Return -1 // stop
End select
End EventHandler
Property IgnoreWarnings As Boolean
End Class
FileTypes1
Filetype application/pdf
End FileTypes1
Class PicWindow Inherits Window
End Class
End Project
See also:
Download this example: RenderPageToImage with color management.zip
The items on this page are in the following plugins: MBS DynaPDF Plugin.
