私のようにPDFSharp と MigraDocを混在させている場合(つまり、 PdfSharp オブジェクトPdfDocument documentと、 documentの一部としてレンダリングされるMigraDoc オブジェクトDocument docがあることを意味します)、すべてがそれほど単純ではありません。PDFSharp チームが提供した例は、MigraDoc を個別に使用している場合にのみ機能します。
したがって、次のように使用する必要があります。
- MigraDoc オブジェクトを PDF シャープXGraphics gfxにレンダリングする前に、MigraDoc ドキュメントをレンダリングしていることを確認してください。
- ハックを使用して、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)