Map2PDF Software Integration
Can I customize my export to GeoPDF from ArcGIS? Of course you can!!! TerraGo has included a series of COM interfaces and objects which allows each user to customize their workflow. To get more information on this, please check out the compiled help that installs with the software. I included a little VBA routine that anyone can cut and paste in to the VBA compiler that installs with ArcGIS.
Sub ExportToGeoPDF()
' simple sample code presumes a specific, known MXD and uses a hardcoded output name
Dim fileName As String
fileName = "C:\temp\engine_geopdf2.pdf"
Dim pMxDocument As IMxDocument
Set pMxDocument = ThisDocument
Dim pPageLayout As IPageLayout
Set pPageLayout = pMxDocument.PageLayout
Dim pActiveView As IActiveView
Set pActiveView = pPageLayout
Dim pMap As IMap
Set pMap = pMxDocument.Maps.Item(0)
If pMap Is Nothing Then Exit Sub
Dim pLayer As ILayer
Set pLayer = pMap.Layer(0)
If pLayer Is Nothing Then Exit Sub
' cocreate the exporter
Dim pExport As IExport
Set pExport = New ExportGeoPDF
Dim pExport2 As IExportGeoPDF2
Set pExport2 = pExport
Dim pConfig As IGeoPDFConfig
Set pConfig = pExport
' set global options: PDF layering and PDF annotation type
pConfig.Layering = True
Config.Compatibility = geoPDFAnnotType.geoPDFAnnotTypeObjectData
' set the layer to receive PDF annotations
pConfig.PutAnnotate pLayer, True
' the rest is like any other exporter - except that IActiveView.Output is unnecessary
pExport.ExportFileName = fileName
pExport.Resolution = 300
Dim tmpDC As Long
tmpDC = GetDC(0)
Dim screenResolution As Integer
screenResolution = GetDeviceCaps(tmpDC, 88)
ReleaseDC 0, tmpDC
Dim scaleFactor As Double
scaleFactor = pExport.Resolution / screenResolution
Dim exportRECT As tagRECT
With exportRECT
.Left = pActiveView.ExportFrame.Left * scaleFactor
.Top = pActiveView.ExportFrame.Top * scaleFactor
.Right = pActiveView.ExportFrame.Right * scaleFactor
.bottom = pActiveView.ExportFrame.bottom * scaleFactor
End With
Dim pPixelBoundsEnv As IEnvelope
Set pPixelBoundsEnv = New Envelope
pPixelBoundsEnv.PutCoords exportRECT.Left, exportRECT.Top, exportRECT.Right, exportRECT.bottom
pExport.PixelBounds = pPixelBoundsEnv
Dim hdc As Long
hdc = pExport.StartExporting
' the usual call to IActiveView.Output at this point that is required by other exporters is not needed
pExport.FinishExporting
pExport.Cleanup
End Sub
1 Comments:
http://www.e-geomatics.gr
10:41 AM EDT
Post a Comment
<< Home