... so richtig funktioniert's noch nicht.
Ich hab das in VB ausgeführt und bekomme ein GIF sowie HTM-File raus.
Wenn ich's mit dem Ergebnis des Assistenten vergleiche, sieht es eigentlich schon recht gut aus.
Per Export-Assistent definiere ich sonst die Quickinfos.
Tabellendaten oder URL-Aufruf sind nicht erforderlich.
Das Ergebnis sollte dann so aussehen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>
Arbeitsblatt 1
</title>
<meta name="Generator" content="GfK GeoMarketing HTML Export">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p align="left">
<img src="Test.gif" usemap="#imgMap" border="0" width="5740" height="4200" alt="map">
<map id="imgMap" name="imgMap">
<area nohref alt="999999999 Max Mustermann" title="999999999 | Max Mustermann" shape="rect" coords="947,4042,969,4063">
</map>
</p>
</body>
</html>
Das per Code generierte Ergebnis ist aber folgendes:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>
Arbeitsblatt 1
</title>
<meta name="Generator" content="GfK GeoMarketing HTML Export">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p align="left">
<img src="Test.gif" usemap="#imgMap" border="0" width="5740" height="4200" alt="map">
<map id="imgMap" name="imgMap">
<area nohref alt="" title="" shape="rect" coords="947,4042,969,4063">
</map>
</p>
</body>
</html>
Der VB-Code dazu:
Imports GfK.GeoMarketing.Api
Imports GfK.GeoMarketing.Shared
Imports System.IO
Imports System.Windows.Forms
Module modHTMLExport
Public Sub Execute_HTML_Export(ByVal myLayout As Layout, ByVal myLayer As MapLayer)
Dim fileName As String = myLayout.Name
Dim dirName As String = ""
Dim szOutput As System.Drawing.Size
' Dateinamen/Verzeichnis abfragen
Using fileDialog As New SaveFileDialog
With fileDialog
.FileName = fileName
.Filter = "HTML (*.htm)|*.htm"
.Title = "speichern unter"
If .ShowDialog() = DialogResult.OK Then
fileName = Path.GetFileNameWithoutExtension(.FileName)
dirName = Path.GetDirectoryName(.FileName)
Else
Exit Sub
End If
End With
End Using
' Bild erstellen und verwendete Größe definieren
Using fs = New FileStream((Path.Combine(dirName, fileName) & ".gif"), FileMode.Create, FileAccess.Write, FileShare.None)
' Bildgröße 5940 x 4200 Pixel aus A4-Layout erzeugen:
szOutput.Height = myLayout.Size.Height / 5
szOutput.Width = myLayout.Size.Width / 5
' Bild (GIF) erstellen
myLayout.SaveToGif(fs, szOutput.Width, szOutput.Height, 64, True) '64 Farben (1-256 möglich)
End Using
Dim ldc As New GfK.GeoMarketing.Api.LayoutDisplayContext
Dim rcPixel As RECTANGLE = New RECTANGLE(0, 0, szOutput.Width, szOutput.Height) 'Output Rectangle in Pixel Units
Dim szLayout As System.Drawing.Size = New System.Drawing.Size(myLayout.Width, myLayout.Height) 'Size of Layout in Layout Units (mm/100)
ldc.Init(rcPixel, szLayout, (ldc.AspectRatio))
' HTML-File erstellen
Dim targetWriter As IO.TextWriter = New StreamWriter(Path.Combine(dirName, fileName) & ".htm", False)
With targetWriter
.WriteLine("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">")
.WriteLine("<html>")
.WriteLine(" <head>")
.WriteLine(" <title>")
.WriteLine("Vergleich PLZ-Grenzen")
.WriteLine(" </title>")
.WriteLine(" <meta name=""Generator"" content=""GfK GeoMarketing HTML Export"">")
.WriteLine(" <meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"">")
.WriteLine(" </head>")
.WriteLine(" <body>")
.WriteLine(" <p align=""left"">")
.WriteLine(" <img src=""" & Strings.LCase(fileName) & ".gif"" usemap=""#imgMap"" " & _
"border=""0"" width=""" & szOutput.Width & """ height=""" & szOutput.Height & """ alt=""map"">")
End With
Dim anchorName As String = "imgMap"
Dim tooltipColKeys As String() = {"Kennung", "Name1"}
myLayer.CreateHTMLImageMap(targetWriter, anchorName, ldc, tooltipColKeys, Nothing, Nothing, _
False, "", "", False, "", Nothing)
' HTML-File schließen
With targetWriter
.WriteLine(" </p>")
.WriteLine(" </body>")
.WriteLine("</html>")
.Close()
End With
End Sub
End Module
Ich denke nun, dass ich beim Aufruf der CreateHTMLImageMap-Funktion etwas falsch mache, habe aber auch schon andere Varianten durchprobiert.
Wer hat dazu eine Idee?
(Ganz nebenbei bemerkt:
Unter Win XP und IE wird das Bild gar nicht angezeigt. Das ist aber ein anderes Problem)