2016-08-04 3 views
0

У меня в настоящее время проблема с 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» тоже был там).

ответ

1

Имитированный полужирный и симулированный курсивом использует обычный шрифт, но применяется преобразование.

Поэтому симуляция не будет работать, если программа просмотра PDF не поддерживает эти преобразования.

DocumentViewer, который поставляется вместе с MigraDoc, не отображает файлы PDF, он отображает документы MigraDoc. По техническим причинам он не может использовать шрифты, поставляемые через интерфейс IFontResolver. EZFontResolver - это реализация IFontResolver.

Что касается «customfont | b | b»: я не могу сказать, является ли это ошибкой или регулярным поведением. Пожалуйста, предоставьте MCVE (полный образец), если вы считаете, что это ошибка.

+0

Так можно ли настраивать шрифт в файле MigraDoc любым другим способом? С ошибкой мне очень сложно показать весь процесс, но я попробую. – mikes

+1

Файл MDDDL описывает документ, и любой шрифт может быть использован здесь. Средство визуализации, которое создает файлы PDF, поддерживает интерфейс, используемый EZFontResolver, и вы можете использовать его для добавления пользовательских шрифтов. Средство визуализации, используемое DocumentViewer, не поддерживает EZFontResolver - вы можете использовать установленные шрифты или XPrivateFontCollection для сборки GDI. Шрифты, поставляемые с EZFontResolver, будут встроены в файл PDF и могут быть использованы любым средством просмотра PDF. –

 Смежные вопросы

  • Нет связанных вопросов^_^