मैं देखना चाहता था कि क्या किसी ने ऐसा किया है।

रूबी में, मैं एक पीडीएफ खोलना चाहता हूं और वहां टेक्स्ट खोजना चाहता हूं। कोई भी पाठ जो मुझे मिलता है मैं पीले रंग में हाइलाइट करना चाहूंगा, फिर उस पृष्ठ को वापस कर दूंगा जहां मुझे टेक्स्ट एक jpg के रूप में मिला। क्या किसी ने इसे पहले किया है?

धन्यवाद, क्रेग

1
fregas 9 अगस्त 2011, 22:13

2 जवाब

सबसे बढ़िया उत्तर

यदि आप सी-एक्सटेंशन का उपयोग करके खुश हैं तो आप इसे रूबी-ग्नोम 2 बाइंडिंग के साथ प्राप्त कर सकते हैं। आपको पॉपलर और gdk_pixbuf2 रत्नों की आवश्यकता होगी।

इन रत्नों के लिए एपीआई दस्तावेज़ थोड़े कंजूसी वाले हैं, लेकिन आप http://ruby-gnome2 पर पा सकते हैं। .sourceforge.jp/

require 'poppler'
require 'gdk_pixbuf2'

SCALE = 2

filename = "source.pdf"
doc = Poppler::Document.new(filename)
page = doc.get_page(0)

# render the page to an in-memory buffer
width, height = *page.size
buf = Gdk::Pixbuf.new(Gdk::Pixbuf::COLORSPACE_RGB, true, 8, width*SCALE, height*SCALE)
page.render(0, 0, width*SCALE, height*SCALE, SCALE, 0, buf)

# copy the rendered buffer into an pixmap for further editing
map = Gdk::Pixmap.new(nil, width*SCALE, height*SCALE, 24)
map.draw_pixbuf(nil, buf, 0, 0, 0, 0, -1, -1, Gdk::RGB::DITHER_NONE, 0, 0)

# setup highlight color and blend function
gc  = Gdk::GC.new(map) # graphics context
gc.rgb_fg_color = Gdk::Color.new(65535, 65535, 0)
gc.function = Gdk::GC::AND

# find each match and highlight it. The co-ordinate maths is ugly but
# necesary to convert from PDF co-ords to Pixmap co-ords
page.find_text("the").each do |match|
  matchx = match.x1 * SCALE
  matchy = (height - match.y2) * SCALE
  matchw = (match.x2-match.x1) * SCALE
  matchh = (match.y2-match.y1) * SCALE
  map.draw_rectangle(gc, true, matchx, matchy, matchw, matchh)
end

# save the buffer to a JPG
newbuf = Gdk::Pixbuf.from_drawable(nil, map, 0, 0, width*SCALE, height*SCALE)
newbuf.save("foo.jpg", "jpeg")
1
James Healy 11 अगस्त 2011, 07:22

कमांड लाइन के माध्यम से जर्बी या जार को कॉल करना एक विकल्प है? उस स्थिति में आप जावा iText पुस्तकालय और इन उत्तरों की तर्ज पर कुछ का उपयोग कर सकते हैं

iText खोज, हाइलाइट, परिणाम की छवि

क्या iText . के साथ टेक्स्ट स्थिति खोजना संभव है?

2
Community 23 मई 2017, 15:26
मैं इसके बजाय jRuby का उपयोग नहीं करूंगा क्योंकि मैंने कभी इसका उपयोग नहीं किया है। क्या रेल पर रूबी से कमांड लाइन से आईटेक्स्ट को कॉल करने के साथ कोई प्रदर्शन/स्केलिंग समस्या होगी?
 – 
fregas
10 अगस्त 2011, 18:39