📄 psmanager.c
字号:
/* Write contents of tmpfile to outfp */ while (fgets(line,BUFSIZ,tmpfp)!=NULL){ oldcount = count; /* setup pages in multipage document */ if (pages!=1){ if (strstr(line,"%%Page:")!=NULL) { ++count; clearUserDict(); fputs(line,outfp); setUserDict(count); } } if (count==oldcount) fputs(line,outfp); } /* Page Trailer */ if (pages==1) pageTrailer(pagedim,orient,pllx,plly,purx,pury); return EXIT_SUCCESS;}void pstitle(int pages) /**********************************************************************pstitle - begin title portion of PostScript wrapper**********************************************************************Input:int pages number of pages in document**********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ fprintf(stdout, "%%!PS-Adobe-2.0\n"); fprintf(stdout, "%%%%Title:\n"); fprintf(stdout, "%%%%Creator: psmanager\n"); fprintf(stdout, "%%%%CreationDate\n"); fprintf(stdout, "%%%%For: psmanager user\n"); fprintf(stdout, "%%%%DocumentFonts: (atend)\n"); if (pages==1) fprintf(stdout, "%%%%Pages: (atend) 1\n"); else fprintf(stdout, "%%%%Pages: %d 1\n",pages); fprintf(stdout, "%%%%BoundingBox: (atend)\n");}void documentPaperSizes(char *size)/**********************************************************************documentPaperSizes **********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ fprintf(stdout, "%%%%DocumentPaperSizes: %s\n",size);}void orientation(char *direction)/**********************************************************************orientation **********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ fprintf(stdout, "%%%%Orientation: %s\n",direction);}void endProlog(int pages)/**********************************************************************endProlog **********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ if (pages==1) { fprintf(stdout,"/__CWPbdef {\n"); fprintf(stdout," 1 index where {\n"); fprintf(stdout," pop pop pop\n"); fprintf(stdout," } {\n"); fprintf(stdout," bind def\n"); fprintf(stdout," } ifelse\n"); fprintf(stdout,"} bind def /__CWPRectPath {\n"); fprintf(stdout," 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath\n"); fprintf(stdout,"} __CWPbdef /__CWPProcessRectArgs {\n"); fprintf(stdout," 1 index type /arraytype eq {\n"); fprintf(stdout," exch 0 4 2 index length 1 sub {\n"); fprintf(stdout," dup 3 add 1 exch {\n"); fprintf(stdout," 1 index exch get exch\n"); fprintf(stdout," } for 5 1 roll 5 index exec\n"); fprintf(stdout," } for pop pop\n"); fprintf(stdout," } {\n"); fprintf(stdout," exec\n"); fprintf(stdout," } ifelse\n"); fprintf(stdout,"} __CWPbdef /rectfill {\n"); fprintf(stdout," gsave newpath {\n"); fprintf(stdout," __CWPRectPath fill\n"); fprintf(stdout," } __CWPProcessRectArgs grestore\n"); fprintf(stdout,"} __CWPbdef /rectclip {\n"); fprintf(stdout," newpath {\n"); fprintf(stdout," __CWPRectPath\n"); fprintf(stdout," } __CWPProcessRectArgs clip newpath\n"); fprintf(stdout,"} __CWPbdef\n"); fprintf(stdout,"%%%%EndComments\n"); fprintf(stdout,"\n"); fprintf(stdout,"gsave\n"); fprintf(stdout,"-20 -28 translate\n"); fprintf(stdout," /__CWPbasematrix matrix currentmatrix def\n"); fprintf(stdout,"grestore\n"); fprintf(stdout,"%%%%EndProlog\n"); } else { fprintf(stdout,"%%%%EndComments\n"); }}void space(void)/**********************************************************************space **********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ fprintf(stdout,"\n");}void grestore(void)/**********************************************************************grestore **********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ fprintf(stdout,"grestore\n");}void showpage(void)/**********************************************************************showpage **********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ fprintf(stdout,"showpage\n");}void gsave(void)/**********************************************************************gsave **********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ fprintf(stdout,"gsave\n");}void setUpPage(char *pagestr, char *papersizestr, char *mediastr, char *mediatypestr, int orient, int manual, char *slotstr,char *traystr, int *pagedim,int llx, int lly,int urx,int ury, float pllx,float plly, float purx,float pury, int pages)/**********************************************************************setUpPage **********************************************************************Input:char *pagestr PostScript string for given page sizechar *papersizestr PostScript string for identifying print papersizeint orient =0 Portrait =1 Landscapeint manual =0 not manual =1 manual feedchar *slotstr PostScript string for given input slotchar *traystr PostScript string identifying input trayint *pagedim Page dimensions for given page sizeint llx BoundingBox lower left xint lly BoundingBox lower left yint urx BoundingBox upper right xint ury BoundingBox upper right yfloat pllx PageBoundingBox lower left xfloat plly PageBoundingBox lower left yfloat purx PageBoundingBox upper right xfloat pury PageBoundingBox upper right yint pages number of PagesOutput:Prints Postscript Page setup information to standard out**********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ int ipllx,iplly,ipurx,ipury; /* Begin Setup */ fprintf(stdout,"%%%%BeginSetup\n"); /* Manual feed */ if (manual) { fprintf(stdout,"%%%%BeginFeature: *ManualFeed True\n"); space(); space(); fprintf(stdout,"<</ManualFeed true>> setpagedevice\n"); fprintf(stdout,"%%%%EndFeature\n"); } /* Input slot and tray */ fprintf(stdout,"%%%%BeginFeature: *InputSlot %s\n",slotstr); space(); fprintf(stdout,"%s\n",traystr); fprintf(stdout,"%%%%EndFeature\n"); /* Paper media */ fprintf(stdout,"%%%%BeginFeature: *MediaType %s\n",mediatypestr); space(); fprintf(stdout,"%s\n",mediastr); fprintf(stdout,"%%%%EndFeature\n"); /* Set up the page size/ page region */ fprintf(stdout,"%%%%BeginFeature: *PageRegion %s\n",papersizestr); space(); fprintf(stdout,"%s\n",pagestr); fprintf(stdout,"%%%%EndFeature\n"); fprintf(stdout,"%%%%Feature: *Resolution 600dpi\n"); fprintf(stdout,"%%%%EndFeature\n"); fprintf(stdout,"%%%%EndSetup\n"); space(); space(); /* Shift PageBoundingBox */ ipllx = (int) pllx; ipurx = pagedim[0] - ipllx; iplly = (int) plly; ipury = pagedim[1] - iplly; if (pages==1) { fprintf(stdout,"%%%%Page: 1 1\n"); fprintf(stdout,"%%%%PageBoundingBox: %d %d %d %d\n", ipllx,iplly,ipurx,ipury); fprintf(stdout,"%%%%PageFonts: (atend)\n"); fprintf(stdout,"%%%%BeginPageSetup\n"); } /* Input slot and tray */ fprintf(stdout,"%%%%BeginFeature: *InputSlot %s\n",slotstr); space(); fprintf(stdout,"%s\n",traystr); fprintf(stdout,"%%%%EndFeature\n"); /* manual feed */ if (manual) { fprintf(stdout,"%%%%BeginFeature: *ManualFeed True\n"); space(); space(); fprintf(stdout,"<</ManualFeed true>> setpagedevice"); fprintf(stdout,"%%%%EndFeature\n"); } /* page size/region */ fprintf(stdout,"%%%%BeginFeature: *PageRegion %s\n",papersizestr); space(); space(); if (pages==1) { fprintf(stdout,"%s\n",pagestr); fprintf(stdout,"%%%%EndFeature\n"); fprintf(stdout,"/__CWPsheetsavetoken save def\n"); /* orientation */ if (orient) fprintf(stdout,"-90 rotate\n"); if (orient) fprintf(stdout,"%d 0 translate\n",-pagedim[0]); fprintf(stdout,"%3.1f %3.1f translate\n",pllx,plly); gsave(); fprintf(stdout,"-20 -28 translate\n"); fprintf(stdout," /__CWPbasematrix matrix currentmatrix def\n"); grestore(); gsave(); fprintf(stdout,"0 0 %d %d rectclip\n", (urx-llx),(ury-lly)); fprintf(stdout,"%d %d translate\n",-llx,-lly); fprintf(stdout,"0 0 translate\n"); fprintf(stdout,"%%%%EndPageSetup\n"); gsave(); fprintf(stdout,"%d %d %d %d rectclip\n", llx,lly,(urx-llx),(ury-lly)); fprintf(stdout,"gsave 1 setgray %d %d %d %d rectfill grestore\n", llx,lly,(urx-llx),(ury-lly)); fprintf(stdout,"userdict /_CWPPreviewSaveObject0 systemdict /save get exec put\n"); fprintf(stdout,"/showpage {\n"); space(); fprintf(stdout,"} def\n"); fprintf(stdout,"%%%%BeginFile:\n"); }} void pageTrailer(int *pagedim, int orient, float pllx, float plly, float purx, float pury)/**********************************************************************pageTrailer**********************************************************************Author: John Stockwell, CWP, June 1996**********************************************************************/{ int ipllx,iplly,ipurx,ipury; /* Shift PageBoundingBox */ ipllx = (int) pllx; ipurx = pagedim[0] - ipllx; iplly = (int) plly; ipury = pagedim[1] - iplly; fprintf(stdout,"%%%%EndFile\n"); fprintf(stdout,"clear userdict /_CWPPreviewSaveObject0 known {\n"); fprintf(stdout," _CWPPreviewSaveObject0 systemdict /restore get exec\n"); fprintf(stdout,"} if\n"); grestore(); grestore(); showpage(); fprintf(stdout,"__CWPsheetsavetoken restore\n"); fprintf(stdout,"%%%%PageTrailer\n"); fprintf(stdout,"%%%%Trailer\n"); fprintf(stdout,"%%%%Pages: 1 1\n"); if (orient) fprintf(stdout,"%%%%BoundingBox:%d %d %d %d\n",ipllx,iplly,ipury,ipurx); else fprintf(stdout,"%%%%BoundingBox:%d %d %d %d\n",ipllx,iplly,ipurx,ipury);}void clearUserDict(void){ fprintf(stdout,"clear userdict /_CWPPreviewSaveObject0 known {\n"); fprintf(stdout," _CWPPreviewSaveObject0 systemdict /restore get exec\n"); fprintf(stdout,"} if\n");}void setUserDict(count){ fprintf(stdout,"userdict /_CWPPreviewSaveObject0 systemdict /save get exec put\n"); fprintf(stdout,"%%Page: %d %d\n", count,count);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -