Zwei Methoden zum Implementieren der automatischen Seitennummerierung beim Vue-Seitendruck

Zwei Methoden zum Implementieren der automatischen Seitennummerierung beim Vue-Seitendruck

In diesem Artikelbeispiel wird der spezifische Code von Vue zur automatischen Seitennummerierung beim Drucken von Seiten zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

1. Elemente zum Drucken per Referenz abrufen

1. Kapseln Sie eine JS-Datei ein

// Klassenattribute und Methodendefinitionen drucken/* eslint-disable */
const Print = Funktion (dom, Optionen) {
  if (!(diese Instanz von Print)) returniere neues Print(dom, Optionen);

  diese.Optionen = diese.erweitern({
    'keinDrucken': '.keinDrucken'
  }, Optionen);

  wenn ((Typ von dom) === "Zeichenfolge") {
    Dies.dom = document.querySelector(dom);
  } anders {
    dies.istDOM(dom)
    dies.dom = dies.isDOM(dom) ? dom : dom.$el;
  }

  dies.init();
};
Drucken.prototype = {
  init: Funktion () {
    var Inhalt = this.getStyle() + this.getHtml();
    dies.writeIframe(Inhalt);
  },
  erweitern: Funktion (Objekt, Objekt2) {
    für (var k in obj2) {
      obj[k] = obj2[k];
    }
    gibt Objekt zurück;
  },

  getStyle: Funktion () {
    var str = "",
      Stile = document.querySelectorAll('Stil, Link');
    für (var i = 0; i < Stile.Länge; i++) {
      str += Stile[i].äußeresHTML;
    }
    str += "<style>" + (this.options.noPrint ? this.options.noPrint : '.no-print') + "{display:none;}</style>";
    str += "<style>html,body,div{height: auto!important;font-size:12px}</style>";

    gibt str zurück;
  },

  getHtml: Funktion () {
    var Eingaben = document.querySelectorAll('Eingabe');
    var textareas = document.querySelectorAll('textarea');
    var wählt = document.querySelectorAll('Auswählen');

    für (var k = 0; k < Eingaben.Länge; k++) {
      wenn (Eingaben[k].Typ == "Kontrollkästchen" || Eingaben[k].Typ == "Radio") {
        wenn (Eingaben[k].checked == true) {
          inputs[k].setAttribute('aktiviert', "aktiviert")
        } anders {
          Eingaben[k].removeAttribute('aktiviert')
        }
      } sonst wenn (Eingaben[k].Typ == "Text") {
        Eingaben[k].setAttribute('Wert', Eingaben[k].Wert)
      } anders {
        Eingaben[k].setAttribute('Wert', Eingaben[k].Wert)
      }
    }

    für (var k2 = 0; k2 < Textbereiche.Länge; k2++) {
      wenn (Textbereiche[k2].Typ == 'Textbereich') {
        Textbereiche[k2].innerHTML = Textbereiche[k2].Wert
      }
    }

    für (var k3 = 0; k3 < selects.length; k3++) {
      wenn (wählt[k3].Typ == 'select-one') {
        var Kind = wählt[k3].Kinder;
        für (var i in Kind) {
          wenn (Kind[i].tagName == 'OPTION') {
            wenn (Kind[i].selected == true) {
              Kind[i].setAttribute('ausgewählt', "ausgewählt")
            } anders {
              Kind[i].removeAttribute('ausgewählt')
            }
          }
        }
      }
    }
    gib this.dom.outerHTML zurück;
    // Das zu druckende Element umschließen // Fix: https://github.com/xyl66/vuePlugs_printjs/issues/36
    // lass outerHTML = this.wrapperRefDom(this.dom).outerHTML
    // äußeresHTML zurückgeben;
  },
  // Schleife zum übergeordneten Element und umschließe das Element, das gedruckt werden soll // Verhindere, dass der CSS-Selektor am Anfang der Stammebene wirksam wird wrapperRefDom: function (refDom) {
    let prevDom = null
    lass currDom = refDom
    // Bestimmen Sie, ob sich das aktuelle Element im Textkörper befindet. Wenn nicht im Dokument, geben Sie den Knoten direkt zurück, wenn (!this.isInBody (currDom)) return currDom

    während (aktuellerDom) {
      wenn (vorherigerDom) {
        let-Element = currDom.cloneNode(false)
        element.appendChild(vorherigerDom)
        vorherigerDom = Element
      } anders {
        vorherigerDom = currDom.cloneNode(true)
      }

      currDom = currDom.übergeordnetesElement
    }

    Zurück zum vorherigen Dom
  },

  writeIframe: Funktion (Inhalt) {
    var w, doc, iframe = Dokument.createElement('iframe'),
      f = Dokument.Body.AnhängenUntergeordnetesElement(iframe);
    iframe.id = "meinIframe";
    //iframe.style = "Position:absolut;Breite:0;Höhe:0;oben:-10px;links:-10px;";
    iframe.setAttribute('Stil', 'Position:absolut;Breite:0;Höhe:0;oben:-10px;links:-10px;');
    w = f.Inhaltsfenster || f.Inhaltsdokument;
    doc = f.Inhaltsdokument || f.Inhaltsfenster.document;
    doc.öffnen();
    doc.write(Inhalt);
    doc.schließen();
    var _this = dies
    iframe.onload = Funktion(){
      _this.toPrint(w);
      setzeTimeout(Funktion () {
        Dokument.Body.RemoveChild(iframe)
      }, 100)
    }
  },

  toPrint: Funktion (Rahmenfenster) {
    versuchen {
      setzeTimeout(Funktion () {
        Rahmenfenster.Fokus();
        versuchen {
          wenn (!frameWindow.document.execCommand('print', false, null)) {
            Rahmenfenster.drucken();
          }
        } fangen (e) {
          Rahmenfenster.drucken();
        }
        Rahmenfenster.schließen();
      }, 10);
    } fangen (Fehler) {
      console.log('err', err);
    }
  },
  //Überprüfen Sie, ob ein Element ein Nachkomme des Body-Elements und nicht das Body-Element selbst ist. isInBody: function (node) {
    return (Knoten === Dokument.Body) – false: Dokument.Body.contains(Knoten);
  },
  isDOM: (Typ des HTML-Elements === „Objekt“)?
    Funktion (Objekt) {
      gibt ein Objekt der Instanz des HTMLElements zurück;
    } :
    Funktion (Objekt) {
      returniere Objekt && Objekttyp === 'Objekt' && Objekt.Knotentyp === 1 && Objekttyp.Knotenname === 'Zeichenfolge';
    }
};
const MyPlugin = {}
MyPlugin.install = Funktion (Vue, Optionen) {
  // 4. Instanzmethode hinzufügen Vue.prototype.$printPage = Print
}
Standard-MyPlugin exportieren

