0

以下のようにHTMLをPDFに変換しています:

public const string PdfDocumentHeaderHtml = @"<!DOCTYPE html>
 <html lang='en' xmlns='http://www.w3.org/1999/xhtml'>
  <head>
   <meta charset='utf-16' />
   <title></title>
  </head>
 <body>
  <table>
   <tr>
    <td colspan='3'>
    <span Style='font-family:Arial;font-size:10pt;font-weight:bold;'>{0}</span>
    <br/>
    <br/>
    <span class='pageHeaderText'>{1}</span>
   </td>
   <td colspan='1'>
    <span><img src='' width='150' height='90' alt='NOS'/></span>
   </td>
  </tr>
  </table>
 </body>
</html>";

以下のコードを使用して PDF に保存します。

public override void OnCreatePDF(PdfWriter writer, Document document)
        {
            iTextSharp.text.FontFactory.Register(@"C:\Windows\Fonts\arial.ttf", "Arial");

            base.OnCreatePDF(writer, document); 
            if (writer == null)
                throw new ArgumentNullException("writer");
            if (document == null)
                throw new ArgumentNullException("document");
            var headerHtml = string.Format(Constants.NosPdfDocumentHeaderHtml, Urn, Title);


            var providers = new Dictionary<string, Object> { { HTMLWorker.IMG_BASEURL, string.Format(Constants.HeaderImageLocation, SiteUrlForHeaderImage) } };
            List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StringReader(headerHtml), null, providers);            
            foreach (IElement htmlElement in htmlarraylist)
            {
                document.Add(htmlElement);
                document.Add(new LineSeparator((float)0.90, 100, new BaseColor(0, 112, 192, 0), 0, 0));
            }
        }

PDF にFont-Family:Arialを設定したいのですが、問題は、PDF ファイルのプロパティを見ると、Helvetica が使用されていると表示されることです。

Adobe Font Metric ファイル ( arial.afm ファイル) をダウンロードし、このフォント ファミリを ( arial.ttfの代わりに) pdf で使用するように設定する必要があると思います。しかし、私はそれを行う方法がわかりません。

アドバイスをお願いできますか?

ありがとう、

4

1 に答える 1

0

コメント セクションでは、ドキュメントにテーブル構造を追加する代替手段を求めています。

で簡単PdfPTableです。たとえば、3 つの列を持つテーブルを作成する場合は、次のようにします。

  PdfPTable table = new PdfPTable(3);

ページの余白間の利用可能な幅の 100% にまたがりたいので、次のようにします。

  table.WidthPercentage  = 100;

最初の列の幅を 2 ​​列目と 3 列目の 2 倍にしたいので、次のようにします。

  table.SetWidths(new int[]{2, 1, 1});

次に、セルを追加します。

PdfPCell cell;
cell = new PdfPCell(new Phrase("Table 1"));
cell.Colspan = 3;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("Cell with rowspan 2"));
cell.Rowspan = 2;
table.AddCell(cell);
table.AddCell("row 1; cell 1");
table.AddCell("row 1; cell 2");
table.AddCell("row 2; cell 1");
table.AddCell("row 2; cell 2");

最後に、テーブルを に追加しますDocument

document.Add(table);

以上です。

于 2014-11-07T16:04:15.817 に答える