2009-08-24 4 views
5

Ich habe einen Code geschrieben, der die PdfSharp-Bibliothek verwendet. Die erstellte Instanz von PdfSharp.Pdf.PdfDocument wird wie erwartet auf dem Datenträger gespeichert. Der richtige Inhalt wird angezeigt, aber auf die falschen Seiteneinstellungen.PdfSharp - Falsche PDF-Seiteneinstellungen, wenn das Dokument in Acrobat geöffnet wird

Die Standardseiteneinstellungen für PDFsharp sind:

  1. PdfSharp.PageSizes.A4
  2. PdfSharp.PageOrientation.Portrait

Mein Problem ist, dass diese Einstellungen scheinen die erforderlichen Einstellungen außer Kraft zu setzen.

Ich erstelle die Instanz der PdfDocument-Klasse und fügt der Pages-Auflistungseigenschaft eine neue Instanz der PdfPage-Klasse hinzu. Dann habe ich Setup die Seite wie folgt aus:

  1. PdfDocument.Pages [0] = .Size PdfSharp.PageSizes.Letter
  2. PdfDocument.Pages [0] = .Orientation PdfSharp.PageOrientation.Landscape
  3. I ziehen die Saiten (das funktioniert gut)
  4. ich speichern Sie das Dokument auf der Festplatte (das funktioniert gut)
  5. Process.Start (myPdfFilename) - dann Acrobat Reader öffnet mit meinem Dokument.
  6. Die Seiteneinstellungen sind A4 - Porträt ...

ich ziemlich verwirrt bin. Ich kenne eine Option in Acrobat Reader, mit der der Benutzer die Seitenausrichtung ändern kann, ohne die Textrichtung zu ändern. Egal, ob ich diese Option überprüfe oder nicht, immer noch laufen die falschen Einstellungen.

Jeder hat eine Idee? Vielen Dank!

+0

Dank PJP ich schrieb es auf diese Weise während der Bearbeitung, aber es angezeigt bizarly und ich weiß nicht, warum –

Antwort

7

Aus irgendeinem Grunde scheint PDFsharp nicht gleich zu verhalten beide mit dem folgenden:

Beispiel 1 - Es scheint nicht die Instanz von PDFPAGE Klasse des PDFDocument zu assoziieren, obwohl die Seite Einstellungen korrekt sind während des Aufrufs und nachdem die PdfDocument.Save() - Methode aufgerufen wurde.

var pdfDoc = new PdfDocument(); 
var pdfPage = pdfDoc.AddPage(); 
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape; 
pdfPage.Size = PdfSharp.PageSize.Letter; 
pdfPage.Rotate = 0; 
pdfDoc.Save(filename); 

Beispiel 2 - Das gleiche hier ...

var pdfDoc = new PdfDocument(); 
pdfDoc.Pages.Add(); 
pdfDoc.Pages[0].Orientation = PdfSharp.PageOrientation.Landscape; 
pdfDoc.Pages[0].Size = PdfSharp.PageSize.Letter; 
pdfDoc.Pages[0].Rotate = 0; 
pdfDoc.Save(filename); 

Beispiel 3 - Das scheint mein Problem gelöst haben

var pdfPage = new PdfPage(); 
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape; 
pdfPage.Size = PdfSharp.PageSize.Letter; 
pdfPage.Rotate = 0; 
var pdfDoc = new PdfDocument(); 
pdfDoc.Pages.Add(pdfPage); 
pdfDoc.Save(filename); 

Wer noch keine Ahnung von dem, was ich hier fehlt ? Ich scheine das gleiche in jedem dieser Beispiele zu tun, soweit es mich betrifft.

Lösung ist:

var pdfPage = new PdfPage(); 
pdfPage.Size = PdfSharp.PageSize.Letter; 
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape; 
pdfPage.Rotate = 0; 
var pdfDoc = new PdfDocument(); 
pdfDoc.Pages.Add(pdfPage); 
pdfDoc.Save(filename); 

Set Größe zuerst.

Vielen Dank für Kommentare und/oder Antworten!

+0

es. scheint, dass ich die Seitenausrichtung der Einstellung zweimal angeben muss, sonst ist es nicht gültig ... –

+0

habe ich festgestellt, wenn ich die orienta einstelle Vor der Größe ist es so, als ob die Ausrichtung zurückgesetzt wurde. Wenn ich jedoch die Größe vor der Ausrichtung einstelle, sieht es so aus, als ob es besser funktioniert. Sehr verwirrend all das ... –

6

Ich habe dieses Problem untersucht. Es scheint, dass Sie "Seite" einstellen müssen.Größe "vor der Einstellung" page.Orientation "zu Landschaft. Dies ist ein Fehler, da die Reihenfolge hier keine Rolle spielen sollte.

Reihenfolge Angelegenheiten - aber die Problemumgehung ist einfach: vertauschen Sie 2 Zeilen in Beispiel 1 und Sie sind fertig (BTW: keine Notwendigkeit einstellen Drehen auf 0)

PDFsharp Forum:.!
http://forum.pdfsharp.net/

+0

Vielen Dank für Ihre Antwort! Es ist nicht immer offensichtlich, dass unsere Workarounds gut sind, bis ein anderer Programmierer kommt. Das hilft mir sehr. Vielen Dank! –

+0

Und danke auch für die URL des PDFSharp-Forums –

Verwandte Themen