我需要做的是提取二維DataMatrix(位圖)條形碼並讀取它。然而,我可以使這項工作,我必須遍歷每個頁面上的所有圖像。當我有1000頁的頁面時,這需要很長時間,所以我想知道是否可以定義圖像(條形碼)的位置(矩形)並提取該圖像?ITextSharp - 在特定位置獲取圖像
條形碼總是我在同一個位置。 注意:我使用的是來自e-IceBlue的Spire.Barcode
謝謝你的幫助。
CODE RenderFilter片段:
public class MyRegionTextRenderFilter : RenderFilter {
/** the region to allow text from */
private RectangleJ filterRect;
public PdfImageObject image;
/**
* Constructs a filter
* @param filterRect the rectangle to filter text against. Note that this is a java.awt.Rectangle !
*/
public MyRegionTextRenderFilter(RectangleJ filterRect) {
this.filterRect = filterRect;
}
/**
* Constructs a filter
* @param filterRect the rectangle to filter text against.
*/
public MyRegionTextRenderFilter(iTextSharp.text.Rectangle filterRect)
{
this.filterRect = new RectangleJ(filterRect);
}
/**
* @see com.itextpdf.text.pdf.parser.RenderFilter#allowText(com.itextpdf.text.pdf.parser.TextRenderInfo)
*/
public override bool AllowImage(ImageRenderInfo renderInfo)
{
var matrix = renderInfo.GetImageCTM();
float left = matrix[6];
float top = matrix[7];
float width = matrix[0];
float height = matrix[4];
return filterRect.IntersectsLine(left, top, width, height);
}
}
編碼呼叫:
RectangleJ rect = new RectangleJ(518.0f, 18.0f, 23.0f, 23.0f);
PdfReaderContentParser parser2 = new PdfReaderContentParser(pdfReader);
RenderFilter[] renderFilter = new RenderFilter[1];
renderFilter[0] = new MyRegionTextRenderFilter(rect);
FilteredTextRenderListener listener2 = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), renderFilter);
parser2.ProcessContent(3, listener2);
您可能想要使用'RegionTextRenderFilter'。 – mkl 2014-11-04 17:00:29
好吧我知道如何使用RegionTextRenderFilter獲取文本,我知道如何獲取圖像信息,但是如何從RegionTextRenderFilter獲取圖像? – Mike 2014-11-04 18:25:53
好的,不是'RegionTextRenderFilter',而是圖像的等價物。只需複製[RegionTextRenderFilter](https://svn.code.sf.net/p/itextsharp/code/trunk/src/core/iTextSharp/text/pdf/parser/RegionTextRenderFilter.cs)並添加一個'AllowImage(ImageRenderInfo renderInfo)類似於現有的'AllowText(TextRenderInfo renderInfo)'方法的實現。 – mkl 2014-11-05 08:29:03