What I'm trying to do is generate a PDF using Prawn, while having some language specific characters.
And as a result I'm getting the following error:
raise Prawn::Errors::IncompatibleStringEncoding,
"Your document includes text that's not compatible with the Windows-1252 character set.\n" \
"If you need full UTF-8 support, use TTF fonts instead of PDF's built-in fonts\n."
So I tried changing the font by doing this:
# app/models/prawn/change_font_decorator.rb
Prawn::Document.generate("output.pdf") do
font_families.update("Arial" => {
:normal => Rails.root.join("app/assets/fonts/OpenSans-Regular.ttf"),
:italic => Rails.root.join("app/assets/fonts/OpenSans-Regular.ttf"),
:bold => Rails.root.join("app/assets/fonts/OpenSans-Regular.ttf"),
:bold_italic => Rails.root.join("app/assets/fonts/OpenSans-Regular.ttf")
})
font "Arial"
end
Yet, I'm getting the same error when trying to generate a PDF file.
Any ideas on how to solve this?
The prawn manual is an excellent reference, and includes sections on font usage. The "External Fonts" section is particularly relevant to your issue.
Here's a basic case that should work, although it doesn't support bold and italic:
To also use bold and italic, it's best to register a font family that doesn't conflict with one of the standard PDF fonts:
If you're building your PDF using initialize, you can simply update your font families in the initialize method and then set the desired font.