我目前在使用PdfSharp / MigraDoc和pdf查看器时遇到问题。我使用EZFontResolver made by Thomas能够使用自定义字体生成pdf。不幸的是,pdf查看器无法呈现字体,我不知道为什么。我在Thomas的博客上看到了一个错误described by Travis,其中指出,如果EZFontResolver没有多个粗体/斜体符号识别(例如“fontname | b | b”),那么 PdfDocumentRenderer.RenderDocument ()失败。关键是,当我尝试这样的事情时:
Document document = DdlReader.DocumentFromString(ddl);
_renderer = new DocumentRenderer(document);
_renderer.PrepareDocument();
我的pdf查看器会覆盖DocumentViewer并查看FixedDocument类实例。有趣的是,保存的pdf文件设置了所有字体,但预览无法做到(这是我的大问题)。即使我使用解析器返回正确的字体,所有这一切都会发生。
修改
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”的来源也是离开那里。
答案 0 :(得分:1)
模拟粗体和模拟斜体使用常规字体,但会应用转换。
因此,如果PDF查看器不支持这些转换,则模拟将不起作用。
MigraDoc附带的DocumentViewer不显示PDF文件,它显示MigraDoc文档。由于技术原因,它不能使用通过IFontResolver接口提供的字体。 EZFontResolver是IFontResolver的一个实现。
关于" customfont | b | b":我不能说这是一个bug还是常规行为。如果您认为它是一个错误,请提供MCVE(完整样本)。