从HTML转换为PDF时定义PageSize

时间:2017-04-06 10:29:52

标签: java html pdf aspose aspose.words

我试图将html转换为PDF格式的pdf文档。 (版本是17.4.0)

我的问题是: 如何在html中设置页面大小和页边距?

documentation中,听起来我必须为节(div-element)设置宽度,高度和边距。

我的HTML看起来像这样:



<!DOCTYPE html>
<html>

<head>
    <title>Hello PDF</title>
</head>

<body>
    <div class="page" style="width:210mm; height:297mm; margin-top:0cm; margin-bottom:1cm; margin-left:1cm; margin-right:1cm;">
        <p>Hello World</p>
    </div>
</body>

</html>
&#13;
&#13;
&#13;

我的java代码:

String baseUri = "path/to/doc/";

LoadOptions loadOptions = new LoadOptions();
loadOptions.setEncoding(Charset.forName("UTF-8"));
Document doc = new Document(baseUri + "test.html", loadOptions);

OutputStream outputStream = new FileOutputStream(baseUri + "test.pdf");
doc.save(outputStream, SaveFormat.PDF);

我的问题是,生成的pdf页面大小为215,9 x 279,4毫米(而不是210 x 297毫米),顶部的边距也不是0.

有人能告诉我如何在我的html中定义这个值吗?

1 个答案:

答案 0 :(得分:1)

请注意,Aspose.Words模仿与MS Word相同的行为。您的页面设置在HTML中很好。如果您在MS Word中加载输入html并将其转换为PDF,它将生成215.9 x 279,4mm页面大小的文档。

但是,您可以使用Aspose.Words API按照您的要求更改部分的页面设置。

我是Tilal,Aspose的开发人员传播者。

String baseUri = "path/to/doc/";

LoadOptions loadOptions = new LoadOptions();
loadOptions.setEncoding(Charset.forName("UTF-8"));
com.aspose.words.Document doc = new com.aspose.words.Document(baseUri +"test.html", loadOptions);

for (Section sectoin : doc.getSections())
{
       PageSetup ps = sectoin.getPageSetup();
       ps.setPaperSize(PaperSize.A4);
       ps.setTopMargin(0.0);
       ps.setBottomMargin(1.0);
       ps.setLeftMargin(1.0);
       ps.setRightMargin(1.0);

}

OutputStream outputStream = new FileOutputStream(baseUri +"Test.pdf");
doc.save(outputStream, com.aspose.words.SaveFormat.PDF);