iTextsharpライブラリをXmlWorkerバージョン5.5.12.0で使用しています。リストの問題はDIVで囲まれています。c#iTextsharpでxmlworkerが生成されたPDFが破損していますリスト
<body>
<span>
\t <ul>
\t \t <ul>
\t \t \t <li>Project Management
\t \t \t \t <ul>
\t \t \t \t \t <li>
\t \t \t \t \t \t <a class="jwiki-small" data-containerid="2544" data-containertype="14" data-objectid="14695" data-objecttype="102" href="https://SampleUrl.com/DOC-146">Sample Text</a>
\t \t \t \t \t </li>
\t \t \t \t </ul>
\t \t \t </li>
\t \t </ul>
\t </ul>
</span>
</body>
やPDF下の画像のように正しく見えます。
しかし、フォーマットの問題
は一度スタートリストは、あらゆるレベルでの事業部で囲まれています。 pdfのリストはインラインになります。<body>
<div>
\t <span>
\t \t <ul>
\t \t \t <ul>
\t \t \t \t <li>Project Management
\t \t \t \t \t <ul>
\t \t \t \t \t \t <li>
\t \t \t \t \t \t \t <a class="jwiki-small" data-containerid="2544" data-containertype="14" data-objectid="14695" data-objecttype="102" href="https://SampleUrl.com/DOC-146">Sample Text</a>
\t \t \t \t \t \t </li>
\t \t \t \t \t </ul>
\t \t \t \t </li>
\t \t \t </ul>
\t \t </ul>
\t </span>
</div>
</body>
FYI、ここでは私が使用しているCreatePDFメソッドです。まず
private void CreatePDF(string html)
{
var document = new Document(iTextSharp.text.PageSize.A4,20,20,20,20);
var memoryStream = new MemoryStream();
\t \t \t
using (var pdfWriter = PdfWriter.GetInstance(document, memoryStream))
{
document.Open();
var htmlContext = new HtmlPipelineContext(null);
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
htmlContext.SetImageProvider(new CustomItextImageProvider());
htmlContext.CharSet(Encoding.UTF8);
var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true);
var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, pdfWriter)));
var xmlWorker = new XMLWorker(pipeline, true);
var xmlParser = new XMLParser(true,xmlWorker);
StringReader rdr = new StringReader((html));
xmlParser.Parse(rdr);
pdfWriter.CloseStream = false;
document.AddCreator("iTextSharp");
document.AddAuthor("ThreeWill");
document.Close();
string fileName = @"c:\temp\" + "test" + DateTime.Now.ToString("yyyy-mm-dd hh.mm.ss") + ".pdf";
var outputFileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write);
memoryStream.Position = 0;
memoryStream.WriteTo(outputFileStream);
outputFileStream.Close();
}
}
iText 7.1.0 + pdfHTML 2.0.0でこれを再現できますか? –
いいえ、最新のリリースでは再生できません。私はこのトピックをトピック以外のものとして閉じるように投票します。これは、それがもはや再現できない問題であることを示しています。アップグレードはそのトリックを行う必要があります。 –
この質問と回答をご覧ください:https://stackoverflow.com/questions/47895935 –