我试图通过调用inflate函数来解压缩文件,但是即使我使用网站上的示例程序,它总是会失败Z_DATA_ERROR.我想也许我的zip文件可能不受支持.我附上了下面的拉链头图片.
这是我为执行解压缩而编写的函数.我立刻读了整个文件(大约34KB)并将其传递给这个函数.注意我已经尝试使用zip标头传递整个zip文件以及跳过zip文件头,并且只有在调用inflate()时,传递压缩数据才会失败,并且Z_DATA_ERROR失败.
int CHttpDownloader::unzip(unsigned char * pDest, unsigned long * ulDestLen, unsigned char * pSource, int iSourceLen)
{
int ret = 0;
unsigned int uiUncompressedBytes = 0; // Number of uncompressed bytes returned from inflate() function
unsigned char * pPositionDestBuffer = pDest; // Current position in dest buffer
unsigned char * pLastSource = &pSource[iSourceLen]; // Last position in source buffer
z_stream strm;
// Skip over local file header
SLocalFileHeader * header = (SLocalFileHeader *) pSource;
pSource += sizeof(SLocalFileHeader) + header->sFileNameLen …
Run Code Online (Sandbox Code Playgroud) 我使用iTextSharp编写了一个提取工具,从PDF文档中提取注释信息.对于高亮注释,我只获得页面上突出显示的区域的矩形.
我的目标是提取已突出显示的文本.为此,我使用`PdfTextExtractor'.
Rectangle rect = new Rectangle(
pdfArray.GetAsNumber(0).FloatValue,
pdfArray.GetAsNumber(1).FloatValue,
pdfArray.GetAsNumber(2).FloatValue,
pdfArray.GetAsNumber(3).FloatValue);
RenderFilter[] filter = { new RegionTextRenderFilter(rect) };
ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);
string textInsideRect = PdfTextExtractor.GetTextFromPage(pdfReader, pageNo, strategy);
return textInsideRect;
Run Code Online (Sandbox Code Playgroud)
返回的结果PdfTextExtractor
并不完全正确.例如,它返回"即将消除纸张追逐",即使只突出显示"消除".
有趣的是,包含突出显示的"消除"的TJ的整个文本是"将要消除纸张追逐"(TJ是将文本写入页面的PDF指令).
我很想听到有关此问题的任何意见 - 也包括不涉及iTextSharp的解决方案.