2011-10-19 10 views
5

私はこの問題を解決するために検索しましたが、それでも答えは見つかりません。どんな助けもありがとう。.NET C# - MigraDoc - ドキュメントの文字セットを変更するには?

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> 

< ...>

例では、文字上の "ąčęėįųųūūは、" エクスポートされたPDFで表示されません。

どのように 'MigraDoc'文字セットを設定できますか?

答えて

8

ただ、Unicodeの文書を作成するために、レンダラを伝える:

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

PdfDocumentRendererの最初のパラメータはUnicodeを得るために真でなければなりません。 すべてのTrueTypeフォントにすべてのUnicode文字が含まれているわけではありません(ただし、Arial、Verdanaなどで動作するはずです)。

は、完全なサンプルについてはこちらを参照してください:あなたは、mixing PDFSharp and MigraDocであれば、私がそうであるように http://www.pdfsharp.net/wiki/HelloMigraDoc-sample.ashx

+0

どうもありがとう! :)チャームのように働いた。 –

+0

WinANSIはMigraDocのデフォルトの文字セットですか? – Sunil

+0

PDFファイルには、PDFエンコーディング(ANSIとよく似ています)またはUnicodeエンコーディングがあります。 –

1

(それはあなたが持っていることを意味PdfSharpオブジェクトPdfDocumentドキュメントとMigraDocオブジェクト文書ドキュメント文書の一部としてレンダリングされていますが、すべてがそれほど単純ではありません。この例は、PDFSharpチームがMigraDocを別途使用している場合にのみ動作します。

だから、それをこのように使用する必要があります。

  • 以前のPDFシャープXGraphicsのGFXにMigraDocオブジェクトをレンダリングするよりも、あなたのMigraDocドキュメントをレンダリングしていることを確認します。
  • ハッキングを使用して、gfxオブジェクトのエンコードを設定します。 1.5.xの-betaxについては

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

特別なユースケースサンプルにリンクしてくれてありがとうございますが、4年前の質問は明らかに標準ユースケースに関するものでした。 –

+0

あなたが明確に指摘した区別に気付かれませんでした。素晴らしいヒントありがとう。 – humbleSapiens

関連する問題