⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtftohtml.c

📁 将rft格式文件转换成html格式文件
💻 C
📖 第 1 页 / 共 2 页
字号:
	case rtfDefTab:		break;	case rtfWidowCtrl:		break;	case rtfHyphHotZone:		break;	case rtfFNoteEndSect:		break;	case rtfFNoteEndDoc:		break;	case rtfFNoteText:		break;	case rtfFNoteBottom:		break;	case rtfFNoteStart:		break;	case rtfFNoteRestart:		break;	case rtfPageStart:		break;	case rtfLineStart:		break;	case rtfLandscape:		break;	case rtfFracWidth:		break;	case rtfNextFile:		break;	case rtfRTFDefault:		break;	case rtfRevisions:		break;	case rtfMirrorMargin:		break;	case rtfRevDisplay:		break;	case rtfRevBar:		break;	}}static void SectAttr (){	switch (rtfMinor)	{	case rtfSectDef:		break;	case rtfNoBreak:		break;	case rtfColBreak:		break;	case rtfPageBreak:		break;	case rtfEvenBreak:		break;	case rtfOddBreak:		break;	case rtfPageStarts:		break;	case rtfPageCont:		break;	case rtfPageRestart:		break;	case rtfPageDecimal:		break;	case rtfPageURoman:		break;	case rtfPageLRoman:		break;	case rtfPageULetter:		break;	case rtfPageLLetter:		break;	case rtfPageNumRight:		break;	case rtfPageNumTop:		break;	case rtfHeaderY:		break;	case rtfFooterY:		break;	case rtfLineModulus:		break;	case rtfLineDist:		break;	case rtfLineStarts:		break;	case rtfLineRestart:		break;	case rtfLineRestartPg:		break;	case rtfLineCont:		break;	case rtfTopVAlign:		break;	case rtfBottomVAlign:		break;	case rtfCenterVAlign:		break;	case rtfJustVAlign:		break;	case rtfColumns:		break;	case rtfColumnSpace:		break;	case rtfColumnLine:		break;	case rtfENoteHere:		break;	case rtfTitleSpecial:		break;	}}static void ObjAttr (){	switch (rtfMinor)	{	case rtfObjLinkSelf:		linkself=1;		break;	}}static void TblAttr (){	switch (rtfMinor)	{	case rtfCellBordBottom:		break;	case rtfCellBordTop:		break;	case rtfCellBordLeft:		break;	case rtfCellBordRight:		break;	case rtfRowDef:		lastcell=0;		cellno=firstcell;		celldidx=firstcell;		cell[celldidx].merge=0;		cell[celldidx].just=AdjLPad;		lastleft=0;		break;	case rtfRowLeft:		break;	case rtfRowRight:		break;	case rtfRowCenter:		break;	case rtfRowGapH:		break;	case rtfRowHt:		break;	case rtfRowLeftEdge:		lastleft=rtfParam;		break;	case rtfCellPos:		cell[celldidx].width=(rtfParam-lastleft)/TWIPSperCHAR;		if(cell[celldidx].width<=1)cell[celldidx].width=2;		lastleft=rtfParam;		if(celldidx++>=CELLMAX){			RTFMsg ("Overflowed the total number of cells %s\n",CELLMAX);			celldidx--;		}		cell[celldidx].just=AdjLPad;		cell[celldidx].merge=0;		break;	case rtfMergeRngFirst:		break;	case rtfMergePrevious:		cell[celldidx].merge=1;		break;	}}int parnest=0;static void ParAttr (){	RTFStyle *newstyle;	int i;	IStyle_Chg=1;	switch (rtfMinor)	{	case rtfParDef:	/* set the input paragraph stype to null */		ParStyle="";			TStyle = stylePlain;		inTable=0;		break;	case rtfStyleNum:		/* When we call RTFExpandStyle, ParAttr will get recursively		called. We only perform processing on the outermost style. */		if(parnest==0){		    newstyle=RTFGetStyle(rtfParam);		    if (newstyle == (RTFStyle *) NULL)				break;			ParStyle=newstyle->rtfSName;				parnest++;				RTFExpandStyle(rtfParam);				parnest--;		}		break;	case rtfQuadLeft:		cell[cellno].just=AdjLPad;		break;	case rtfQuadRight:		cell[cellno].just=AdjRPad;		break;	case rtfQuadJust:		cell[cellno].just=AdjLPad;		break;	case rtfQuadCenter:		cell[cellno].just=AdjCpad;		break;	case rtfFirstIndent:		break;	case rtfLeftIndent:		break;	case rtfRightIndent:		break;	case rtfSpaceBefore:		break;	case rtfSpaceAfter:		break;	case rtfSpaceBetween:		break;	case rtfInTable:		inTable=1;		break;	case rtfKeep:		break;	case rtfKeepNext:		break;	case rtfSideBySide:		break;	case rtfPBBefore:		break;	case rtfNoLineNum:		break;	case rtfTabPos:		break;	case rtfTabRight:		break;	case rtfTabCenter:		break;	case rtfTabDecimal:		break;	case rtfTabBar:		break;	case rtfBorderTop:		break;	case rtfBorderBottom:		break;	case rtfBorderLeft:		break;	case rtfBorderRight:		break;	case rtfBorderBar:		break;	case rtfBorderBox:		break;	case rtfBorderBetween:		break;	case rtfBorderSingle:		break;	case rtfBorderThick:		break;	case rtfBorderShadow:		break;	case rtfBorderDouble:		break;	case rtfBorderDot:		break;	case rtfBorderHair:		break;	case rtfBorderSpace:		break;	case rtfLeaderDot:		break;	case rtfLeaderHyphen:		break;	case rtfLeaderUnder:		break;	case rtfLeaderThick:		break;	}}/*	Several of the attributes can be turned off with param value	of zero (e.g., \b vs. \b0).*/static void CharAttr (){RTFFont		*fp;int	turnOn = (rtfParam != 0);	IStyle_Chg=1;	switch (rtfMinor)	{	case rtfPlain:		TStyle = stylePlain;		break;	case rtfBold:		if(turnOn){		    TStyle |= styleBold;		} else {		    TStyle &= ~styleBold;		}		break;	case rtfItalic:		if(turnOn){		    TStyle |= styleItalic;		} else {		    TStyle &= ~styleItalic;		}		break;	case rtfStrikeThru:		if(turnOn){		    TStyle |= styleStrikeThru;		} else {		    TStyle &= ~styleStrikeThru;		}		break;	case rtfOutline:		if(turnOn){		    TStyle |= styleOutline;		} else {		    TStyle &= ~styleOutline;		}		break;	case rtfShadow:		if(turnOn){		    TStyle |= styleShadow;		} else {		    TStyle &= ~styleShadow;		}		break;	case rtfSmallCaps:		if(turnOn){		    TStyle |= styleSmallCaps;		} else {		    TStyle &= ~styleSmallCaps;		}		break;	case rtfAllCaps:		if(turnOn){		    TStyle |= styleAllCaps;		} else {		    TStyle &= ~styleAllCaps;		}		break;	case rtfInvisible:		if(turnOn){		    TStyle |= styleInvisible;		} else {		    TStyle &= ~styleInvisible;		}		break;	case rtfFontNum:		if((fp = RTFGetFont(rtfParam)) == (RTFFont *) NULL){			TFont="";		} else {			TFont=fp->rtfFName;		}		break;	case rtfFontSize:		TSize=rtfParam;		break;	case rtfExpand:		break;	case rtfUnderline:		if(turnOn){		    TStyle |= styleUnderline;		} else {		    TStyle &= ~styleUnderline;		}		break;	case rtfWordUnderline:		if(turnOn){		    TStyle |= styleWUnderline;		} else {		    TStyle &= ~styleWUnderline;		}		break;	case rtfDotUnderline:		if(turnOn){		    TStyle |= styleDUnderline;		} else {		    TStyle &= ~styleDUnderline;		}		break;	case rtfDbUnderline:		if(turnOn){		    TStyle |= styleDbUnderline;		} else {		    TStyle &= ~styleDbUnderline;		}		break;	case rtfNoUnderline:		TStyle&=~(styleUnderline|styleWUnderline|				styleDUnderline|styleDbUnderline);		break;	case rtfSuperScript:		if(turnOn){		    TStyle |= styleSuperScript;		} else {		    TStyle &= ~styleSuperScript;		}		break;	case rtfSubScript:		if(turnOn){		    TStyle |= styleSubScript;		} else {		    TStyle &= ~styleSubScript;		}		break;	case rtfRevised:		break;	case rtfForeColor:		break;	case rtfBackColor:		break;	}}static void PictAttr (){    char *ptr,LinkBuf[512];	switch (rtfMinor)	{	case rtfMacQD:		PictExt="pict";		PictType=FTPICT;		RTFSetClassCallback (rtfText, NabPicture);        break;	case rtfWinMetafile:		PictExt="wmf";		PictType=FTWMF;		RTFSetClassCallback (rtfText, NabPicture);		break;	case rtfWinBitmap:		PictExt="bmp";		PictType=FTBMF;		RTFSetClassCallback (rtfText, NabPicture);		break;	case rtfPicWid:		break;	case rtfPicHt:		break;	case rtfPicGoalWid:		PicGoalWid=rtfParam;		break;	case rtfPicGoalHt:		PicGoalHt=rtfParam;		break;	case rtfPicScaleX:		break;	case rtfPicScaleY:		break;	case rtfPicScaled:		break;	case rtfPicCropTop:		break;	case rtfPicCropBottom:		break;	case rtfPicCropLeft:		break;	case rtfPicCropRight:		break;	case rtfPixelBits:		break;	case rtfBitmapPlanes:		break;	case rtfBitmapWid:		break;	case rtfPicBinary:		RTFSkipGroup ();		/* Not sure this will work on binary input data */		PopIState();		break;	}}static void NeXTGrAttr (){	switch (rtfMinor)	{	case rtfNeXTGWidth:		break;	case rtfNeXTGHeight:		break;	}}static void FieldAttr (){	switch (rtfMinor)	{	case rtfFieldDirty:		break;	case rtfFieldEdited:		break;	case rtfFieldLocked:		break;	case rtfFieldPrivate:		break;	}}static void TOCAttr (){	switch (rtfMinor)	{	case rtfTOCType:		break;	case rtfTOCLevel:		ToCLev=rtfParam;		break;	}}static void PosAttr (){	switch (rtfMinor)	{	case rtfPosX:		break;	case rtfPosXCenter:		break;	case rtfPosXInside:		break;	case rtfPosXLeft:		break;	case rtfPosXOutSide:		break;	case rtfPosXRight:		break;	case rtfPosY:		break;	case rtfPosYInline:		break;	case rtfPosYTop:		break;	case rtfPosYCenter:		break;	case rtfPosYBottom:		break;	case rtfAbsWid:		break;/*	case rtfTextDistX:		break;*/	case rtfTextDistY:		break;	case rtfRPosMargV:		break;	case rtfRPosPageV:		break;	case rtfRPosMargH:		break;	case rtfRPosPageH:		break;	case rtfRPosColH:		break;	}}InStateStack *SaveIState(){	InStateStack *NewState;    NewState=(InStateStack *) malloc(		(int) sizeof(InStateStack));	    if(NewState==NULL){		RTFPanic ("Memory Allocation Failed");    }    NewState->ParStyle=ParStyle;    NewState->TStyle=TStyle;    NewState->TFont=TFont;    NewState->TSize=TSize;    NewState->destination=destination;    NewState->firstcell=firstcell;    NewState->inTable=inTable;    NewState->cellno=cellno;    NewState->lastcell=lastcell;    NewState->ToCLev=ToCLev;    IStyle_Chg=1;        return(NewState);}PushIState(){/*	Push the current state. Note that defaults are not set,	so resetting the default state (such as for headers/footers)	must be done after the Push.*/	InStateStack *Current=ISS;	ISS=SaveIState();    ISS->Next=Current;}voidRestoreIState(TheState)InStateStack *TheState;{    ParStyle=TheState->ParStyle;    TStyle=TheState->TStyle;    TFont=TheState->TFont;    TSize=TheState->TSize;    ToCLev=TheState->ToCLev;    if(destination==rtfFootnote){    	/* Footnotes get their own tables */    	firstcell=TheState->firstcell;    	inTable=TheState->inTable;    	cellno=TheState->cellno;    	lastcell=TheState->lastcell;    }    destination=TheState->destination;    RTFFree(TheState);    IStyle_Chg=1;}PopIState(){	InStateStack *Next;    if(ISS==NULL){		RTFPanic ("Input State Stack Popped too many times");    }    HTMLEndDivert();    Next=ISS->Next;	RestoreIState(ISS);    ISS=Next;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -