How-to: Wie man webPDF mit Ruby über REST nutzen kann

Bild Glühbirne: Anleitung - Tutorial

In diesem Beispiel zeigen wir anhand eines einfachen Ablaufs, wie man die Webservices von webPDF mit der Skriptsprache Ruby über die REST-Schnittstelle nutzen kann. Um dieses Beispiel auf Ihrem PC nachzuvollziehen, benötigen Sie ein lokal installiertes webPDF, Ruby in Version 2.x und einen beliebigen Texteditor. Hilfe zur Installation von Ruby finden Sie unter ruby-lang.org/de/documentation/installation.

Einrichtung des Projektes

Prüfen Sie zunächst, ob die Einrichtung von Ruby erfolgreich war, indem Sie in der Eingabeaufforderung nacheinander die Befehle gem und ruby --v eingeben. Wenn beide Befehle bekannt sind, war die Installation erfolgreich.

Danach installieren Sie mit der Eingabeaufforderung das benötigte Gem rest-client mit dem Befehl gem install rest-client. Gems sind Bibliotheken, die mit den in Ruby standardmäßig vorhandenen Werkzeugen verwaltet werden können.

Nun sind Sie bereit, mit dem Schreiben des Beispielprogramms zu beginnen. Erstellen Sie im Verzeichnis Ihrer Wahl mit dem Texteditor Ihrer Wahl eine Datei mit der Endung .rb für Ihren Code. Außerdem erzeugen Sie noch eine Datei mit dem Namen test.txt, in die Sie beliebige Eingaben machen können. Diese wird von Ihrem Programm später in ein PDF-Dokument konvertiert.

Schreiben des Codes

require 'rest-client'
require 'json'

Mit diesen Angaben binden Sie die benötigten Gems in Ihr Skript ein. json dient zum Parsen und Generieren von JSON-Objekten und ist in der Ruby-Standardbibliothek enthalten. rest-client ermöglicht einfaches Arbeiten über die REST-Schnittstelle und wurde zuvor von Ihnen mit dem gem-Befehl installiert.

WEBPDF_URL='http://localhost:8080/webPDF'
url=WEBPDF_URL+'/rest/authentication/user/login'
resp=RestClient.get(url,
})
token=JSON.parse(resp)['token']

Zunächst wird die Basis-URL Ihrer webPDF-Anwendung in einer Konstante gespeichert. Aus dieser und dem angehängten String wird die URL zum Authentication-Service von webPDF gebildet.

Dort wird mit den Parametern username und password ein Token für Ihre Sitzung erzeugt. Dieser wird aus dem zurückgelieferten JSON-Objekt in die Variable token extrahiert.

url=WEBPDF_URL+'/rest/documents'
file=File.new('test.txt', 'rb')
resp=RestClient.post url, ,
txt_document_id=JSON.parse(resp)['documentId']

Hier wird über den Documents-Service von webPDF die Datei test.txt auf den Server geladen. Der zuvor generierte Token wird mit dem Bezeichner Token in den Header gesetzt. Aus dem Response-JSON-Objekt wird die Dokumenten-ID extrahiert.

url=WEBPDF_URL+"/rest/converter/#/convert"
conversion_options=
resp=RestClient.post url, JSON.generate(conversion_options),
pdf_document_id=JSON.parse(resp)['documentId']

In diesem Abschnitt wird die Textdatei in ein PDF-Dokument konvertiert. Die URL zum Converter-Service wird mit der Dokumenten-ID der Textdatei gebildet und im Body des Posts befindet sich ein JSON-Objekt mit den Konvertierungsoptionen (dieses wird zuvor aus einem Ruby-Hash generiert). Einzelheiten zu den Parametern finden Sie in der webPDF-Dokumentation. Eine Übersicht über die REST-Methoden finden Sie unter localhost:8080/webPDF/help/restful/. Aus der Antwort wird die Dokumenten-ID der erzeugten PDF-Datei extrahiert.

url=WEBPDF_URL+"/rest/documents/#"
resp=RestClient.get url,
File.open('test_result.pdf', 'wb') do |file|
file << resp
end

Mit der Dokumenten-ID der PDF-Datei in der URL wird der Documents-Service angesprochen und die Datei abgefragt. Diese wird danach in die Datei test_result.pdf geschrieben.

Nun führen Sie das Programm aus, indem Sie mit der Eingabeaufforderung in den Projektordner navigieren und das Skript mit dem Befehl ruby dateiName.rb starten. Danach sollte eine PDF-Datei mit dem Namen test_result.pdf und dem Inhalt der Datei test.txt in Ihrem Projektordner liegen.

Wie Sie sehen, ist webPDF mit Ruby, wie auch mit den meisten anderen Skriptsprachen, sehr einfach über die REST-Schnittstelle zu nutzen.

Anhang

Der gesamte Quellcode:

require 'rest-client'
require 'json'

WEBPDF_URL='http://localhost:8080/webPDF'

url=WEBPDF_URL+'/rest/authentication/user/login'
resp=RestClient.get(url,
})
token=JSON.parse(resp)['token']

url=WEBPDF_URL+'/rest/documents'
file=File.new('test.txt', 'rb')
resp=RestClient.post url, ,
txt_document_id=JSON.parse(resp)['documentId']

url=WEBPDF_URL+"/rest/converter/#/convert"
conversion_options=
resp=RestClient.post url, JSON.generate(conversion_options),
pdf_document_id=JSON.parse(resp)['documentId']

url=WEBPDF_URL+"/rest/documents/#"
resp=RestClient.get url,

File.open('test_result.pdf', 'wb') do |file|
file << resp
end