1

我正在使用将 HTML 保存为 PDF 文件的 EvoPDF。HTML 包含长文本(可以包含列表、表格等)。我想添加页边距,但我不想使用pdfConverter.PdfDocumentOptions.{Bottom/Top}Margin- 属性,我想在 HTML 中设置页边距(类似于在 Microsoft Word 中,我在其中设置页面大小和边距,文本自动移动到下一页,它之前已经设置了边距)。我预览了他们的帮助页面,但找不到相关信息。

我的转换代码是:

        EvoPdf.HtmlToPdf.PdfConverter pdfConverter = new EvoPdf.HtmlToPdf.PdfConverter();
        pdfConverter.LicenseKey = System.Configuration.ConfigurationManager.AppSettings["EvoHtmlToPdfLicence"];
        pdfConverter.PdfDocumentOptions.PdfPageSize = EvoPdf.HtmlToPdf.PdfPageSize.Letter;
        pdfConverter.PdfDocumentOptions.PdfPageOrientation = EvoPdf.HtmlToPdf.PdfPageOrientation.Portrait;
        byte[] pdf = pdfConverter.GetPdfBytesFromHtmlString(htmlText);

谢谢!

4

1 回答 1

1

Margin 属性是全局的,因此页眉、页脚、正文受此影响。如果您想单独影响呈现的 HTML,您可以使用以下设置:

文档

  • PDF 中的 HTML 内容目标。HTML 内容目标由在第一个 PDF 页面中开始呈现的 X 和 Y 坐标以及目标矩形的宽度和高度给出。所有值均以点数表示。1 点是 1/72 英寸。如果您未设置任何目标矩形,则默认情况下转换器将在第一页的左上角开始渲染,将尝试使用整个 PDF 页面宽度进行渲染,并将自动确定目标矩形高度,以便整个HTML 内容可见。您可以在代码中设置用于控制 PDF 中 HTML 内容目标的属性是 X、Y、宽度和高度。[...]

  • HTML 内容顶部和底部间距。使用这些选项,您可以为 HTML 内容设置顶部和底部填充。例如,当您想在 PDF 页面页眉或页脚与主要内容之间引入间距时,这可能很有用。您可以在代码中设置用于控制顶部和底部间距的属性是 TopSpacing 和 BottomSpacing。[...]

代码示例:

// Category: HTML Content Destination and Spacing Options
// Set HTML content destination in PDF page
if (xLocationTextBox.Text.Length > 0)
    htmlToPdfConverter.PdfDocumentOptions.X = float.Parse(xLocationTextBox.Text);
if (yLocationTextBox.Text.Length > 0)
    htmlToPdfConverter.PdfDocumentOptions.Y = float.Parse(yLocationTextBox.Text);
if (contentWidthTextBox.Text.Length > 0)
    htmlToPdfConverter.PdfDocumentOptions.Width = float.Parse(contentWidthTextBox.Text);
if (contentHeightTextBox.Text.Length > 0)
    htmlToPdfConverter.PdfDocumentOptions.Height = float.Parse(contentHeightTextBox.Text);

// Set HTML content top and bottom spacing or leave them not set to have no spacing for the HTML content
htmlToPdfConverter.PdfDocumentOptions.TopSpacing = float.Parse(topSpacingTextBox.Text);
htmlToPdfConverter.PdfDocumentOptions.BottomSpacing = float.Parse(bottomSpacingTextBox.Text);
于 2017-05-04T14:07:39.660 回答