Ich habe (mal wieder) ein Problem mit sehr großen Bildern. Unter macOS
gibt es eine Größenbegrenzung für Picture bei 23767Pixel.
Wenn ich nun ein Bild erzeugen möchte, dass auf DIN-A1 ausgegeben werden
soll, hat eine A1-Seite bei 1200dpi eine Auflösung von 27600x39700
Pixel. Da bin ich dann schon über die Grenze für die maxiale Größe eines
Picture hinaus. Bei A0 dann für beide Werte. Jetzt kann ich natürlich
das Bild in zwei (oder mehr) Teilen erstellen. Dann habe ich aber noch
immer ein Problem, wenn ich die beiden Picture in eine großes PNG-Datei
sichern möchte.
Auch mit dem Drucken habe ich so meine Probleme. Wenn ich einen Druck
starte, erzeuge ich zuerst das Graphics-Objekt:
PGrafic=OpenPrinterDialog(PSetup)
Funktioniert. Jedoch hat das Graphics-Objekt immer eine Größe von 3262x2339
Pixel. Das kommt aus dem Printer-Setup, in dem diese Werte vorgegeben
sind. Es spielt auch keine Rolle, ob ich DIN-A4 oder DIN-A3 nutze. Ich
bekomme immer ein Printer-Setup von 3262x2339 Pixel mit 300dpi.
Ich hätte erwartet, dass ich in den Druckeinstellungen die Auflösung
erhöhen kann oder zumindest die Größe mit einem größerem Ausgabeformat
ansteigt.
Mache ich etwas falsch oder einen Denkfehler?
Für mich ist derzeit dass Problem, dass ich viele kleine Textboxen (ca. 24x13mm) auf
A1 ausgeben möchte. Selbst wenn das noch in einem Picture in 300 oder
gar 600dpi erzeugt werden kann, müsste ich das Bild dann ja für den
Drucker auf 3262x2339 runter skalieren. Das ist dann sicher nicht mehr
lesbar.
Wie bekomme ich vom Printer-Setup ein größeres Graphics-Objekt? Mache
ich einen Denkfehler?
Derzeit kann ich lediglich das Picture als Bild sichern. Aber auch denn
mit der Begrenzung auf 32767 Pixel. Wie kann ich größere Bilder
erzeugen?
Hat jemand eine Idee, warum die Größe der Druckgrafik immer identisch ist (Printer-Setup von 3262x2339 Pixel mit 300dpi), egal ob ich aus A4 oder A3 ausgebe?
Auf dieser Seite finden sich die Auflösungen, die ich erwarten würde. Egal ob mit oder ohne Rand, sollte ich unterschiedliche Werte erhalten.
Oder kann das damit zusammen hängen, dass ich nicht gedruckt habe sondern die Ausgabe als PDF nutze. Aber selbst da würde ich das nicht erwarten. Schließlich bietet A3 den doppelten Platz von A4.
Die Ausgabe enthält nicht nur die Textboxen sondern ggf. eine Hintergrundgrafik (vollflächig) , die Textboxen können einen Rahmen erhalten, der als Pixelgrafik ausgegeben wird und es werden ggf. auch weitere Grafikelemente als Pixelgrafik dort ausgegeben.
Ich muss jedoch zugeben, dass ich mich mit TextShape noch nicht befasst habe. Kann ich das mit Pixelgrafik mischen? Also den Text per TextShape ausgeben und die Bilder als Picture?
Ich denke schon das man das mischen kann weil getrennte Funktionen aufgerufen werden.
Aber ich erinnere mich das die PDFDokument Klasse von Xojo kein DrawObject unterstützt. Dort sollte zumindest DrawText und DrawPicture gehen. Da Du PrinterSetup nutzt gehe ich davon aus das dieses Graphics DrawObject kann. TextShape kann viel besser Text ausrichten.
Das ist ja mein Problem. Der Drucker kann definitiv A3 Randlos per Einzelblatteinzug. Dennoch bekomme ich identische Größen für das vom PrinterSetup gelieferte Graphics-Object.
Welche Möglichkeit hätte ich sonst noch, die Ausgabe in A3 (oder größer) zu wählen, wenn ich keinen passenden Drucker habe und die Ausgabe zu Vorschau umleiten möchte.
Das Einzige, was mir einfällt wäre, einen passenden Druckertreiber zu installieren. Das ginge sicher auch ohne Drucker.
Also bei mir kommen bei Papierformat A3 als Width & Height 806 x 1155 raus.
Bei A4 nur 559 x 783.
Code so:
Dim setup As New PrinterSetup
Call setup.ShowPageSetupDialog
Dim g As Graphics = OpenPrinterDialog(Setup)
If g <> Nil Then
MessageBox Str(g.Width)+" x "+Str(g.Height)
End If
Ich drücke dann immer im ersten Dialog OK und beim zweiten als PDF anzeigen unten links im Menü. das passier nicht zu deinen Werten:
Damit scheint das auszugebende Bild nur an das Papierformat angepasst zu werden, ohne mehr Fläche (Pixel) zu bieten. Über ShowPageSetupDialog könnte man das möglicherweise weiter anpassen. Ich werde ich die Richtung weiter experimentieren.