2011-12-12 4 views
6

Faks aldığımızda otomatik bir sistem üzerinden gelen PDF belgelerini korumak için kullanılacak bir web uygulaması oluşturuyorum. Kullanıcıların bu belgeleri gözden geçirmesi gerekir ve bu belgelerle yapabilmeleri için ihtiyaç duydukları en yaygın şeylerden biri, faks makinesine yanlış bir şekilde yerleştirildiklerinde tek tek sayfaları çevirir/döndürür. Bu neredeyse her zaman sayfanın 180 derece dönüşüdür. Bunu yapmak için bir işlev yarattım, işe yarıyormuş gibi görünüyor, ama sadece ilk kez çağrıldı. Bu işleve yapılan sonraki çağrılar artık işe yaramaz. Bu işlevle ilişkili bir başka garip şey de, seçilen konumlarda belgeye bazı metinler ekleyebilecek başka bir yöntem almamdır. Metne ve bazı koordinatlara geçiyorum ve metni bu koordinatlarda yazıyor ve her şey yolunda. Bu sorun,'dan sonra numaralı belgenin döndürülmesidir (belge döndürürse), bir kullanıcı belgeye metin eklemeye çalışırsa, metni yerleştirdiği koordinatları tersine çevirir ve metin baş aşağı.PdfSharp: Belgede Sayfa Döndürme

Tüm bunlar, nihayetinde, sayfa rotasyonunu bir şekilde yapıyorum. PdfSharp belgesindeki bir sayfanın doğru yolunda nasıl döndürüleceğine dair iyi örnekler bulamıyorum, bu nedenle bazı yönlendirmeler son derece yardımcı olacak ve çok takdir edilecektir. Şimdiden teşekkürler. ama yerine,

// This is how I'm rotating the page... 
public PdfDocument FlipPage(byte[] documentSource, int pageNumber) 
{ 
    using (var stream = new MemoryStream()) 
    { 
     stream.Write(documentSource, 0, documentSource.Length); 
     var document = PdfReader.Open(stream); 
     var page = document.Pages[pageNumber - 1]; 
     page.Rotate = 180; 

     return document; 
    } 
} 

// This is how I'm adding text to a page... 
public static void AddTextToPage(this PdfDocument document, int pageNumber, Annotation annotation) 
{ 
    var page = document.Pages[pageNumber - 1]; 
    annotation.TargetHeight = page.Height.Value; 
    annotation.TargetWidth = page.Width.Value; 

    var graphics = XGraphics.FromPdfPage(page); 
    var textFormatter = new XTextFormatter(graphics); 
    var font = new XFont("Arial", 10, XFontStyle.Regular); 
    graphics.DrawString(annotation.Text, font, XBrushes.Red, new PointF((float)annotation.TargetX, (float)annotation.TargetY)); 
} 
+0

burayı kontrol edin: graphics.RotateTransform (180) –

+0

Bu, derler ve başarılı olur, ancak hiçbir şey yapmaz. –

cevap

6

benim uzmanlık alanım değil "page.Rotate = 180;": İşte

sayfalara metin sayfaları dönen ve ekleme Şu anda kullanıyorum kodu Böyle bir şeyi denemek istiyorum:

page.Rotate = (page.Rotate + 180) % 360; 

(kod, bir döküm gerektirebilir test edilmemiş)

metin eklerken, "page.Rotate == 180" için test etmek ve daha sonra farklı kodu kullanabilirsiniz ("graphics.RotateTransform (180)" gibi).

+0

Aahhh ... Daha sonraki güncellemelerdeki * özelliği kontrol etme fikrini düşünmemiştim. Bunu bir atış yapacağım ve nasıl çalıştığını göreceğim. Beklendiği gibi çalışıyorsa doğru olarak işaretleyecektir. Çok teşekkürler. –