2009-08-24 16 views
5

Napisałem fragment kodu, który korzysta z biblioteki PdfSharp. Instancja PdfSharp.Pdf.PdfDocument utworzyła zapis na dysku zgodnie z oczekiwaniami. Wyświetlana jest właściwa treść, ale na złe ustawienia strony.PdfSharp - Błędne ustawienia strony PDF po otwarciu dokumentu w Acrobat

domyślnych ustawień aktualizacja PdfSharp są:

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

Moim problemem jest to, że ustawienia te wydają się zastąpić wymagane ustawienia.

Tworzę instancję klasy PdfDocument i dodaję nową instancję klasy PdfPage do jej właściwości kolekcji Strony. Potem konfiguracji strona tak:

  1. PdfDocument.Pages [0] .Size = PdfSharp.PageSizes.Letter
  2. PdfDocument.Pages [0] .Orientation = PdfSharp.PageOrientation.Landscape
  3. I wyciągnąć ciągów (to działa prawidłowo)
  4. zapisać dokument na dysku (to działa prawidłowo)
  5. Process.Start (myPdfFilename) - następnie Acrobat Reader otwiera z mojego dokumentu .
  6. ustawienia strony są A4 - Portret ...

jestem zupełnie zdezorientowany. Znam opcję w programie Acrobat Reader, która pozwala użytkownikowi zmienić orientację strony bez zmiany kierunku tekstu. Bez względu na to, czy zaznaczę tę opcję, czy też nie, nadal złe ustawienia będą kontynuowane.

Ktoś ma pomysł? Dzięki!

+0

Dzięki PJP napisałem to w ten sposób, podczas edycji, ale wyświetlane bizarly i nie wiem dlaczego –

Odpowiedz

7

Z jakiegoś dziwnego powodu, PdfSharp wydaje się nie zachowują się tak samo zarówno z następujących czynności:

Przykład 1 - Nie wydaje się, aby powiązać wystąpienie klasy PdfPage do PdfDocument mimo ustawienia strony są prawidłowe podczas wywoływania i po wywołaniu metody PdfDocument.Save().

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

Przykład 2 - to samo tutaj ...

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); 

Przykład 3 - To wydaje się rozwiązać mój problem

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); 

ktoś ma jakiś pomysł co ja tu brakuje ? Wydaje mi się, że robię to samo w każdym z tych przykładów, jeśli o mnie chodzi.

Rozwiązanie to: wielkość

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 pierwszy.

Dzięki za wszelkie komentarze i/lub odpowiedzi!

+0

It. wydaje mi się, że muszę określić dwa razy ustawienia orientacji strony, w przeciwnym razie nie jest to prawidłowe ... –

+0

Zauważyłem, że jeśli ustawię orientę przed wielkością, to tak, jakby orientacja została zresetowana. Jednak po ustawieniu rozmiaru przed orientacją wygląda na to, że działa lepiej. Bardzo mylące to wszystko ... –

6

Przeanalizowałem ten problem. Wygląda na to, że musisz ustawić "stronę.Rozmiar "przed ustawieniem" page.Orientation "na krajobraz To błąd, ponieważ zamówienie nie powinno mieć znaczenia tutaj:

Zamówienie spraw - ale obejście jest proste: zamień 2 linie w przykładzie 1 i gotowe (BTW: nie ma potrzeby, aby ustawić Rotate 0)

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

+0

Dziękuję bardzo za odpowiedź! Nie zawsze jest oczywiste, aby zapewnić, że nasze obejście jest dobre, dopóki nie pojawi się inny programista. To bardzo mi pomaga. Dziękuję Ci! –

+0

Dziękuję również za adres URL forum PDFSharp –

Powiązane problemy