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
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
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von uwelangehh am Do., 04.05.2006 - 16:32
Permalinkwie 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
Gespeichert von Gast am Do., 04.05.2006 - 17:02
PermalinkGespeichert von Jens am Fr., 05.05.2006 - 09:27
Permalinkist 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