Vor ein paar Tagen erzählte mir meine Schwester plötzlich, dass sie ein E-Book auf JD gekauft hat. Nachdem sie es gekauft hatte, stellte sie fest, dass sie es nur online lesen oder einen eigenen Leser verwenden konnte. Es war sehr unpraktisch, also bat ich mich, an eine Lösung zu denken.
Ich begann darüber nachzudenken. Am Anfang habe ich den Acrobat -Leser direkt verwendet, um ihn zu öffnen, und stellte fest, dass es nur Verzeichnisse gab, sonst nichts, und die Seiten waren alle anwesend. Ich dachte, dass eine Maske dem richtigen Inhalt hinzugefügt werden könnte. Personen, die nur den "Schlüssel" verwenden können, können ihn filtern. Um die Redakteure anderer Leute zu knacken, wird es definitiv nicht in kurzer Zeit funktionieren. Viele Leute im Internet dachten auch daran, automatisierte Skripte zu verwenden, um automatisch Screenshots von offiziellen Lesern aufzunehmen, aber ich stellte fest, dass die Screenshots keine Seite für Seite sind, was sehr verwirrt ist. Schließlich kann ich nur einen Weg finden, indem ich diese Zeile online lese.
Diese Methode ähnelt denen von Internetnutzern. Es wird als Bild gespeichert und wie man es durch das PDF -Tool in ein PDF macht.
Ich war überrascht zu finden, dass das Dokument wirklich gut ist. Mit einem Bild pro Seite wurde es für Sie getan, aber nur die ersten und letzten Bilder der aktuellen Seite werden jeweils aktualisiert und die anderen werden gelöscht. Zu diesem Zeitpunkt gibt es eine Denkweise:
Die Schritte 1 bis 3 müssen wiederholt werden und können mit automatisierten Tools und Skripten implementiert werden.
Schritt 4 Schreiben Sie einfach einen Controller, nur die einfachste Java -Schnittstelle.
Schritt 5: Direkter Online -Service kann erreicht werden.
Warum müssen wir zuerst den Download zwischenspeichern? Dies beinhaltet ein Problem der Effizienz, der Bilddeduplizierung und der Filterung, da die nach jeder Einstellung erhaltenen Bilder doppelt und die Reduplikation automatisch dedupliziert werden. Es soll auch Probleme wie abnormaler Ausgang in der Mitte des Downloads vermeiden, während der Bildpfad und andere Aufgaben erhalten, die nicht normal ausgeführt werden können. Dann erhält das Skript den Pfad und speichert es Ihrem eigenen Server. Das einzige Problem kann das Cross-Domain-Problem sein. Infolgedessen stellte ich fest, dass noch ein paar Bilder fehlten, was mir die Vorteile der Verwendung von Cache erkennen ließ. Ich kann direkt überprüfen, ob diese Bilder über den Code fehlten, ohne die JPG -Datei zu überprüfen, die Anzahl der Dateien mit weniger Ziffern, und schließlich manuell abgeschlossen.
Der einzige Fehler in den auf diese Weise aufgenommenen Bildern ist, dass sie die Wörter "JD Lesen" haben und die Bildauflösung nicht sehr hoch ist und die Schriftart anscheinend etwas pelzig zu haben scheint. Wenn Sie Zwangsstörungen haben oder hohe Qualität verfolgen, verwenden Sie den offiziellen Leser. Ich persönlich habe es klar gelesen, es ist ein Dokument, kein Bild! ! !
Das Folgende ist der Code, um Netzwerkdaten über URL in der lokalen Region zu speichern.
öffentliche Klasse httpurlConnectionUtil {// Datenstrom, um die Leser -Antwortdaten über GET Request public static InputStream GetInputStreamGet (String URL) {try {httpurlConnection conn = (httpurlConnection) New URL (URL) .Openconnection (); Conn.SetReadTimeout (5000); Conn.SetConnectTimeout (5000); Conn.SetRequestMethod ("get"); if (conn.getResponSCode () == httpurlConnection.http_ok) {inputStream inputStream = conn.getInputStream (); Rückgabe inputStream; }} catch (ioException e) {e.printstacktrace (); } return null;} // Speichern Sie die Datenantwort des Servers in der lokalen Datei public static void sparedata (InputStream IS, Dateidatei) {try (bufferedInputStream bis = new BuferedInputStream (IS); BufferedOutputStream bos = new bufferedOutStream (new Fileputstream (Datei);) {); int len = -1; while ((len = Bis.Read (Puffer))! = -1) {bos.write (puffer, 0, len); bos.flush (); }} catch (ioException e) {e.printstacktrace (); }}}Angerufen:
Set <string> imgNumber = (set <string>) redistemplate.opsforhash (). Keys (map_key); imgNumber.stream (). Foreach (e-> {String url = (String) redistemplate.opsforHash (). InputStream InputStream = httpurlConnectionUtil .GetInputStreamByget (URL);Zusammenfassen
Der obige Beispiel ist der Beispielcode, den der Editor Ihnen über Java -Lesen von Remotedaten über URL und die lokale Haltung vorgestellt hat. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!