2011-10-19 8 views
5

Bu soruna çözüm aradım, ancak yine de cevabı bulamıyorum. Herhangi bir yardım takdir edilecektir. .NET C# - MigraDoc - Belge karakter takımı nasıl değiştirilir?

Document document = new Document(); 
    Section section = document.AddSection(); 

    Paragraph paragraph = section.AddParagraph(); 

    paragraph.Format.Font.Color = Color.FromCmyk(100, 30, 20, 50); 

    paragraph.AddText("ąčęėįųųūū"); 

    paragraph.Format.Font.Size = 9; 
    paragraph.Format.Alignment = ParagraphAlignment.Center; 
    </b> 

<

...>

karakterden Yukarıdaki örnekte

"ąčęėįųųūū" ihraç pdf görüntülenmez.

'MigraDoc' karakter kümesini nasıl ayarlayabilirim?

cevap

8

Sadece bir Unicode belge oluşturmak için Oluşturucu söyleyin:

PdfDocumentRenderer renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always); 
renderer.Document = document; 

PdfDocumentRenderer ilk parametresi Unicode almak için doğru olması gerekir. Lütfen tüm True Type fontlarının tüm Unicode karakterlerini içermediğini (ancak Arial, Verdana vb. Ile çalışması gerektiğini) unutmayın.

tam örnek için buraya bakınız: Eğer, mixing PDFSharp and MigraDoc ise benim yaptığım gibi http://www.pdfsharp.net/wiki/HelloMigraDoc-sample.ashx

+0

Çok teşekkürler! :) Bir çekicilik gibi çalıştı. –

+0

Yani WinANSI MigraDoc için varsayılan karakter takımı nedir? – Sunil

+0

PDF dosyaları PDF kodlamasına (ANSI gibi) veya Unicode kodlamaya sahiptir. –

1

(Eğer var demektir bir PDFsharp nesne PDFDocument belge ve MigraDoc nesne Belge doc ( belgesinin bir parçası olarak işlenen), her şey bu kadar basit değildir. PDFSharp Ekibinin vermiş olduğu örnek, yalnızca MigraDoc'u ayrı olarak kullanırken çalışır.

  • keskin PDF XGraphics gfx için MigraDoc nesnesi render daha erken senin MigraDoc doc render emin olun:

    Yani bu şekilde kullanmalıdır.

  • gfx nesnesinin kodlamasını ayarlamak için kesmeyi kullanın. 1.5.x-betax için

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); 

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) 
+0

Özel kullanım örneği örneğine bağlantı sağladığınız için teşekkürler, ancak dört yıllık bir soru normal kullanım durumuyla ilgili. –

+0

Açıkça belirttiğiniz ayrımı fark etmediniz. Harika bir ipucu için teşekkürler. – humbleSapiens

İlgili konular