Sehr großes Bild drucken/sichern

Ich habe (mal wieder) ein Problem mit sehr großen Bildern. Unter macOS
gibt es eine Größenbegrenzung für Picture bei 23767Pixel. :frowning:
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?

Wir haben diverse Pluginklassen für große Bilder, weil Xojo das nicht unbedingt eingebaut hat.
PictureMBS zum Beispiel.

Das schau ich mir mal an. Danke.

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?

woher hast du die Zahlen?

A4 bei 300 dpi wäre 2480 x 3508 px

Eventuell hast du da A4 abzüglich dem nicht druckbaren Bereich?

dass ich viele kleine Textboxen (ca. 24x13mm) auf
A1 ausgeben möchte

Warum nicht als Vector Grafik rein malen? (TextShape und Linien Objekte)
Wieso unbedingt als Bild?

Ich habe identische Größen und Auflösungswerte bei Auswahl der Papiergröße A3 und A4. Hier mal die Werte des PrinterSetup A4:

und hier für A3randlos:

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.

Was ist denn da los bei den Zahlen. Die sind doch gleich für A3 und A4!?

Bist Du sicher, dass der A3 macht?

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.

MarkusR
“Ich denke schon das man das mischen kann weil getrennte Funktionen aufgerufen werden.”

Das müsste ich mir mal genauer ansehen. Das würde zumindest helfen, wenn ich den Hintergrund weglasse

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:

Haben Sie in den Druckeinstellungen nicht:

Manchmal ist es sogar möglich, die Größe des Papiers zu definieren (cm, pixel, …)

Eure Hinweise sind hilfreich!
Zum Einen nutze ich nur den reinen Druckdialog:

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.

Danke!