Discussion:
XpsDocumentWriter erzeugt B4 statt A4
(zu alt für eine Antwort)
Julia M
2010-01-07 11:58:44 UTC
Permalink
Hi,

Ich benutze folgende Zeilen, um eine xps-Datei zu erzeugen (aus einem
Paginator):

XpsDocument xpsd = new XpsDocument(xpsdatei, FileAccess.ReadWrite);
XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
xw.Write(paginator);
xpsd.Close();

Dummerweise erhalte ich ausschließlich Seitengrößen im B4-Format.
Dasselbe geschieht, wenn das Dokument über den
XpsDocumentWriter-"Drucker" ausdrucke.

Die Seiten, die vom paginator erstellt werden, haben definitiv A4-
Format. Auf jedem anderen Drucker sehen sie so aus, wie sie sollen.
Nur bei Xps fehlen unten 2cm und es ist nur noch ganz knapp der
Fußnotenstrich zu erkennen.

Die Einstellungen des "Druckers" und auch alle Werte des PrintTickets
etc. zeigen PageMediaSize von 793x1122 px an. Also A4.

Auch xw.Write(paginator, dialog.PrintTicket) hatte keinerlei
Auswirkungen auf das Format.

hat jemand eine zündende Idee, was ich falsch mache?

Danke
Herfried K. Wagner [MVP]
2010-01-12 04:14:07 UTC
Permalink
Hallo Julia!
Post by Julia M
Ich benutze folgende Zeilen, um eine xps-Datei zu erzeugen (aus einem
XpsDocument xpsd = new XpsDocument(xpsdatei, FileAccess.ReadWrite);
XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
xw.Write(paginator);
xpsd.Close();
Dummerweise erhalte ich ausschließlich Seitengrößen im B4-Format.
Dasselbe geschieht, wenn das Dokument über den
XpsDocumentWriter-"Drucker" ausdrucke.
Das scheint wohl ein generelles Problem des XPS Document Writers zu sein.

Eventuell kommt für Dich die Verwendung eines 'PrintTicket'-Objektes in
Frage, bei dem das Papierformat explizit angegeben werden kann:

How to change default papersize of XPS printer
<URL:http://social.msdn.microsoft.com/Forums/en/windowsxps/thread/8af6ba92-5d2c-444b-91f4-a8747739c1b7>
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
FrankDzaebel
2010-01-12 09:26:36 UTC
Permalink
Hallo Julia,
[...] PageMediaSize von 793x1122 px an. Also A4.
Das ist korrekt. Du musst aber AFIAK noch die PageSize
des Paginators umsetzen, weil der sonst immer 816 x 1056 ist.
Das wäre über die PrintDocumentImageableArea die
MediaSizeWidth und MediaSizeHeight.
Ich benutze folgende Zeilen, um eine xps-Datei zu erzeugen
(aus einem Paginator): [...]
Dummerweise erhalte ich ausschließlich Seitengrößen im B4-Format.
Dasselbe geschieht, wenn das Dokument über den
XpsDocumentWriter-"Drucker" ausdrucke.
Zum einen prüfe, ob der Drucker überhaupt die Capabilities
zur Verfügung stellt (->ISOA4) :

[PrintCapabilities.PageMediaSizeCapability-Eigenschaft
(System.Printing)]
http://msdn.microsoft.com/de-de/library/system.printing.printcapabilities.pagemediasizecapability.aspx
(-> printQueue.GetPrintCapabilities() ... )



b) Nutze ggf. das explizite Setzen der PageSize, etwa:

PrintDocumentImageableArea area = null;
XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(ref
area);
if (xpsdw != null)
{
DocumentPaginator paginator = dps.DocumentPaginator;
paginator.PageSize = new Size(area.ExtentWidth, area.ExtentHeight);
xpsdw.Write(paginator)
}

Bei mir klappt es zum Beispiel auch folgendermassen:

[Printing a WPF FlowDocument - Stack Overflow]
http://stackoverflow.com/questions/345009/printing-a-wpf-flowdocument



c) Hier ggf. weitere detaillierte Beschreibungen und Hintergründe
zu dem Thema:

[Building Windows UI with Windows Presentation Foundation]
http://www.docstoc.com/docs/20278743/Windows-Presentation-Foundation-second-edition-(WPF)


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Loading...