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.


The biggest plugin in space...