2. Legen Sie die Datei in einen Ordner im Projekt

3. Globale Referenz in main.js

4. Seitennutzung

Hinweis: Wenn Sie den Inhalt nicht drucken möchten, stellen Sie die Klasse einfach auf „No-Print“ ein.

2. Verwenden Sie die im Browser integrierte Methode window.print(), um HTML-Inhalte zum Drucken abzurufen

Nachteile: Der Stil kann nur auf das Etikett geschrieben werden, sonst wird er nicht wirksam

1. Kapseln Sie eine JS-Datei ein

Export-Standardfunktion printHtml(html) {
  lass Stil = getStyle();
  : Container = getContainer(html);
 
  Dokument.Body.AppendChild(Stil);
  Dokument.Body.AnhängenUntergeordnetesElement(Container);
  getLoadPromise(container).then(() => {
    fenster.drucken();
    Dokument.Body.removeChild(Stil);
    Dokument.Body.RemoveChild(Container);
  });
}
 
//Druckstil festlegen Funktion getStyle() {
let styleContent = `#Druckcontainer {
    Anzeige: keine;
}
@media drucken {
    body > :nicht(.print-container) {
        Anzeige: keine;
    }
    html,
    Körper {
      Rand: 0 0,2cm;
      Anzeige: Block !wichtig;
      Höhe: automatisch;
    }
    #Druckcontainer {
        Anzeige: Block;
    }
    @Seite {
      Rand: 0,25 cm 0;
    }
}`;
  let style = document.createElement("Stil");
  style.innerHTML = Stilinhalt;
  Rückgabestil;
}
 
// Lösche den Druckinhalt Funktion cleanPrint() {
  let div = document.getElementById('Druckcontainer')
  wenn (!!div) {
    Dokument.QuerySelector('body').removeChild(div)
  }
}
 
