Aspose.Pdf.TextStamp 与之前添加的文本重叠。如何防止这种情况发生?
Aspose.Pdf.TextStamp overlaps with the previously added text. How is it possible to prevent this?
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);
}
我正在使用邮票作为添加页码的方式。也许有更好的方法?
我试图找到比 here 更好的方法,但没有成功。
添加页码后,我会这样做:
using (var streamPdf = new MemoryStream())
{
doc.Save(streamPdf, Aspose.Pdf.SaveFormat.Pdf);
return streamPdf.GetBuffer();
}
您可以使用 HtmlLoadOptions.PageInfo.Margin
属性 设置 PDF 页边距。以下代码片段生成一个 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");
您也可以根据需要在上面的代码段中指定页面 height/width。相关的代码行有注释,可以注意到。如果您仍然遇到任何问题,请随时告诉我们。
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);
}
我正在使用邮票作为添加页码的方式。也许有更好的方法?
我试图找到比 here 更好的方法,但没有成功。
添加页码后,我会这样做:
using (var streamPdf = new MemoryStream())
{
doc.Save(streamPdf, Aspose.Pdf.SaveFormat.Pdf);
return streamPdf.GetBuffer();
}
您可以使用 HtmlLoadOptions.PageInfo.Margin
属性 设置 PDF 页边距。以下代码片段生成一个 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");
您也可以根据需要在上面的代码段中指定页面 height/width。相关的代码行有注释,可以注意到。如果您仍然遇到任何问题,请随时告诉我们。