iText 7无法设置保证金

时间:2017-11-24 09:33:05

标签: itext7

我有一个HTML字符串,我需要将其转换为pdf,但我需要的pdf必须具有特定的大小和边距。我作为示例节目做了,现在我有我设置的宽度和高度的pdf,但我不能改变或删除边距,所以请帮助我。

 using (FileStream fs = new FileStream(somePDFFile, FileMode.OpenOrCreate, FileAccess.Write))
            {

                iText.Kernel.Pdf.PdfWriter pdfWriter = new iText.Kernel.Pdf.PdfWriter(fs);

                iText.Kernel.Pdf.PdfDocument pdfDoc = new iText.Kernel.Pdf.PdfDocument(pdfWriter);

                var v = pdfDoc.GetDefaultPageSize().ApplyMargins<iText.Kernel.Geom.Rectangle>(1, 1, 1, 1, true);
                pdfDoc.GetDefaultPageSize().SetWidth(250f);
                pdfDoc.GetDefaultPageSize().SetHeight(200f);
                pdfDoc.GetCatalog().SetLang(new iText.Kernel.Pdf.PdfString("en-US"));
                //Set the document to be tagged
                pdfDoc.SetTagged();



                iText.Html2pdf.ConverterProperties props = new iText.Html2pdf.ConverterProperties();

                iText.Html2pdf.HtmlConverter.ConvertToPdf(htmlString, pdfDoc, props);

                pdfDoc.Close();



            }

1 个答案:

答案 0 :(得分:2)

我搜索了一个答案,但我只能找到这种方法:

public void createPdf(String src, String dest) throws IOException {
    ConverterProperties properties = new ConverterProperties();
    properties.setBaseUri(new File(src).getParent());
    List<IElement> elements =
            HtmlConverter.convertToElements(new FileInputStream(src), properties);
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    pdf.setTagged();
    Document document = new Document(pdf);
    document.setMargins(100, 50, 50, 100);
    for (IElement element : elements) {
        document.add((IBlockElement)element);
    }
    document.close();
}

换句话说:我将HTML转换为元素列表,然后我将这些元素添加到我为其定义边距的Document

我首选的解决方案是在<body>标记级别定义边距,如How to margin the body of the page (html)?中所做的那样。不幸的是,我注意到这还没有得到支持(我做了一个iText开发团队修复此问题的门票。)

我也尝试了convertToDocument()方法,但我无法将immediateFlush设置为false。我还要求团队研究这个问题。

也许还有一个可以引入的属性,虽然我不确定这应该是ConverterProperties属性,PdfDocument属性还是{ {1}}属性。

<强>更新

您可以使用CSS中的@page规则来定义边距。例如:

PdfWriter

这会创建一个上边距为200pt的PDF。