我使用iText7将HTML转换为完美运行的PDF
然而这个电话:
HtmlConverter.ConvertToPdf(htmlStream, document);
会在文档被调用后关闭,但我不想因为以下原因关闭文档
我写了这个函数来编写我将在循环中调用它的页面
public static void WritePage(string htmlbody)
{
document.AddNewPage();
byte[] htmlByteArray = Encoding.UTF8.GetBytes(htmlbody);
MemoryStream htmlStream = new MemoryStream(htmlByteArray);
HtmlConverter.ConvertToPdf(htmlStream, document);
}
在循环结束后,我将自己关闭文件
public static void CloseDocument()
{
document.Close();
}
这在我使用iText5时起作用,但现在convertToPdf将关闭文档。 我可以从该文档中读取并将其与新页面一起添加到新文档中,但我不想这样做 我想利用内置的document.AddNewPage,在文档完全构建之后,我将自己关闭它
提前谢谢
答案 0 :(得分:1)
回答#1正在使用PdfMerger,这是我的首选答案
public void createPdf(String baseUri, String[] src, String dest) throws IOException {
ConverterProperties properties = new ConverterProperties();
properties.setBaseUri(baseUri);
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
PdfMerger merger = new PdfMerger(pdf);
for (String html : src) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument temp = new PdfDocument(new PdfWriter(baos));
HtmlConverter.convertToPdf(new FileInputStream(html), temp, properties);
temp = new PdfDocument(
new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
merger.merge(temp, 1, temp.getNumberOfPages());
temp.close();
}
pdf.close();}
回答#2将html转换为IElement List并将其添加到文档中,如下面的代码所示:
public void createPdf(String baseUri, String[] src, String dest) throws IOException {
ConverterProperties properties = new ConverterProperties();
properties.setBaseUri(baseUri);
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
for (String html : src) {
List<IElement> elements =
HtmlConverter.convertToElements(new FileInputStream(html), properties);
for (IElement element : elements) {
document.add((IBlockElement)element);
}
}
document.close();}