pdf
  • itextsharp
  • fontfamily
  • xmlworker
  • 2014-11-06 5 views 0 likes 
    0

    Я преобразования HTML в PDF, как показано ниже:семейство шрифтов не работает в 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)); 
          } 
         } 
    

    Я хочу установить Font- Семья: Arial для PDF, но проблема в том, что , когда я вижу свойства PDF-файла, он говорит, что используется Helvetica.

    Я думаю, что мне нужно, чтобы загрузить Adobe Font Metric файл (arial.afm файл) и установить это семейство шрифтов (вместо arial.ttf) для использования с PDF. Но я не знаю, как это сделать.

    Не могли бы вы посоветоваться?

    Спасибо,

    +0

    Вы используете 'HTMLWorker' вместо XML Worker. Вы не создаете 'FontProvider'. Пожалуйста, прочитайте мой ответ на следующий вопрос, и вы найдете несколько примеров: http://stackoverflow.com/questions/26738289/itextsharp-write-html-to-pdf-document/ –

    +0

    Кстати: такой вещи нет как файл arial.afm. Это означало бы, что вы можете найти Arial как шрифт Type1 где-нибудь. Также: вы регистрируете arial.ttf, но, глядя на ваш HTML, я вижу, что вы действительно хотите arialbd.ttf (и вы не зарегистрировали этот шрифт). –

    +0

    Спасибо за ваш ответ, но не могли бы вы объяснить, как создать FontProvider? какие строки моего кода неверны? – Kate

    ответ

    0

    В разделе комментариев, вы просите альтернативы, чтобы добавить структуру таблицы в документ.

    Это легко с PdfPTable. Например, если я хочу, чтобы создать таблицу с 3 колонками, я:

    PdfPTable table = new PdfPTable(3); 
    

    Я хочу, чтобы охватить 100% доступную ширину между полем страницы, так что я:

    table.WidthPercentage = 100; 
    

    Я хочу, чтобы первый столбец, чтобы быть в два раза шире колонки два и три, так что я:

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

    И это все.

    +0

    Спасибо, Бруно, ты звезда, я попробую это – Kate

    +0

    Кстати, ты знаешь, почему я не мог использовать Style = 'font-family: Arial? На HTML? Я зарегистрировал все 4 Arial Font iTextSharp.text.FontFactory .Register (@ "C: \ Windows \ Fonts \ arial.ttf", "Arial"); – Kate

    +0

    Да, вы не выполнили мой совет в том смысле, что вы не пытались использовать такие примеры, как http: // itextpdf. com/sandbox/xmlworker/D06_ParseHtmlFonts, которые явно используют 'XMLWorkerFontProvider'. Я могу привести лошадь к воде, но я не могу заставить лошадь выпить ... Если вы не будете следовать рекомендациям, которые даны, m бесполезно –

     Смежные вопросы

    • Нет связанных вопросов^_^