Open jnylund opened 10 years ago
Here's a way to do it using Nokogiri (which is what docx uses under the hood)
require 'docx'
require 'nokogiri'
def insert_colored_text_after(bookmark, text, hex_color)
color = Nokogiri::XML::Node.new("w:color", bookmark.node)
color['w:val'] = hex_color
text_run = bookmark.get_run_after
text_run.text = "#{text}#{text_run.text}"
text_run.node.children.each do |child|
#Find the node for formatting
if child.name == "rPr"
child<<color
end
end
end
@Steimel Thank you for the solution, really appreciate it!
Thanks @Steimel for your help.
Here is a very similar version of the method, if you already have a paragraph
object:
def add_color_to_paragraph(paragraph, color)
color_node = Nokogiri::XML::Node.new("w:color", paragraph.node.document)
color_node["w:val"] = color
paragraph.each_text_run do |text_run|
text_run.node.children.each do |child|
# Find the node for formatting
child << color_node if child.name == "rPr"
end
end
end
Hi, is there anyway to set the color of the text that is inserted using insert_text_after?
If not, I can try to add it, but can someone give me a hint of where to look or generally what to do? (I don't know anything about docx format).
thanks Joel