ruby-docx / docx

a ruby library/gem for interacting with .docx files
MIT License
430 stars 170 forks source link

How can we add a new line break between a paragraph #150

Open suleman-jalil-devboxtech opened 5 months ago

suleman-jalil-devboxtech commented 5 months ago

Problem

  1. How can we add a paragraph.

Please share a clear and concise description of what the problem is. The issue i have a text like below We want to end the paragraph by line break before <>. And Next sentence should start from the new line.or new paragraph.

"The weather forecast located in ________ to the Person's ________, of trust. In the event ________ shall not survive due to harsh weather conditions lapse.\n<<ENTER>>\nThe weather forecast located in ________ to the Person's ________, of trust. In the event ________ shall not survive due to harsh weather conditions lapse."

"<p style=\"font-size:13pt;text-align:both;\"><span style=\"font-size:13pt;\"></span> <span style=\"font-size:13pt;\"></span><span style=\"font-size:13pt;\"></span> <span style=\"font-size:13pt;\">The weather forecast located in ________ to the Person's ________, of trust. In the event ________ shall not survive due to harsh weather conditions lapse.\n<<ENTER>>\nThe weather forecast located in ________ to the Person's ________, of trust. In the event ________ shall not survive due to harsh weather conditions lapse.</span></p>"

I tried "/n, br, /t and many other option. But the line does not break. It continues. Can someone help on it.

suhasg commented 4 months ago

@satoryu I'm also struggling with adding new lines or breaking paragraphs during text substitution. Please help @suleman-jalil-devboxtech Thanks for bringing this up. Any workarounds or fixes, please post them here.

lukew244 commented 3 months ago

The way I'm inserting newlines between paragraphs is like this:

def insert_blank_line(previous_paragraph = document.paragraphs.last)
  line = previous_paragraph.copy
  line.blank!
  line.insert_after(previous_paragraph)
end

If the paragraph you want is already in the document, try something like:

original_paragraph = document.paragraphs.first
text = original_paragraph.text
split_paragraphs = text.split("\n") # or whatever your delimiter is, you may need to escape the "\"
split_paragraphs.each do |p|
  new_paragraph = original_paragraph.copy
  new_paragraph.text = p
  new_paragraph.insert_after document.paragraphs.last
end
original_paragraph.remove!

This example assumes the document only has one paragraph, but you get the idea.

suhasg commented 3 months ago

@lukew244 Got it. Thank you for the quick help 👍🏻

suleman-jalil-devboxtech commented 3 months ago

@lukew244 thank you for the help.

Jawad79Ahmad commented 3 months ago

@lukew244 Thanks for the quick help, its working as expected.

Jawad79Ahmad commented 3 months ago

I'm encountering an issue with adding tabs (4 spaces) at the beginning of a new paragraph using an escape sequence. Here are the details:

Current Approach: I am using the escape sequence \t to insert tabs in the text. Problem: While \t works when used in the middle of a paragraph, it does not seem to affect the text when placed at the beginning of a new paragraph.

text = "This is a new\tparagraph"

text = "\tThis is a new paragraph"

In the above example, the second paragraph does not get the intended indentation when using \t at the beginning.

Desired Outcome I want to achieve the following:

This is new paragraph