2017-01-05 1 views
0

Ich wurde gebeten, einige Tests zu schreiben, um zu bestätigen, dass Text in einer PDF-Datei enthalten ist. Ich bin auf den PDF-Reader-Edelstein gestoßen, der alle gut darin ist, Text aus der Datei zu rendern, außer dass die Ausgabe nicht zu gut ist. Ich habe zum Beispiel ein Stück Text, das sollte lesen, aber PDF-Reader sieht dies als Date offirstregistrationoftheproduct. Wenn ich also meine Behauptung ausführe, scheitert es aufgrund des Abstands des Textes.PDF Reader Gurke Rubin

Mein Code:

expected_text = 'Date of first registration of the product' 

file = File.open(my_pdf, "rb") 
    PDF::Reader.open(file) do |reader| 
    reader.pages.each do |page| 
     expect(page).to have_text expected_text 
    end 

Das Ergebnis ist eine RSpec Erwartung Fehler nicht erfüllt.

Gibt es eine Möglichkeit, diesen Text richtig formatiert zu bekommen, so dass meine Behauptung es lesen kann?

+0

Sie bieten Ihnen ein Beispiel-PDF mit dem Text in Frage? – Stefan

+0

Leider konnte ich aufgrund der Sensitivität, auch wenn es sich um Testdaten handelt, keine Kopie hochladen :-( – Tom

+0

Kannst du nicht ein PDF mit nur dem Text erstellen? Ich bin mir nicht sicher, wie ich dir helfen kann, ohne wirklich etwas einzugeben . – Stefan

Antwort

0

Das Seitenobjekt von Reader ist kein Text. Wenn Sie Text von einer PDF-Datei erhalten möchten, können Sie page.text verwenden. Die Verwendung einer Regex kann Ihr Problem lösen.

Versuchen Sie etwas wie unten.

expected_text = 'Date of first registration of the product' 

file = File.open(my_pdf, "rb") 
    PDF::Reader.open(file) do |reader| 
    reader.pages.each do |page| 
     expect(page.text.match(/#{expected_text}/)).to be true 
    end