Nếu bạn là mixing PDFSharp and MigraDoc, như tôi đã làm (nó có nghĩa là bạn có một đối tượng PDFSharp tài liệu PdfDocument và một đối tượng MigraDoc Document doc , được hiển thị dưới dạng một phần của tài liệu), mọi thứ không đơn giản như vậy. Ví dụ, nhóm PDFSharp đó đã chỉ hoạt động khi bạn đang sử dụng MigraDoc riêng biệt.
Vì vậy, bạn nên sử dụng nó theo cách này:
- Hãy chắc chắn rằng bạn đang render MigraDoc doc của bạn sớm hơn render các đối tượng MigraDoc đến PDF sắc nét XGraphics gfx.
- Sử dụng tính năng hack để đặt mã hóa cho đối tượng 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);
Đối 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)
Nguồn
2016-02-28 14:20:28
Cảm ơn rất nhiều! :) Làm việc như người ở. –
Vậy WinansI là bộ mã mặc định cho MigraDoc? – Sunil
Tệp PDF có mã hóa PDF (giống như ANSI) hoặc mã hóa Unicode. –