Если вы смешиваете PDFSharp и MigraDoc , как я (это означает, что у вас есть объект PdfSharp PdfDocument document и объект MigraDoc Документ doc , который отображается как часть document ), все не так просто.Пример, который предоставила команда PDFSharp, работает только тогда, когда вы используете MigraDoc отдельно.
Так что вы должны использовать его следующим образом:
- Убедитесь, что вы визуализируете документ MigraDoc раньше, чемрендеринг объекта MigraDoc в PDF резкое XGraphics gfx .
- Используйте хак для установки кодировки для объекта gfx.
XGraphics gfx = XGraphics.FromPdfPage(page);
// HACK²
gfx.MUH = PdfFontEncoding.Unicode;
gfx.MFEH = PdfFontEmbedding.Always;
// HACK²
Document doc = new Document();
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true, PdfFontEmbedding.Always);
pdfRenderer.Document = doc;
pdfRenderer.RenderDocument();
MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(doc);
docRenderer.PrepareDocument();
docRenderer.RenderObject(gfx, XUnit.FromCentimeter(5), XUnit.FromCentimeter(10), "12cm", para);
Для 1.5.x-betax
let gfx = XGraphics.FromPdfPage(page)
gfx.MUH <- PdfFontEncoding.Unicode
let doc = new Document()
let pdfRenderer = new PdfDocumentRenderer(true, PdfFontEmbedding.Always)
pdfRenderer.Document <- doc
pdfRenderer.RenderDocument()
let docRenderer = new DocumentRenderer(doc)
docRenderer.PrepareDocument()
docRenderer.RenderObject(gfx, XUnit.FromCentimeter 5, XUnit.FromCentimeter 10, "12cm", para)