Open dorijan opened 6 years ago
I think currently there's no support for that.
In the mean time, you can use a custom template where you define the default font for your document. https://github.com/karnov/htmltoword#configure-templates-and-xslt-paths.
Thank you, but I am not sure how to use them (I tried). Do I have to create empty docx and point it there?
Where should I put this configuration (in what file)?
Htmltoword.configure do |config| config.custom_templates_path = config.default_templates_path = config.default_xslt_path = config.custom_xslt_path = end
It depends on your application, if it's a rails application you can have it in somewhere like config/initializers/htmltoword.rb
. Else you should be able to it like
require 'htmltoword'
# Configure the location of your custom templates
Htmltoword.config.custom_templates_path = 'some_path'
my_html = '<html><head></head><body><p>Hello</p></body></html>'
document = Htmltoword::Document.create(my_html, word_template_file_name)
file = Htmltoword::Document.create_and_save(my_html, file_path, word_template_file_name)
So for the time being we are stuck with one font and size for the entire document?
Been trying to work this out, but seems like even with the path custom_templates_path
created an initializer: config/initializers/htmltoword.rb Htmltoword.configure do |config| config.custom_templates_path = Rails.root.join('lib/assets/templates') end added debug output to the gem in the templates_helper.rb:
def template_file(template_file_name = nil)
default_path = File.join(::Htmltoword.config.default_templates_path, 'default.docx')
template_path = template_file_name.nil? ? '' : File.join(::Htmltoword.config.custom_templates_path, template_file_name)
p "Template path: " + template_path
File.exist?(template_path) ? template_path : default_path
end
"Template path:
open <the full path on disk to rails app folder>/lib/assets/templates/new_template.docx
it opens in word.
Even though this new_template.docx has overridden all fonts with Times New Roman it still creates a document with Arial for all text. Seems like the custom template is not working.
Also if I just update the default.docx in the gem to be Times New Roman it still generates a doc with Arial
any solution here?
I'm seeing the same issue - can't get htmltoword to use the template Word file I supply (via Rails 5.2). Has anyone actually got the templates to work or is it a universal problem?
I tried setting the paths in an initializer and, although this seems to work (the path is redefined), the default.docx
file at that location isn't used - even though it complains if the file isn't there.
I tried using the word_template option in the actual command with no effect (except that Rails complains if the file isn't there, of course, so I know the path is correct):
def download_project_file
respond_to do |format|
format.docx do
render docx: @project.file.filename.to_s.chomp('.docx')+' (output).docx', content: @project.file_contents, word_template: ActionController::Base.helpers.asset_path('/htmltoword/template.docx')
end
end
end
Is the only option to work out how to redefine the styles in the WordXML and rebuild the gem with my preferred styles? Has anyone tried this?
I just did the following, which worked:
Htmltoword.configure do |config|
config.custom_templates_path = Rails.root.join('lib', 'htmltoword', 'templates')
end
Ah - thanks, @joshudev. The missing step for me was the last one: I'd tried in various ways to replace the default template and failed. Making an explicit template and referring to it at the point of generating the file gives me a file formatted as I wanted!
How can I change font size and font type? I am losing my mind, whatever I do, it is always Arial 9pt. I tried
body { font-family: "Times New Roman", Times, serif; font-size:16px; font-weight:600 }
`
Some text
` And nothing works :(