Aspose.Pdf.TextStamp перекрывается с ранее добавленным текстом. Как это можно предотвратить? - PullRequest
0 голосов
/ 08 января 2020

Aspose.Pdf.TextStamp перекрывается с ранее добавленным текстом. Как можно предотвратить это?

Вот код, который я использую для подготовки документа:

 StringBuilder htmlPage = new StringBuilder();
 //put here the html from https://pastebin.com/c6Hu4nV5 
 //instead of the `text foo`
 htmlPage.Append("text foo"); 
 byte[] bytes = Encoding.UTF8.GetBytes(htmlPage.ToString());
 var streamHtml = new MemoryStream(bytes)
 var objLoadOptions = new Aspose.Pdf.HtmlLoadOptions(0, 50, 0, 0);
 var doc = new Aspose.Pdf.Document(streamHtml, objLoadOptions);

Вот код, который я использую для номеров страниц (которые являются штампами в моем контексте) дополнение:

foreach (var page in doc.Pages)
{
    Aspose.Pdf.Facades.FormattedText formattedText = new Aspose.Pdf.Facades.FormattedText(idAndVersion + page.Number + "-" + doc.Pages.Count,
                            Color.Black, Aspose.Pdf.Facades.FontStyle.Helvetica, Aspose.Pdf.Facades.EncodingType.Identity_h,
                            true, 12F);
    var textStamp = new Aspose.Pdf.TextStamp(formattedText)
    {
        VerticalAlignment = Aspose.Pdf.VerticalAlignment.Bottom,
        HorizontalAlignment = Aspose.Pdf.HorizontalAlignment.Left,
        LeftMargin = 50,
        BottomMargin = 20
    };
    page.AddStamp(textStamp);
}

Я использую штампы как способ добавления номеров страниц. Может быть, есть лучший способ сделать это?

Я пытался найти лучший способ для здесь , но безуспешно.

После того, как я добавлю номера страниц, вот что я делаю:

using (var streamPdf = new MemoryStream())
{
    doc.Save(streamPdf, Aspose.Pdf.SaveFormat.Pdf);
    return streamPdf.GetBuffer();
}

enter image description here

1 Ответ

1 голос
/ 11 января 2020

Вы можете установить поля страницы PDF, используя HtmlLoadOptions.PageInfo.Margin Свойство. Следующий фрагмент кода создает документ PDF с установленными полями страницы, и текстовая печать не перекрывает остальное содержимое страницы.

StringBuilder htmlPage = new StringBuilder();
htmlPage.Append(File.ReadAllText(dataDir + "foo.html"));
byte[] bytes = Encoding.UTF8.GetBytes(htmlPage.ToString());
var streamHtml = new MemoryStream(bytes);
var objLoadOptions = new Aspose.Pdf.HtmlLoadOptions();
// Set Page Margins
objLoadOptions.PageInfo.Margin = new MarginInfo(50, 50, 50, 50);
// You can also set Page Height/Widht
//objLoadOptions.PageInfo.Height = 898;
//objLoadOptions.PageInfo.Widht = 550;
var doc = new Aspose.Pdf.Document(streamHtml, objLoadOptions);

foreach (var page in doc.Pages)
{
 Aspose.Pdf.Facades.FormattedText formattedText = new Aspose.Pdf.Facades.FormattedText(page.Number + "-" + doc.Pages.Count,
                                        new Aspose.Pdf.Facades.FontColor(0, 0, 0) , Aspose.Pdf.Facades.FontStyle.Helvetica, Aspose.Pdf.Facades.EncodingType.Identity_h,
                                        true, 12F);
 var textStamp = new Aspose.Pdf.TextStamp(formattedText)
 {
  VerticalAlignment = Aspose.Pdf.VerticalAlignment.Bottom,
  HorizontalAlignment = Aspose.Pdf.HorizontalAlignment.Left,
  LeftMargin = 50,
  BottomMargin = 20
 };
 page.AddStamp(textStamp);
}

doc.Save(dataDir + "out20.1.pdf");

Вы также можете указать высоту / ширину страницы в приведенном выше фрагменте кода в соответствии с вашими требованиями , Связанные строки кода комментируются, что можно заметить. Если у вас возникли какие-либо проблемы, сообщите нам об этом.

...