Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

PDFWriter itext

  •  15-12-2008, 02:22

    PDFWriter itext

    Καλησπέρα σας....

    Γνωρίζει κάποιος με το PDFWriter, πώς μπορείς να μην τυπώνεις ένα κελί πέρα απο το footer?
    Δηλαδή, εχω ένα κείμενο μεγάλο σε ένα κελί ενός πίνακα, τυπώνει...τυπώνει...τυπώνει...πέφτει πάνω στο footer όπου είναι η πληροφορία για την σελίδα και ευτυχώς σταματάει στην πρώτη γραμμή του footer....

    Αν ήταν πολλά μικρά κελιά χρησιμοποιώ :
    if ( Convert.ToInt32(printout.writer.getVerticalPosition(false)) <= 210 )
              NewPage(ref printout);


    Στην προκειμένη περίπτωση δεν πιάνει το κόλπο.

    Αν βοηθάει το event onEndPage έχει ως εξής :
    public override void onEndPage(PdfWriter writer, Document document) {
          int pageN = m_writer.getPageNumber();
          String text = "Σελ :" + pageN + "/";
          float len = bf.getWidthPoint(text, 8);
          cb.beginText();
          cb.setFontAndSize(bf, 8);
          cb.setColorFill(Color.Gray);
          cb.setTextMatrix(280, 40);
          cb.showText(text);
          cb.endText();
          cb.addTemplate(template, 280 + len, 40);
          cb.beginText();
          cb.setFontAndSize(bf, 8);
          cb.setColorFill(Color.Gray);
          cb.setTextMatrix(240, 25);
          cb.showText("Tutorial 1");
          cb.endText();
        }


    Το CloseDocument :
    public override void onCloseDocument(PdfWriter writer, Document document) {
          template.beginText();
          template.setFontAndSize(bf, 8);
          template.showText((writer.getPageNumber() - 1).ToString());
          template.endText();
        }


    Και η initPrintout :
    private void initPrintOut(Stream output) {
          PdfFontBase = ConfigurationSettings.AppSettings["PDFFontPath"];
          if (PdfFontBase[PdfFontBase.Length - 1] != '\\')
            PdfFontBase = PdfFontBase + "\\";
          m_document = new Document(PageSize.A4, 30, 30, 30, 30);
          m_writer = PdfWriter.getInstance(m_document, output);
          m_writer.setPageEvent(this);
          String fMessage = "";
          if ((ConfigurationSettings.AppSettings["FooterMessage"] != null) && (!ConfigurationSettings.AppSettings["FooterMessage"].Trim().Equals(""))) {
            fMessage = ConfigurationSettings.AppSettings["FooterMessage"];
          }
          bf = BaseFont.createFont(PdfFontBase + "arialbd.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
          Font font = new Font(bf, 8, Font.BOLD, Color.Gray);
          
          m_document.open();

          if ((ConfigurationSettings.AppSettings["ImageLogoPDF"] != null) && (!ConfigurationSettings.AppSettings["ImageLogoPDF"].Trim().Equals(""))) {
            Image img = Image.getInstance(ConfigurationSettings.AppSettings["ImageLogoPDF"]);
            //img.scaleAbsolute(120, 30);
            img.scalePercent(30);
            img.setAbsolutePosition(10, 10);
            document.add(img);
          }
          // add an empty paragraph only on the first page
          // to fix margin and bookmark bug
          m_document.add(new Paragraph(""));
        }


    Καμιά ιδέα;
    Δημοσίευση στην κατηγορία:
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems