Verwenden Sie iTextSharp, um Informationen zum Textformat zu erhalten
iTextSharp bietet ein einfaches Textextraktionssystem, das einige grundlegende Markups verarbeiten kann. Obwohl es keine Farbinformationen verarbeitet, können Sie diese Funktionalität selbst implementieren. Hier ist ein modifizierter Codeausschnitt, der verschiedene Fragen und Antworten kombiniert, um den Text als HTML zu extrahieren und gleichzeitig Schriftartinformationen, einschließlich Größe und Fettdruck, zu erfassen:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using iTextSharp.text.pdf.parser; using iTextSharp.text.pdf; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { PdfReader reader = new PdfReader("Document.pdf"); TextWithFontExtractionStategy S = new TextWithFontExtractionStategy(); string F = iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(reader, 1, S); Console.WriteLine(F); this.Close(); } public class TextWithFontExtractionStategy : iTextSharp.text.pdf.parser.ITextExtractionStrategy { //HTML缓冲区 private StringBuilder result = new StringBuilder(); //存储最后使用的属性 private Vector lastBaseLine; private string lastFont; private float lastFontSize; //http://api.itextpdf.com/itext/com/itextpdf/text/pdf/parser/TextRenderInfo.html private enum TextRenderMode { FillText = 0, StrokeText = 1, FillThenStrokeText = 2, Invisible = 3, FillTextAndAddToPathForClipping = 4, StrokeTextAndAddToPathForClipping = 5, FillThenStrokeTextAndAddToPathForClipping = 6, AddTextToPaddForClipping = 7 } public void RenderText(iTextSharp.text.pdf.parser.TextRenderInfo renderInfo) { string curFont = renderInfo.GetFont().PostscriptFontName; //检查是否使用了伪粗体 if ((renderInfo.GetTextRenderMode() == (int)TextRenderMode.FillThenStrokeText)) { curFont += "-Bold"; } //此代码假设如果基线发生变化,则表示换行 Vector curBaseline = renderInfo.GetBaseline().GetStartPoint(); Vector topRight = renderInfo.GetAscentLine().GetEndPoint(); iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(curBaseline[Vector.I1], curBaseline[Vector.I2], topRight[Vector.I1], topRight[Vector.I2]); Single curFontSize = rect.Height; //查看是否有任何更改,例如基线、字体或字体大小 if ((this.lastBaseLine == null) || (curBaseline[Vector.I2] != lastBaseLine[Vector.I2]) || (curFontSize != lastFontSize) || (curFont != lastFont)) { //如果我们已经放置了一个span标签,则关闭它 if ((this.lastBaseLine != null)) { this.result.AppendLine(""); } //如果基线已更改,则插入换行符 if ((this.lastBaseLine != null) & curBaseline[Vector.I2] != lastBaseLine[Vector.I2]) { this.result.AppendLine("<br />"); } //创建具有适当样式的HTML标签 this.result.AppendFormat("</code>
Mit diesem Code können Sie Text aus einem PDF-Dokument extrahieren und gleichzeitig Schrifteigenschaften wie Schriftfamilie, -größe und Fettschrift erfassen. Das Code-Snippet ist unvollständig und muss ergänzt werden, um das <span>
-Tag zu erstellen und zu schließen und Textinhalte hinzuzufügen, damit es vollständig ausgeführt werden kann.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich mit iTextSharp Textformatierungsinformationen aus PDFs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!