gpt4 book ai didi

c# - HR 标签未在 iTextSharp 中实现

转载 作者:可可西里 更新时间:2023-11-01 14:52:02 25 4
gpt4 key购买 nike

我在使用 HTMLWorker 时遇到标签 HR 的问题,我的代码是:

var document = new Document(PageSize.A4, 50, 50, 25, 25);
var output = new MemoryStream();
var writer = PdfWriter.GetInstance(document, output);
document.Open();
String contents = File.ReadAllText("C://TemplateCotizaciones//Cotizacion.html");
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader (contents), null);

但是,当 html 中包含一个标签 HR 时,HTMLWorker 的 ParseToList 方法抛出异常“nullReferenceException”

例如:我有错误:

hello<br/>
<hr>
world

没有错误

hello<br/>

world

你知道为什么吗?我认为 HR 没有在 ParseToList 的代码中实现。你知道如何在没有 HR 的情况下在 html 中写一行吗(由 HTMLWorker.ParseToList 提供)?

感谢您的建议和帮助

最佳答案

HTMLWorker 已弃用。仍然支持 XMLWorker,但不是实现“html 到 pdf”功能的最新方法。pdfHTML 是最新的 iText7 插件,用于将 HTML 转换为 pdf。它支持 HTML5 和 CSS3。

一个小代码示例:

public void createPdf(String src, String dest, String resources) throws IOException {
try {
FileOutputStream outputStream = new FileOutputStream(dest);

WriterProperties writerProperties = new WriterProperties();
//Add metadata
writerProperties.addXmpMetadata();

PdfWriter pdfWriter = new PdfWriter(outputStream, writerProperties);

PdfDocument pdfDoc = new PdfDocument(pdfWriter);
pdfDoc.getCatalog().setLang(new PdfString("en-US"));
//Set the document to be tagged
pdfDoc.setTagged();
pdfDoc.getCatalog().setViewerPreferences(new PdfViewerPreferences().setDisplayDocTitle(true));

//Set meta tags
PdfDocumentInfo pdfMetaData = pdfDoc.getDocumentInfo();
pdfMetaData.setAuthor("Samuel Huylebroeck");
pdfMetaData.addCreationDate();
pdfMetaData.getProducer();
pdfMetaData.setCreator("iText Software");
pdfMetaData.setKeywords("example, accessibility");
pdfMetaData.setSubject("PDF accessibility");
//Title is derived from html

// pdf conversion
ConverterProperties props = new ConverterProperties();
FontProvider fp = new FontProvider();
fp.addStandardPdfFonts();
fp.addDirectory(resources);//The noto-nashk font file (.ttf extension) is placed in the resources

props.setFontProvider(fp);
props.setBaseUri(resources);
//Setup custom tagworker factory for better tagging of headers
DefaultTagWorkerFactory tagWorkerFactory = new AccessibilityTagWorkerFactory();
props.setTagWorkerFactory(tagWorkerFactory);

HtmlConverter.convertToPdf(new FileInputStream(src), pdfDoc, props);
pdfDoc.close();

} catch (Exception e) {
e.printStackTrace();
}
}

了解更多信息,请访问 http://itextpdf.com/itext7/pdfHTML

关于c# - HR 标签未在 iTextSharp 中实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com