У меня в настоящее время проблема с PdfSharp/MigraDoc и программой просмотра PDF. Я использовал EZFontResolver made by Thomas, чтобы иметь возможность создавать pdf-файлы с пользовательскими шрифтами. К сожалению, просмотрщик PDF не может отобразить шрифт, и я понятия не имею, почему. Я видел ошибку described by Travis в блоге Томаса, в которой отмечалось, что если EZFontResolver не имеет нескольких выделенных жирным/курсивом символов (например, «fontname | b | b»), то PdfDocumentRenderer.RenderDocument() не работает. Дело в том, когда я пытаюсь что-то вроде этого:Шрифты не загружаются в PDF-просмотрщик
Document document = DdlReader.DocumentFromString(ddl);
_renderer = new DocumentRenderer(document);
_renderer.PrepareDocument();
чем EZFontResolver спрашивается шрифты с именами, как «customfont | B | B» (это не происходит, когда я использую только PdfDocument.Save (...)) вместо «customfont».
My pdf viewer переопределяет DocumentViewer и рассматривает экземпляры класса FixedDocument. Самое забавное, что в сохраненном pdf-файле установлены все шрифты, но предварительный просмотр не может этого сделать (и это моя большая проблема). Все это происходит, хотя я возвращаю правильный шрифт с помощью распознавателя.
EDIT:
DDL представляет собой строку, которая выглядит примерно так:
"\\document
[
Info
{
Title = \"My file\"
Subject = \"My pdf file\"
Author = \"mikes\"
}
]
{
\\styles
{
Heading1 : Normal
{
Font
{
Name = \"My custom font\"
Bold = true
}
ParagraphFormat
{
Alignment = Center
SpaceBefore = \"0.5cm\"
SpaceAfter = \"0.5cm\"
}
}
header : Normal
{
Font
{
Name = \"My custom font\"
Size = 6
}
ParagraphFormat
{
Alignment = Center
}
}
И когда я удалил исправление ошибок с помощью Travis, исключение было брошено в _renderer.PrepareDocument() (после исправления трассировка стека показала, что источник нескольких «| b» тоже был там).
Так можно ли настраивать шрифт в файле MigraDoc любым другим способом? С ошибкой мне очень сложно показать весь процесс, но я попробую. – mikes
Файл MDDDL описывает документ, и любой шрифт может быть использован здесь. Средство визуализации, которое создает файлы PDF, поддерживает интерфейс, используемый EZFontResolver, и вы можете использовать его для добавления пользовательских шрифтов. Средство визуализации, используемое DocumentViewer, не поддерживает EZFontResolver - вы можете использовать установленные шрифты или XPrivateFontCollection для сборки GDI. Шрифты, поставляемые с EZFontResolver, будут встроены в файл PDF и могут быть использованы любым средством просмотра PDF. –