2013-10-21 5 views
12

यह अपेक्षाकृत आसान लगता है, लेकिन मुझे एपीआई में getPageCount() जैसे कुछ नहीं मिल रहा है। मैं इसे वर्तमान पृष्ठ वापस करने के लिए प्राप्त कर सकता हूं, लेकिन पृष्ठों की कुल संख्या नहीं। शायद मैं इसे याद कर रहा हूँ?पीडीएफशर्प: क्या पृष्ठ के शीर्षलेख में "पृष्ठ एक्स वाई" उत्पन्न करने का कोई तरीका है?

मैं किसी भी तरह से प्रत्येक पृष्ठ के शीर्ष पर 'पृष्ठ 1 का 9' प्रिंट करने में सक्षम होना चाहता हूं, जहां '1' पाठ्यक्रम वर्तमान पृष्ठ संख्या है।

+0

क्या आप कुछ कोड कृपया दिखा सकते हैं? – sarseyn

उत्तर

21

पीडीएफशर्प के साथ यह आपके ऊपर है।

मुझे लगता है कि आप माइग्राडोक का उपयोग कर रहे हैं: माइग्राडोक के साथ आप एक पेज हेडर जोड़ सकते हैं। कुल पृष्ठ संख्या के लिए paragraph.AddPageField() और वर्तमान पृष्ठ संख्या के लिए paragraph.AddNumPagesField() जोड़ें। नमूना से

Sample that uses AddPageField

कोड स्निपेट:

// Create a paragraph with centered page number. See definition of style "Footer". 
Paragraph paragraph = new Paragraph(); 
paragraph.AddTab(); 
paragraph.AddPageField(); 

// Add paragraph to footer for odd pages. 
section.Footers.Primary.Add(paragraph); 
// Add clone of paragraph to footer for odd pages. Cloning is necessary because an object must 
// not belong to more than one other object. If you forget cloning an exception is thrown. 
section.Footers.EvenPage.Add(paragraph.Clone()); 

कोड स्निपेट कि (16 सेमी की के साथ एक शरीर के साथ दीन ए 4 मानकर) टैब बंद सेट:

style = document.Styles[StyleNames.Footer]; 
style.ParagraphFormat.AddTabStop("8cm", TabAlignment.Center); 

लिंक किए गए साइट से लिया गया दोनों स्निपेट। नमूना कोड डाउनलोड के लिए भी उपलब्ध है।

+0

इस पृष्ठ पर दिखाया गया नमूना अच्छी तरह से काम नहीं करता है। मेरा मतलब है कि पृष्ठ संख्या बदल नहीं है। –

+1

@ मरेक बार: AddNumPagesField दस्तावेज़ में पृष्ठों की संख्या जोड़ता है (और पृष्ठों के बीच नहीं बदलता है), AddPageField वर्तमान पृष्ठ संख्या और पृष्ठ से पृष्ठ में परिवर्तन जोड़ता है। –

+0

@PDFsharpTeam ... अगर मैं केवल पृष्ठ संख्या प्रदर्शित करना चाहता हूं तो पीडीएफ एक पृष्ठ से अधिक लंबा है ... मुझे इसे कैसे करना चाहिए? अब, मेरा पीडीएफ प्रदर्शित करता है "पेज: 1" भले ही मेरे पास एक पृष्ठ कुल है। – Romias

16

अपनी कक्षा में using MigraDoc.DocumentObjectModel; कथन शामिल करना सुनिश्चित करें।

Document document = new Document(); 
Section section = document.AddSection(); 

Paragraph paragraph = new Paragraph(); 
paragraph.AddText("Page "); 
paragraph.AddPageField(); 
paragraph.AddText(" of "); 
paragraph.AddNumPagesField(); 

section.Headers.Primary.Add(paragraph); 
+1

यह मेरे लिए बेकार ढंग से काम किया। – ddz

6

मुझे पता है कि यह प्रश्न पुराना है और इसका एक स्वीकार्य उत्तर है, हालांकि पीडीएफशर्प समाधान की खोज करते समय सवाल पहली बार सामने आता है।

रिकॉर्ड के लिए, पीडीएफशर्प में इसे प्राप्त करना आसान है। PdfDocument वर्ग, PdfSharp.Pdf नामस्थान के अंतर्गत पाया गया पृष्ठों का संग्रह (PdfDocument.Pages) है। आपको बस इतना करना है कि संग्रह के माध्यम से पुनरावृत्ति करें और XGraphics ऑब्जेक्ट का उपयोग करके प्रत्येक पृष्ठ पर पेज काउंटर कहीं भी जोड़ें, ताकि आप XGraphics.FromPdfPage(PdfPage) का उपयोग करके तुरंत चालू कर सकें।

using PdfSharp.Pdf; // PdfDocument, PdfPage 
using PdfSharp.Drawing; // XGraphics, XFont, XBrush, XRect 
         // XStringFormats 

// Create a new PdfDocument. 
PdfDocument document = new PdfDocument(); 
// Add five pages to the document. 
for(int i = 0; i < 5; ++i) 
    document.AddPage(); 

// Make a font and a brush to draw the page counter. 
XFont font = new XFont("Verdana", 8); 
XBrush brush = XBrushes.Black; 

// Add the page counter. 
string noPages = document.Pages.Count.ToString(); 
for(int i = 0; i < document.Pages.Count; ++i) 
{ 
    PdfPage page = document.Pages[i]; 

    // Make a layout rectangle. 
    XRect layoutRectangle = new XRect(0/*X*/, page.Height-font.Height/*Y*/, page.Width/*Width*/, font.Height/*Height*/); 

    using (XGraphics gfx = XGraphics.FromPdfPage(page)) 
    { 
     gfx.DrawString(
      "Page " + (i+1).ToString() + " of " + noPages, 
      font, 
      brush, 
      layoutRectangle, 
      XStringFormats.Center); 
    } 
} 

यह ध्यान देने योग्य है कि यदि एक XGraphics वस्तु पहले से ही दिए गए पृष्ठ के लिए मौजूद है, एक नया बनाने से पहले, एक पुरानी निपटारा किए जाने की जरूरत के लायक है। यह असफल हो जाएगा:

PdfDocument document = new PdfDocument(); 
PdfPage page = document.AddPage(); 

XGraphics gfx1 = XGraphics.FromPage(page); 
XGraphics gfx2 = XGraphics.FromPage(page); 
संबंधित मुद्दे

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