C# IEnumerable<;字符串>;foreach返回结果中的所有页面;foreach而不是for循环
我想返回3页的字符串输出,但程序输出1页3次。我已经意识到“for-loop”实现是可行的,但我想使用foreachC# IEnumerable<;字符串>;foreach返回结果中的所有页面;foreach而不是for循环,c#,foreach,ienumerable,C#,Foreach,Ienumerable,我想返回3页的字符串输出,但程序输出1页3次。我已经意识到“for-loop”实现是可行的,但我想使用foreach namespace Itext5 { class Program { static void Main(string[] args) { // PdfReader reader = new PdfReader(@"D:\500indycar-race-results.pdf"); Pd
namespace Itext5
{
class Program
{
static void Main(string[] args)
{
// PdfReader reader = new PdfReader(@"D:\500indycar-race-results.pdf");
PdfReader reader = new PdfReader(@"D:\191.pdf");
IEnumerable<string> GetColumnText(float llx, float lly, float urx, float ury)
{
int get_PageNum = reader.NumberOfPages;
var rect = new iTextSharp.text.Rectangle(llx, lly, urx, ury);
var renderFilter = new RenderFilter[1];
renderFilter[0] = new RegionTextRenderFilter(rect);
var textExtractionStrategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), renderFilter);
for (int pagecount = 1; pagecount <= get_PageNum; pagecount++)
{
var text = PdfTextExtractor.GetTextFromPage(reader, pagecount, textExtractionStrategy);
yield return text;
}
}
foreach (string result in GetColumnText(0, 0, 500, 500000))
{
Console.Write("{0} ", result);
Console.ReadLine();
}
}
}
}
命名空间Itext5
{
班级计划
{
静态void Main(字符串[]参数)
{
//PdfReader reader=新PdfReader(@“D:\500indycar race results.pdf”);
PdfReader reader=新的PdfReader(@“D:\191.pdf”);
IEnumerable GetColumnText(浮点llx、浮点lly、浮点urx、浮点ury)
{
int get_PageNum=reader.NumberOfPages;
var rect=new iTextSharp.text.Rectangle(llx,lly,urx,ury);
var renderFilter=新的renderFilter[1];
renderFilter[0]=新区域ExtranderFilter(rect);
var textExtractionStrategy=new FilteredTextExtrenderListener(新位置textExtractionStrategy(),renderFilter);
对于(int pagecount=1;pagecount,使用iTextSharp.text.pdf;
使用iTextSharp.text.pdf.parser;
使用制度;
使用System.Collections.Generic;
使用System.IO;
命名空间Itext5
{
班级计划
{
静态void Main(字符串[]参数)
{
PdfReader reader=新的PdfReader(@“D:\191.pdf”);
IEnumerable GetColumnText(浮点llx、浮点lly、浮点urx、浮点ury)
{
int get_PageNum=reader.NumberOfPages;
对于(int pagecount=1;pagecount)那么问题是什么?只需构建一个字符串,然后打印它,即移动控制台。在循环之外进行写入否。我可以使用字符串,但我有3页pdf文档。a希望输出所有页面,而不是1页3或2次。这意味着什么?我想你的意思是,var text=pdftextractor.GetTextFromPage(读卡器,获取页面号,文本提取策略)
您一直将text
设置为相同的内容。如何更改取决于pdftextractor
是什么,以及您希望它做什么,这还不清楚。我想您应该在foreach中调用GetColumnText
是的,谢谢。我只是在学习。这是合乎逻辑的。我需要重新检查cod这是一个答案还是你在试图编辑这个问题?两者都有!谢谢!我需要更加集中注意力,这怎么可能是一个答案和一个编辑?!你在这里没有什么意义?因为我不想偷坏的例子
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System;
using System.Collections.Generic;
using System.IO;
namespace Itext5
{
class Program
{
static void Main(string[] args)
{
PdfReader reader = new PdfReader(@"D:\191.pdf");
IEnumerable<string> GetColumnText(float llx, float lly, float urx, float ury)
{
int get_PageNum = reader.NumberOfPages;
for (int pagecount = 1; pagecount <= get_PageNum; pagecount++)
{
var rect = new iTextSharp.text.Rectangle(llx, lly, urx, ury);
var renderFilter = new RenderFilter[1];
renderFilter[0] = new RegionTextRenderFilter(rect);
var textExtractionStrategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), renderFilter);
var text = PdfTextExtractor.GetTextFromPage(reader, pagecount, textExtractionStrategy);
yield return text;
}
}
foreach (string result in GetColumnText(0, 0, 500, 500000))
{
Console.Write("{0} ", result);
Console.ReadLine();
}
}
}
}