【问题标题】:Having problems getting PDF document from text file formatted correctly with GemBox从使用 GemBox 正确格式化的文本文件获取 PDF 文档时遇到问题
【发布时间】:2019-11-28 20:53:13
【问题描述】:

我正在尝试使用 GemBox 将文本文件转换为 pdf。我可以正确导入文本,但没有应用字体类型和大小,并且句子间距似乎加倍。

这是我目前所拥有的:

public static void CreateDoc(string ebillpath)
    { 
      using (var sr = new StreamReader(ebillpath))
      {
        var doc = new DocumentModel();
        doc.DefaultCharacterFormat.Size = 10;
        doc.DefaultCharacterFormat.FontName = "Courier New";

        var section = new Section(doc);
        doc.Sections.Add(section);
        string line;

        var clearedtop = false;

        while ((line = sr.ReadLine()) != null)
        {
          if (string.IsNullOrEmpty(line) && !clearedtop)
          {
            continue;
          }

          clearedtop = true;
          Paragraph paragraph2 = new Paragraph(doc, new Run(doc, line));
          section.Blocks.Add(paragraph2);
        }

        PageSetup pageSetup = new PageSetup(); // section.PageSetup;
        var pm = new PageMargins();
        pm.Bottom = 36;
        pm.Top = 36;
        pm.Right = 36;
        pm.Left = 36;
        pageSetup.PageMargins = pm;

        doc.Save(@"d:\temp\test.pdf");
      }
    }

此文本文件使用空格来正确格式化文本,因此我需要将字体设置为 Courier New。

这是文本文件格式正确的示例:

这就是它以 pdf 形式出现的样子:

每一行似乎都加倍了,字体没有被应用。

有什么建议吗?

【问题讨论】:

    标签: c# pdf gembox-document


    【解决方案1】:

    试试这个:

    public static void CreateDoc(string ebillpath)
    {
        DocumentModel doc = new DocumentModel();
    
        CharacterFormat charFormat = doc.DefaultCharacterFormat;
        charFormat.Size = 10;
        charFormat.FontName = "Courier New";
    
        ParagraphFormat parFormat = doc.DefaultParagraphFormat;
        parFormat.SpaceAfter = 0;
        parFormat.LineSpacing = 1;
    
        // It seems you want to skip first line with 'clearedtop'.
        // So maybe you could just use this instead.
        string text = string.Concat(File.ReadLines(ebillpath).Skip(1));
        doc.Content.LoadText(text);
    
        Section section = doc.Sections[0];
        PageMargins margins = section.PageSetup.PageMargins;
        margins.Bottom = 36;
        margins.Top = 36;
        margins.Right = 36;
        margins.Left = 36;
    
        doc.Save(@"d:\temp\test.pdf");
    }
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      相关资源
      最近更新 更多