Es wurde ein Problem mit PDFSharp beim Zeichnen in verschiedenen Maßstäben mit der Skalierung erkannt.
In diesem Beispiel zeichnen wir zwei Rechtecke in verschiedenen Maßstäben, generieren ein XPS aus FixedDocumentSequence
und konvertieren das XPS schließlich mit dem PDFsharps XPS Konverter in PDF.
Das komplette Programm finden Sie hier und VS-Lösung hier .
Das rote Rechteck wird voraussichtlich an der oberen rechten Ecke des blauen Rechtecks ausgerichtet. Das bekommen wir beim Betrachten des generierten XPS:
Aber im generierten PDF erhalten wir eine Lücke zwischen den beiden Rechtecken.
Das Problem ist am offensichtlichsten, wenn man weit vom Ursprung entfernt zeichnet, in diesem Beispiel wird das rote Rechteck bei 160000 platziert, 130000 im Maßstab 1:85. Die Lücke wird umso größer, je länger der Ursprung ist, den Sie zeichnen. Könnte es sich um einen Präzisions- / Rundungsfehler handeln?
Ich habe versucht, dieses Problem ohne Erfolg zu lösen. Jede Hilfe bei der Suche nach der Ursache würde sehr geschätzt werden! Beachten Sie, dass das Problem beim PDFSharp-Rendering oder der XPS-Konvertierung liegt.
Ich verwende PDFSharp 1.31 ( neuere Versionen enthalten keine XPS-Unterstützung).
Komplette Visual Studio-Lösung mit diesem Beispiel (einschließlich PDFSharp lib) ist verfügbar hier .
Die Ursache gefunden, PDFSharp rundet die Werte der Transformationsmatrix auf 4 Dezimalstellen ab, wenn das PDF erzeugt wird, was in diesem Fall nicht ausreicht.
Um die Genauigkeit zu erhöhen, habe ich in PdfContentWriter
:
Dies ist der Unterschied in der generierten PDF (Ausführlicher Modus beim Ausführen von Debug):
Was zu einem korrekt gerenderten PDF führt:
Tags und Links pdfsharp