//Erstellen Sie ein neues DOM und füllen Sie den zu druckenden Inhalt in das DOM
Funktion getContainer(html) {
  sauberDrucken()
  let container = document.createElement("div");
  container.setAttribute("id", "Druckcontainer");
  Container.innerHTML = html;
  Rücknahmebehälter;
}
 
// Rufe die Druckmethode auf, nachdem das Bild vollständig geladen ist. Funktion getLoadPromise(dom) {
  let imgs = dom.querySelectorAll("img");
  imgs = [].slice.call(imgs);
 
  wenn (Bildlänge === 0) {
    gibt Promise.resolve() zurück;
  }
 
  lass fertigeAnzahl = 0;
  gib ein neues Versprechen zurück (Auflösen => {
    Funktion check() {
      fertigeAnzahl++;
      if (finishedCount === imgs.length) {
        lösen();
      }
    }
    imgs.forEach(img => {
      img.addEventListener("laden", prüfen);
      img.addEventListener("Fehler", prüfen);
    })
  });
}

2. Legen Sie die Datei in einen Ordner im Projekt

3. Direkter Import der Seite

4. Seitennutzung

Hinweis: Für Inhalte, die nicht gedruckt werden müssen, stellen Sie einfach die Stilanzeige ein: keine auf dem Etikett;

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Vue + Element realisiert die Funktion zum Drucken von Seiten
  • Vue-Formular-Formularübermittlung + asynchrone Ajax-Anforderung + Paging-Effekt
  • Vue.js implementiert Tabellenfunktionen für die Filterung, Suche, Sortierung und Paginierung mehrerer Bedingungen
  • Vue.js implementiert die Paging-Abfragefunktion
  • Vuejs2.0 implementiert ein einfaches Paging-Beispiel
  • Vue.js realisiert die Entwicklung unendlicher Lade- und Paging-Funktionen
  • Beispielcode zum Schreiben eines Pagers mit Vue
  • Implementierung des Paging-Problems von Vue + Element-UI
  • So kapseln Sie Paging-Komponenten basierend auf Vue
  • Paginierung basierend auf vue.js

<<:  Navicat stellt eine Verbindung zu MySQL8.0.11 her und es tritt ein Fehler 2059 auf

>>:  Methoden und Schritte zum Bereitstellen einer GitLab-Umgebung basierend auf Docker

Artikel empfehlen

Detaillierte Erklärung zur Verwendung des Arguments-Objekts in JavaScript

Inhaltsverzeichnis Vorwort Grundlegende Konzepte ...

Eine vollständige Anleitung zum Löschen von Floats in CSS (Zusammenfassung)

1. Übergeordnetes Div definiert Pseudoklassen: af...

Ausführliche Erläuterung der Mysql-Deadlock-Anzeige und Deadlock-Entfernung

Vorwort Vor einiger Zeit ist bei mir ein MySQL-De...

Zusammenfassung der praktischen Methoden von CSS3 (empfohlen)

1. Abgerundeter Rand: CSS- CodeInhalt in die Zwis...

Der Unterschied zwischen this.$router und this.$route in Vue und der push()-Methode

Im offiziellen Dokument heißt es: Durch Einfügen ...

Allgemeine Probleme mit der Regelpriorität beim Nginx-Standort

Inhaltsverzeichnis 1. Standort / Matching 2. Stan...

jQuery realisiert Bildhervorhebung

Es ist sehr üblich, Bilder auf einer Seite hervor...

Vue Virtual DOM – Schnellstart

Inhaltsverzeichnis Virtueller DOM Was ist virtuel...

Welcher Befehl eignet sich besser für die unscharfe Suche nach Dateien in Linux?

1. Einleitung In diesem Artikel wird hauptsächlic...

Grundlegende Operationen an unsichtbaren Spalten in MySQL 8.0

Inhaltsverzeichnis 01 Unsichtbare Spalten erstell...

Detailliertes Tutorial zur Installation von Docker auf CentOS 8.4

Inhaltsverzeichnis Vorwort: Systemanforderungen: ...

Ein tiefes Verständnis der spitzen Klammern in Bash (für Anfänger)

Vorwort Bash verfügt über viele wichtige integrie...

So legen Sie mit CSS eine Hintergrundunschärfe fest

Beim Erstellen einiger Seiten müssen wir häufig H...