Automatisches Exportieren

Hallo ArcObjects-Experten,


ich habe in VBA eine Routine geschrieben, welche die Layouts automatisch in eine Rasterdatei schreibt. Das klappt soweit ganz gut. Es scheint aber unmöglich die Ausgabequalität zu steuern und zwar unabhängig davon, ob es sich um EPS oder JPG als Ausgabeformat handelt. Im ESRI-Verteiler wurde dies auch schon diskutiert. Habe aber bisher keine Lösung gefunden.

Die Ergebnisse sind recht pixelig auch wenn 300 dpi Ausgabequalität angegeben wird, oder die Eingabegröße TagRect per Multiplikation vergrößert wird.

Ist jemand unter den ArcObjects-Experten schon mal darüber gestolpert?

Anbei mein Code:



Public Sub ExportAndSave(strFilename As String)
On Error GoTo ErrorHandler


'IExport Basisangaben für Export wie z.B. Dateiname

Dim pExport As IExport
Set pExport = New ExportJPEG

'IExport PS zum Exportieren für JPEG

Dim pExportJPEG As IExportJPEG

Dim pTagRECT As tagRECT

pTagRECT = pMxDoc.ActiveView.ExportFrame
pTagRECT.Right = pTagRECT.Right * 4.25
pTagRECT.bottom = pTagRECT.bottom * 4.25
Dim pEnvelope As IEnvelope
Set pEnvelope = New Envelope
pEnvelope.PutCoords pTagRECT.Left, pTagRECT.Top, pTagRECT.Right, pTagRECT.bottom


With pExport
.ExportFileName = strFilename
.Resolution = 300
.PixelBounds = pEnvelope


End With

Set pExportJPEG = pExport

With pExportJPEG
.ProgressiveMode = False
.Quality = 80

End With


Dim pCancel As ITrackCancel
Set pCancel = New CancelTracker

Dim lDC As Long

lDC = pExport.StartExporting
pMxDoc.ActiveView.Output lDC, pExport.Resolution, pTagRECT, Nothing, pCancel


pExport.FinishExporting

pExport.Cleanup

Exit Sub

ErrorHandler:
MsgBox Err.Number & ", " & Err.Description
End Sub



ein ArcObjects Anfänger (Jens) bedankt sich schon mal für die Tips
Hallo Jens,

wie man die Auflösung erfolgreich programmatisch vorgeben kann, weiss ich nicht. Aber mir ist in einem ähnlichen Fall mal aufgefallen, dass es hilft, wenn man die Auflösung im Vorwege manuell im <<Drucken>>-Dialog auf <<Beste Qualität>> setzt. Der Zustand bleibt dann über die gesamte Sitzung erhalten. Das ist zugegebenermaßen nur ein Workaround, aber vielleicht hilft es dir weiter.

Gruß

Uwe
Bei einer höheren Auflösung (also höher als die Bildschirmauflösung), musst du den ExportFrame neu berechnen. Dafür gibt in der Hilfe ein Beispiel: "Export Active View to JPEG". Guck dir mal die zweite Variante an.
Hallo Uwe und Gast,

ist schon ne Weile her. Aber vielen Dank für die Anmerkungen:

@Uwe
Ich konnte das Phänomen auch beobachten: Nachdem ich zwischenzeitlich einen normalen Druck abgeschickt hatte, produzierte meine unveränderte Routine plötzlich 10fach größere Dateien - die Qualität war gut. Die Dateigrößen aber kaum noch handelbar.

@Gast
Ja im Prinzip habe ich das so gemacht. Der Faktor 4,25 in meinem Skript entspricht (iOutputResolution/iScreenResolution) einer Auflösung von 408.
Das "komische" eben ist, dass eine Auflösung von 300 nicht genügt. Mit ca. 400 ist das Ergebnis akzeptabel. Höher geht nicht, da sonst die Dateigrößen v.a. für Projektbeteilgte nicht mehr handlebar sind.


Grüße von Jens