2016-09-19 12 views
0

私はプログラムでPDFにフォントを追加(登録、埋め込み)する必要があります。 私はghostscriptやitextsharpのような多くのユーティリティを試しましたが、私は問題を解決できませんでした。このような状況で例えばC#プログラムでフォントをPDFに追加

enter image description here

私は宅配便-太字を追加して、この状況を取得したいと思います:

enter image description here

+0

お試しください。お試しください。 – kiziu

+0

私はghostscriptで試しました。 -dSAFER -dNOPLATFONTS -dNOPAUSE -dBATCH -sDEVICE = pdfwrite -dPDFSETTINGS = /プリンタ-dCompatibilityLevel = 1.4 -dSubsetFonts = true -dEmbedAllFonts = true -sFONTPATH = font_path.ttf -sOutputFile = pdf_out_path -f pdf_in_path 私はitextsharpライブラリでこの目的に役立つ何かを検索しましたが、何も見つかりませんでした。段落のフォントしか設定できないようです。 – user3492925

+0

これはいくつかの助けになるかもしれません:http://stackoverflow.com/questions/4231656/how-do-i-embed-fonts-in-an-existing-pdf – kiziu

答えて

0

私はiTextSharpのV5を使用してプロジェクトを作成しました。 5.9 NuGet経由で、次のコードを使用しました。

const string PdfLocation = @"C:\fakepath\output.pdf"; 

    static void Main(string[] args) 
    { 
     using (var pdfDoc = new Document()) 
     using (var fs = new FileStream(PdfLocation, FileMode.OpenOrCreate)) 
     using (var writer = PdfWriter.GetInstance(pdfDoc, fs)) 
     { 
      pdfDoc.Open(); 

      var font = FontFactory.GetFont(FontFactory.COURIER_BOLD); 

      // Doesn't use font 
      var paragraph = new Paragraph("LINE 1"); 
      paragraph.Font = font; 
      pdfDoc.Add(paragraph); 

      // Doesn't use font 
      var paragraph2 = new Paragraph(); 
      paragraph2.Add("LINE 2"); 
      paragraph2.Font = font; 
      pdfDoc.Add(paragraph2); 

      // Does use font 
      var paragraph3 = new Paragraph(); 
      paragraph3.Font = font; 
      paragraph3.Add("LINE 3"); // This must be done after setting the font 
      pdfDoc.Add(paragraph3); 

      var cb = writer.DirectContent; 

      pdfDoc.Close(); 
     } 
    } 

テキストを書き込む前にまずフォントを設定してください。次のコードは、PDFに以下のプロパティを出力します。私はこれからTrueType要件を取得しませんでしたが、おそらくこれは正しい方向にあなたを設定します。

paragraphparagraph2を使用しているところでは、テキストを設定した後にフォントを設定しているため、私のHelveticaのデフォルトフォントを使用します。注文は問題です!

このドキュメントは、確かに展開する必要があります。

+0

あなたのボーナスはまったく変わりません。あなたはpdfをメモリに読み込み、メモリ内の未使用のオブジェクトを削除し、最終的にそのメモリ内の表記を捨てます。ディスク上のpdfはまったく変更されていません。 – mkl

+0

ああ、あなたは正しい。そこには作業中のコードがいくつかありました。私はもう一度@mklで修正します。 PDFを作成する際にコマンドを実行するかどうか分からないので、元のファイルを削除する必要があります。 – KSib

+0

@mklもう一度ありがとう。私はそれを整理した。 – KSib

関連する問題