c# - 使用 iText7 C# 解析/读取 PDF 文档
问题描述
我正在尝试使用 iText7 库来升级我的代码。以前我使用 iTextSharp 库但看起来 iText7 是全新的我尝试阅读 pdf 文档但在“找不到 Pdf Header”之间遇到异常。这是我的代码
byte[] bytes = System.Convert.FromBase64String(UploadedFileByes);
MemoryStream memory = new MemoryStream(bytes);
BinaryReader BRreader = new BinaryReader(memory);
StringBuilder text = new StringBuilder();
iText.Kernel.Pdf.PdfReader iTextReader = new iText.Kernel.Pdf.PdfReader(memory);
iText.Kernel.Pdf.PdfDocument pdfDoc = new iText.Kernel.Pdf.PdfDocument(new iText.Kernel.Pdf.PdfReader(memory));
int numberofpages = pdfDoc.GetNumberOfPages();
for (int page = 1; page <= numberofpages; page++) {
iText.Kernel.Pdf.Canvas.Parser.Listener.ITextExtractionStrategy strategy = new iText.Kernel.Pdf.Canvas.Parser.Listener.SimpleTextExtractionStrategy();
string currentText = iText.Kernel.Pdf.Canvas.Parser.PdfTextExtractor.GetTextFromPage(pdfDoc.GetPage(page),strategy);
currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(
Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
text.Append(currentText);
}
我究竟做错了什么?
解决方案
我得到了解决方案。我使用了我定义的 pdfreader,而不是创建新的。这是代码。希望它会帮助某人。
byte[] bytes = System.Convert.FromBase64String(UploadedFileByes); MemoryStream memory = new MemoryStream(bytes); BinaryReader BRreader = new BinaryReader(memory); StringBuilder text = new StringBuilder(); iText.Kernel.Pdf.PdfReader iTextReader = new iText.Kernel.Pdf.PdfReader(memory); iText.Kernel.Pdf.PdfDocument pdfDoc = new iText.Kernel.Pdf.PdfDocument(iTextReader); int numberofpages = pdfDoc.GetNumberOfPages(); for (int page = 1; page <= numberofpages; page++) { iText.Kernel.Pdf.Canvas.Parser.Listener.ITextExtractionStrategy strategy = new iText.Kernel.Pdf.Canvas.Parser.Listener.SimpleTextExtractionStrategy(); string currentText = iText.Kernel.Pdf.Canvas.Parser.PdfTextExtractor.GetTextFromPage(pdfDoc.GetPage(page),strategy); currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert( Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); text.Append(currentText); }
推荐阅读
- typescript - 为什么 Typescript 编译器允许没有定义必需参数的类方法
- javascript - 从另一个 disc.js 文件访问 JavaScript 对象的内部属性
- ios - 每次点击 collectionView 单元格时都会创建新视图,而不是更新现有视图
- common-lisp - 如何强制 SBCL 在写入字符串中生成精确的数据表示?
- r - 更改网络图中的节点颜色
- javascript - 无法从异步获取 React 中获取价值
- python - 如何将 tkinter 按钮放置在特定位置(以像素为单位)?
- javascript - jQuery父母在打印预览功能中不起作用
- python - 如何在十六进制python中制作范围?
- javascript - C# 计数器计数到目标数