iTextSharp 将 HTML 解析为 508 兼容的 PDF table
iTextSharp parse HTML to 508 compliant PDF table
下面的代码将从 HTML 创建一个 PDF。问题在于,当文档被标记时,TH 标记将作为 TD 写入 PDF。有没有办法让 PDF 中的标签显示为 TH?
string html = @"<table>
<tr>
<TH> header1 </TH>
<TH> header2 </TH>
<TH> header3 </TH>
</tr>
<tr>
<td> col 1</td>
<td> col 2</td>
<td> col 3</td>
</tr>
</table>";
FileStream fs = new FileStream(@"C:\test.pdf", FileMode.Create);
TextReader reader = new StringReader(html);
Document document = new Document(PageSize.A4, 30, 30, 30, 30);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
writer.SetTagged();
writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_7);
document.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, reader);
document.Close();
fs.Close();`
您正在使用的版本不支持您需要的功能。
请看today's update of the TableData
class in XML Worker:
@@ -97,6 +99,10 @@
if (direction != PdfWriter.RUN_DIRECTION_DEFAULT) {
cell.setRunDirection(direction);
}
+
+ if (HTML.Tag.TH.equalsIgnoreCase(tag.getName())) {
+ cell.setRole(PdfName.TH);
+ }
try {
HtmlPipelineContext htmlPipelineContext = getHtmlPipelineContext(ctx);
cell = (HtmlCell) getCssAppliers().apply(cell, tag, htmlPipelineContext);
这解决了您在 iText 中的问题。它现在计划移植到 iTextSharp。修复将在下一个版本中。
我们添加了 TH 元素的正确标记。这些更改将包含在下一个 iText XMLWorker 版本中。
通常不采用 XMLWorker 来生成正确标记的 PDF。但是 XMLWorker 使用基本的 iText Core 标记逻辑,TD 是所有类型 table 单元格的默认角色。
下面的代码将从 HTML 创建一个 PDF。问题在于,当文档被标记时,TH 标记将作为 TD 写入 PDF。有没有办法让 PDF 中的标签显示为 TH?
string html = @"<table>
<tr>
<TH> header1 </TH>
<TH> header2 </TH>
<TH> header3 </TH>
</tr>
<tr>
<td> col 1</td>
<td> col 2</td>
<td> col 3</td>
</tr>
</table>";
FileStream fs = new FileStream(@"C:\test.pdf", FileMode.Create);
TextReader reader = new StringReader(html);
Document document = new Document(PageSize.A4, 30, 30, 30, 30);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
writer.SetTagged();
writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_7);
document.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, reader);
document.Close();
fs.Close();`
您正在使用的版本不支持您需要的功能。
请看today's update of the TableData
class in XML Worker:
@@ -97,6 +99,10 @@
if (direction != PdfWriter.RUN_DIRECTION_DEFAULT) {
cell.setRunDirection(direction);
}
+
+ if (HTML.Tag.TH.equalsIgnoreCase(tag.getName())) {
+ cell.setRole(PdfName.TH);
+ }
try {
HtmlPipelineContext htmlPipelineContext = getHtmlPipelineContext(ctx);
cell = (HtmlCell) getCssAppliers().apply(cell, tag, htmlPipelineContext);
这解决了您在 iText 中的问题。它现在计划移植到 iTextSharp。修复将在下一个版本中。
我们添加了 TH 元素的正确标记。这些更改将包含在下一个 iText XMLWorker 版本中。 通常不采用 XMLWorker 来生成正确标记的 PDF。但是 XMLWorker 使用基本的 iText Core 标记逻辑,TD 是所有类型 table 单元格的默认角色。