.net 通过 PDFsharp 在 System.Drawing 中操纵下划线粗细的方法

.net way to manipulate underline thickness in System.Drawing via PDFsharp

我有兴趣调整/微调一些使用 PDFsharp library.

写入 PDF 的代码

问题是:当我的文本既有粗体又有下划线时,下划线和相应的文本都会变粗。我希望能够在文本变为粗体时让下划线保持细长。

查看 PDFsharp 的 API 以及 System.DrawingSystem.Drawing,似乎没有简单的方法可以做到这一点。

还有人知道吗?

下面是使用 PDFsharp 库的代码的当前输出示例,我很确定它对 System.Drawing 和其他 GDI/WPF 实现有一些包装调用。

我很确定我们正在使用 GDI。我们在这里进行的主要 PDFsharp 调用是

public void DrawString(string s, XFont font, XBrush brush, double x, double y, XStringFormat format, double width)

PDFsharp 在生成 PDF 文件时不使用 System.Drawing,因此操作 System.Drawing 对您的情况没有任何好处。

PDFsharp 使用字体 table.

中的下划线位置和下划线粗细

由于 PDFsharp 是开源的,您可以修改它以使用固定的下划线粗细。

或者编写一个辅助方法来绘制不带下划线的文本,然后在文本下方绘制一条线。这可以在不修改 PDFsharp 的情况下完成,您可以轻松升级到更高版本。

更新:另一种选择:使用 MigraDoc 创建 PDF 文件。

MigraDoc 使用 PDFsharp 创建 PDF 文件,但 MigraDoc 使用自己的代码绘制文本的下划线,常规文本和粗体文本将具有相同的下划线。