2011-12-12 13 views
6

मैं एक वेब ऐप बना रहा हूं जिसका उपयोग हमारे डेटाबेस में पीडीएफ दस्तावेज़ों को बनाए रखने के लिए किया जाएगा जो हमें प्राप्त होने पर स्वचालित सिस्टम के माध्यम से आते हैं। उपयोगकर्ताओं को इन दस्तावेजों की समीक्षा करने में सक्षम होना चाहिए, और इन दस्तावेजों के साथ करने में सक्षम होने वाली अधिक सामान्य चीज़ों में से एक को अलग-अलग पृष्ठों को फ़्लिप/घुमाया जाता है जब उन्हें फ़ैक्स मशीन में गलत तरीके से रखा जाता है। यह पृष्ठ के लगभग 180 डिग्री घूर्णन लगभग हमेशा होता है। मैंने ऐसा करने के लिए एक फ़ंक्शन बनाया है, जो काम करता प्रतीत होता है, लेकिन केवल पहली बार इसे बुलाया जाता है। इस फ़ंक्शन के बाद की कोई भी कॉल अब और काम नहीं कर रही है। इस समारोह से जुड़ी एक और अजीब चीज यह है कि मुझे एक और तरीका भी मिला है जिसे बुलाया जाता है जो चयनित स्थानों पर दस्तावेज़ में कुछ पाठ जोड़ देगा। मैं पाठ और कुछ निर्देशांक में पास करता हूं, और यह दस्तावेज़ में उन निर्देशांकों पर पाठ लिखता है, और सब ठीक है। इसके साथ समस्या के बाद दस्तावेज़ घुमाया गया है (एक बार यह घुमाएगा), यदि कोई उपयोगकर्ता कहीं दस्तावेज़ में टेक्स्ट जोड़ने का प्रयास करता है, तो यह उस निर्देशांक को उलट देता है जो टेक्स्ट को रखता है, और पाठ उल्टा है।पीडीएफशर्प: किसी दस्तावेज़ में पृष्ठ को घुमाएं

यह सब मुझे बताता है कि, आखिरकार, मैं पेज रोटेशन को किसी भी तरह गलत कर रहा हूं। मुझे किसी PdfSharp दस्तावेज़ में सही तरीके से किसी पृष्ठ को घुमाने के तरीके के किसी भी अच्छे नमूने नहीं मिल रहे हैं, इसलिए कुछ मार्गदर्शन बहुत उपयोगी होंगे और बहुत सराहना की जाएगी। अग्रिम में धन्यवाद।

यहाँ कोड मैं वर्तमान में उपयोग कर रहा हूँ पृष्ठों के लिए पृष्ठों घूर्णन, और जोड़ने पाठ के लिए है:

// 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

इसे जांचें: ग्राफिक्स.रोटेट ट्रान्सफॉर्म (180) –

+0

वह संकलित और सफल होता है, लेकिन यह पृष्ठ पर कुछ भी नहीं करता है। –

उत्तर

6

विशेषज्ञता के अपने क्षेत्र में नहीं है यही कारण है, लेकिन बजाय "page.Rotate = 180;" मैं ऐसा ही कुछ करने की कोशिश करेंगे:

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

(कोड का परीक्षण नहीं किया, एक डाली आवश्यकता हो सकती है)

जब पाठ जोड़ने, तो आप "page.Rotate == 180" के लिए परीक्षण और उसके बाद अलग-अलग कोड का उपयोग कर सकते (जैसे "ग्राफिक्स। रोटेट ट्रान्सफॉर्म (180)")।

+0

अहह ... मैंने बाद के अपडेट पर उस संपत्ति को * चेकिंग * का विचार नहीं माना था। मैं उसे एक शॉट दूंगा और देखता हूं कि यह कैसे काम करता है। यदि यह अपेक्षा के अनुसार काम करता है तो इसे सही के रूप में चिह्नित करेगा। बहुत बहुत धन्यवाद। –

संबंधित मुद्दे