Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengekstrak Maklumat Pemformatan Teks daripada PDF menggunakan iTextSharp?
Gunakan iTextSharp untuk mendapatkan maklumat format teks
iTextSharp menyediakan sistem pengekstrakan teks ringkas yang boleh mengendalikan beberapa penanda asas. Walaupun ia tidak mengendalikan maklumat warna, anda boleh melaksanakan fungsi ini sendiri. Berikut ialah coretan kod yang diubah suai yang menggabungkan pelbagai soalan dan jawapan untuk mengekstrak teks sebagai HTML sambil menangkap maklumat fon, termasuk saiz dan tebal:
<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>
Menggunakan kod ini, anda boleh mengekstrak teks daripada dokumen PDF sambil turut menangkap sifat fon seperti keluarga fon, saiz dan tebal. Coretan kod tidak lengkap dan perlu ditambah untuk membuat dan menutup teg <span>
dan menambah kandungan teks untuk dijalankan sepenuhnya.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Maklumat Pemformatan Teks daripada PDF menggunakan iTextSharp?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!