ios 创建和绘画pdf文件 -转
转自:http://blog.csdn.net/ant1239/article/details/7761676
本方法为项目中画pdf的一个方法,画pdf,一共分为几步,1,获取地址,有两种获取地址方法,这是其中一种,2,关联上下文后开始绘画pdf,开始新的一页后必须用cgcontentbeginpage方法开始新的一页,从新设置坐标,等属性。3,释放。pdf就是个画布,我们是往上面画东西,而不是写东西,还有就是pdf用的坐标系是数学坐标,左下角为原点,而不是编程里常用的左上角为为坐标原点~一下是源码,重复的东西有点多,懒得整理了~关键的就那么几句~
-(void)MyPDFContextCreate{
//获取路径
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);坐标
    NSString *saveDirectory=[paths objectAtIndex:];
    NSString *saveFileName=@"myPDF.pdf";
    NSString *newFilePath=[saveDirectory stringByAppendingPathComponent:saveFileName];
    const char *filename=[newFilePath UTF8String];
//设置页面大小
    CGRect pageRect=CGRectMake(, , , );
//关联上下文的对象
    CGContextRef pdfContext;
    CFStringRef path;
    CFURLRef url;
    path=CFStringCreateWithCString(NULL, filename, kCFStringEncodingUTF8);
    url=CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, );
    CFRelease(path);
    pdfContext=CGPDFContextCreateWithURL(url, &pageRect, nil);
    CFRelease(url);
    //开始画pdf
    NSString *temtext=[[NSString alloc]init];
    const char *text=(char *)[temtext UTF8String];
    int  width;
    int height;
    // 画推荐信
    NSNumber *en=[self.fatherobject valueForKey:@"enabel"];
    if(en.boolValue){
        height=;
//开始画pdf,开始新的一页
        CGContextBeginPage(pdfContext, &pageRect);
//设置字体,字体大小等
        CGContextSelectFont(pdfContext, "Helvetica", , kCGEncodingMacRoman);
        CGContextSetTextDrawingMode(pdfContext, kCGTextFill);
        CGContextSetRGBFillColor(pdfContext, , , , );
        //画姓名
        if(self.firstname!=nil||self.lastname!=nil){
            if(self.firstname==nil){
                self.firstname=@"";
            }
            if(self.lastname==nil){
                self.lastname=@"";
            }
            temtext=[NSString stringWithFormat:@"%@ %@",self.firstname,self.lastname];
        }
        width=[self getfontwidth:temtext fontsize:];
        text=(char*)[temtext UTF8String];
        CGContextSetFontSize(pdfContext, );
//关键方法,在指定位置画上text文字,文字必须为char类型
        CGContextShowTextAtPoint(pdfContext, (-width)/, height, text, strlen(text));
        height=height-;
        if((self.street!=nil&&![self.street isEqualToString:@""])||
           (self.apt!=nil&&![self.apt isEqualToString:@""])||
           (self.city!=nil&&![self.city isEqualToString:@""])||
           (self.state!=nil&&![self.state isEqualToString:@""])||
           (self.zip!=nil&&![self.zip isEqualToString:@""])){
            if(self.street==nil){
                self.street=@"";
            }
            if(self.apt==nil){
                self.street=@"";
            }
            if(self.city==nil){
                self.city=@"";
            }
            if(self.state==nil){
                self.state=@"";
            }
            if(self.zip==nil){
                self.zip=@"";
            }
            temtext=[NSString stringWithFormat:@"%@,%@,%@,%@,%@",self.street,self.apt,self.city,self.state,self.zip];
            text=(char *)[temtext UTF8String];
            width=[self getfontwidth:temtext fontsize:];
            CGContextSetFontSize(pdfContext, );
            CGContextShowTextAtPoint(pdfContext, (-width)/, height, text, strlen(text));
            height=height-;
        }
        if(self.phone==nil){
            self.phone=@"";
        }
        if(self.fax==nil){
            self.fax=@"";
        }
        if(self.Email==nil){
            self.Email=@"";
        }
        if(self.website==nil){
            self.website=@"";
        }
        if(![self.phone isEqualToString:@""]||
           ![self.fax isEqualToString:@""]||
           ![self.Email isEqualToString:@""]||
           ![self.website isEqualToString:@""]){
            temtext=[NSString stringWithFormat:@"Phone:%@, Fax:%@, Email:%@, Website:%@",self.phone,self.fax,self.Email,self.website];
            text=(char *)[temtext UTF8String];
            width=[self getfontwidth:temtext fontsize:];
            CGContextSetFontSize(pdfContext, );
            CGContextShowTextAtPoint(pdfContext, (-width)/, height, text, strlen(text));
            height=height-;
        }
        //划线
        CGContextMoveToPoint(pdfContext, , height);
        CGContextAddLineToPoint(pdfContext, -, height);
        CGContextStrokePath(pdfContext);
        height=height-;
        //画cotterletter内容
        NSManagedObject *myobject=[DataController getcontactinfo:self.fatherid];
        NSString *myapt=[myobject valueForKey:@"apt"];  
        NSString *mycity=[myobject valueForKey:@"city"];
        NSString *mycompanyname=[myobject valueForKey:@"companyname"];
        NSString *myfirstname=[myobject valueForKey:@"firstname"];
        NSString *mylastname=[myobject valueForKey:@"lastname"];
        NSString *myposition=[myobject valueForKey:@"postion"];
        NSString *mystate=[myobject valueForKey:@"state"];
        NSString *mystreet=[myobject valueForKey:@"street"];
        NSString *mytitle=[myobject valueForKey:@"title"];
        NSString *myzip=[myobject valueForKey:@"zip"];
        NSDate *mydate=[myobject valueForKey:@"date"];
        if(mydate!=nil){
            NSDateFormatter *myformatter=[[NSDateFormatter alloc]init];
            [myformatter setDateFormat:@"MMMM, yyyy"];
            temtext=[NSString stringWithFormat:@"%@",[myformatter stringFromDate:mydate]];
            [myformatter release];
            text=(char *)[temtext UTF8String];
            CGContextSetFontSize(pdfContext, );
            CGContextShowTextAtPoint(pdfContext, , height, text, strlen(text));
            height=height-;
        }
        if((mytitle!=nil&&![mytitle isEqualToString:@""])||
           (myfirstname!=nil&&![myfirstname isEqualToString:@""])||
           (mylastname!=nil&&![mylastname isEqualToString:@""])){
            temtext=[NSString stringWithFormat:@"%@ %@ %@",mytitle,myfirstname,mylastname];
            height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
            height=height-;
        }
        if(myposition!=nil&&![myposition isEqualToString:@""]){
            temtext=[NSString stringWithFormat:@"%@",myposition];
            height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
            height=height-;
        }
        if(mycompanyname!=nil&&![mycompanyname isEqualToString:@""]){
            temtext=[NSString stringWithFormat:@"%@",mycompanyname];
            height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
            height=height-;
        }
        if((![myapt isEqualToString:@""]&&myapt!=nil)||
           (![mystreet isEqualToString:@""]&&mystreet!=nil)){
            temtext=[NSString stringWithFormat:@"%@.,%@",myapt,mystreet];
            height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
            height=height-;
        }
        if((mycity!=nil&&![mycity isEqualToString:@""])||
           (mystate!=nil&&![mystate isEqualToString:@""])||
           (myzip!=nil&&![myzip isEqualToString:@""])){
            temtext=[NSString stringWithFormat:@"%@,%@,%@",mycity,mystate,myzip];
            height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
            height=height-;
        }
        if((mytitle!=nil&&![mytitle isEqualToString:@""])||
           (mylastname!=nil&&![mylastname isEqualToString:@""])){
            height=height-;
            temtext=[NSString stringWithFormat:@"Dear %@.%@",mytitle,mylastname];
            height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
            height=height-;
        }
        if(self.coverletter!=nil&&![self.coverletter isEqualToString:@""]){
            temtext=[NSString stringWithFormat:@"%@",self.coverletter];
            height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
        }
        //结束
        CGContextEndPage(pdfContext);
    }
    if(YES){
    //开始画resume内容
    CGContextBeginPage(pdfContext, &pageRect);
    CGContextSelectFont(pdfContext, "Helvetica", , kCGEncodingMacRoman);
    CGContextSetTextDrawingMode(pdfContext, kCGTextFill);
    CGContextSetRGBFillColor(pdfContext, , , , );
    //显示first和lastname
    if(self.firstname!=nil||self.lastname!=nil){
        if(self.firstname==nil)
            self.firstname=@"";
        if(self.lastname==nil)
            self.lastname=@"";
        temtext=[NSString stringWithFormat:@"%@ %@",self.firstname,self.lastname];
        width=[self getfontwidth:temtext fontsize:];
        height=; 
        text=(char*)[temtext UTF8String];
        CGContextShowTextAtPoint(pdfContext, (-width)/, height, text, strlen(text));
    }
    //显示street等basicinfo信息
    //street,apt
    if((self.street!=nil &&![self.street isEqualToString:@""])||(self.apt!=nil&&![self.apt isEqualToString:@""])){
        if(self.street==nil){
            self.street=@"";
        }
        if(self.apt==nil){
            self.apt=@"";
        }
        height=[self getfontheight:temtext fontsize: height:height];
        CGContextSelectFont(pdfContext, "Helvetica", , kCGEncodingMacRoman);
        temtext=[NSString stringWithFormat:@"%@,%@",self.street,self.apt];
        width=[self getfontwidth:temtext fontsize:];
        text=(char *)[temtext UTF8String];
        CGContextShowTextAtPoint(pdfContext, (-width)/, height, text,strlen(text));
    }
    //city,state zip
    if((self.city!=nil&&![self.city  isEqualToString:@""])||
       (self.state!=nil&&![self.state isEqualToString:@""])||
       (self.zip!=nil&&![self.state isEqualToString:@""])){
        if(self.city==nil){
            self.city=@"";
        }
        if(self.state==nil){
            self.state=@"";
        }
        if(self.zip==nil){
            self.zip=@"";
        }
        height=[self getfontheight:temtext fontsize: height:height];
        CGContextSelectFont(pdfContext, "Helvetica", ,kCGEncodingMacRoman );
        temtext=[NSString stringWithFormat:@"%@,%@,%@",self.city,self.state,self.zip];
        width=[self getfontwidth:temtext fontsize:];
        text=(char *)[temtext UTF8String];
        CGContextShowTextAtPoint(pdfContext, (-width)/, height, text, strlen(text));
    }
    //phone
    if(self.phone!=nil&&![self.phone isEqualToString:@""]){
        height=[self getfontheight:temtext fontsize: height:height];
        CGContextSelectFont(pdfContext, "Helvetica", ,kCGEncodingMacRoman );
        temtext=[NSString stringWithFormat:@"Phone: %@",self.phone];
        width=[self getfontwidth:temtext fontsize:];
        text=(char *)[temtext UTF8String];
        CGContextShowTextAtPoint(pdfContext, (-width)/, height, text, strlen(text));
    }
    //fax
    if(self.fax!=nil&&![self.fax isEqualToString:@""]){
        height=[self getfontheight:temtext fontsize: height:height];
       CGContextSelectFont(pdfContext, "Helvetica", ,kCGEncodingMacRoman );
        temtext=[NSString stringWithFormat:@"Fax: %@",self.fax];
        width=[self getfontwidth:temtext fontsize:];
        text=(char *)[temtext UTF8String];
        CGContextShowTextAtPoint(pdfContext, (-width)/, height, text, strlen(text));
    }
    //Email
    if(self.Email!=nil&&![self.Email isEqualToString:@""]){
        height=[self getfontheight:temtext fontsize: height:height];
        temtext=[NSString stringWithFormat:@"Email: %@",self.Email];
        width=[self getfontwidth:temtext fontsize:];
        text=(char *)[temtext UTF8String];
        CGContextShowTextAtPoint(pdfContext, (-width)/, height, text, strlen(text));
    }
    //website
    if(self.website!=nil&&![self.website isEqualToString:@""]){
        height=[self getfontheight:temtext fontsize: height:height];
        temtext=[NSString stringWithFormat:@"Website: %@",self.website];
        width=[self getfontwidth:temtext fontsize:];
        text=(char *)[temtext UTF8String];
        CGContextShowTextAtPoint(pdfContext, (-width)/, height, text, strlen(text));
    }
    //Objective
    if(self.objective!=nil&&![self.objective isEqualToString:@""]){
        //画线
        height=[self getfontheight:temtext fontsize: height:height];
        CGContextMoveToPoint(pdfContext, , height);
        CGContextAddLineToPoint(pdfContext, -, height);
        CGContextStrokePath(pdfContext);
        height=height-;
        text=(char *)[@"Objective" UTF8String];
        CGContextSetFontSize(pdfContext, );
        CGContextShowTextAtPoint(pdfContext, , height, text, strlen(text));
      //  CGContextSetFontSize(pdfContext, 10);
        height=height+;
        temtext=[NSString stringWithFormat:@"%@",self.objective];
        height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
    }
    //5个可以排序的
    for (int i=;i<;i++){
        if([OrderData getskillnumber]==i){                  //skill
            if(self.skills!=nil&&[self.skills count]!=){
                // skill划线
                height=[self getfontheight:temtext fontsize: height:height];
                CGContextMoveToPoint(pdfContext, , height);
                CGContextAddLineToPoint(pdfContext, -, height);
                CGContextStrokePath(pdfContext);
                height=height-;
                text=(char *)[@"Skills" UTF8String];
                CGContextSetFontSize(pdfContext, );
                CGContextShowTextAtPoint(pdfContext, , height, text, strlen(text));
                //skill内容
                //height=height+13;
                for(int i=;i<[self.skills count];i++){
                    NSManagedObject *object=[self.skills objectAtIndex:i];
                    temtext=[NSString stringWithFormat:@"* %@",[object valueForKey:@"skill"]];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                  //  height=height-13;
                }
            }
        }else if([OrderData getothernumber]==i){                //other
            if(self.others!=nil&&[self.others count]!=){
                // other划线
                height=[self getfontheight:temtext fontsize: height:height];
                CGContextMoveToPoint(pdfContext, , height);
                CGContextAddLineToPoint(pdfContext, -, height);
                CGContextStrokePath(pdfContext);
                height=height-;
                text=(char *)[@"Others" UTF8String];
                CGContextSetFontSize(pdfContext, );
                CGContextShowTextAtPoint(pdfContext, , height, text, strlen(text));
                //other内容
                for(int i=;i<[self.others count];i++){
                    NSManagedObject *object=[self.others objectAtIndex:i];
                    temtext=[NSString stringWithFormat:@"* %@",[object valueForKey:@"other"]];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                  //  height=height-13;
                }
            }
        }else if([OrderData getexperiencenumber]==i){                   //experience
            if(self.experience!=nil&&[self.experience count]!=){
                //排序
                NSSortDescriptor *descriptor=[NSSortDescriptor sortDescriptorWithKey:@"start" ascending:NO];
                [self.experience setArray:[self.experience sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]]];
                // other划线
                height=[self getfontheight:temtext fontsize: height:height];
                CGContextMoveToPoint(pdfContext, , height);
                CGContextAddLineToPoint(pdfContext, -, height);
                CGContextStrokePath(pdfContext);
                height=height-;
                text=(char *)[@"Experience" UTF8String];
                CGContextSetFontSize(pdfContext, );
                CGContextShowTextAtPoint(pdfContext, , height, text, strlen(text));
                //experience内容
                for(int i=;i<[self.experience count];i++){
                    NSManagedObject *object=[self.experience objectAtIndex:i];
                    NSString *position=[object valueForKey:@"position"];
                    NSString *companyname=[object valueForKey:@"companyname"];
                    NSString *location=[object valueForKey:@"location"];
                    NSDate *startdate=[object valueForKey:@"start"];
                    NSDate *enddate=[object valueForKey:@"end"];
                    NSString *thisid=[object valueForKey:@"thisid"];
                    temtext=[NSString stringWithFormat:@"%@",position];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                    height=height-;
                    temtext=[NSString stringWithFormat:@"%@, %@",companyname,location];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                    height=height-;
                    NSDateFormatter *timeformatter=[[NSDateFormatter alloc]init];
                    [timeformatter setDateFormat:@"MMMM, yyyy"];
                    NSNumber *number=(NSNumber*)[object valueForKey:@"currentjob"];
                    if(!number.boolValue){
                        temtext=[NSString stringWithFormat:@"%@ ~ %@",[timeformatter stringFromDate:startdate],[timeformatter stringFromDate:enddate]];
                    }else{
                         temtext=[NSString stringWithFormat:@"%@ ~ Present",[timeformatter stringFromDate:startdate]];
                    }
                    [timeformatter release];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                    NSMutableArray *responsibility=[DataController getresponsibility:thisid];
                    NSLog(@"responsibility cout:%d \n responsibility context:%@",[responsibility count],responsibility);
                    for(int j=;j<[responsibility count];j++){
                        NSManagedObject *object=[responsibility objectAtIndex:j];
                        NSString *respon=[object valueForKey:@"responsibility"];
                        temtext=[NSString stringWithFormat:@"* %@",respon];
                        height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                        height=height-;
                        NSLog(@"J=%d",j);
                    }               
                    height=height-;
                }
            }
        }else if([OrderData geteducationnumber]==i){                    //Education
            if(self.education!=nil&&[self.education count]!=){
                //排序
                NSSortDescriptor *descriptor=[NSSortDescriptor sortDescriptorWithKey:@"starttime" ascending:NO];
                [self.education setArray:[self.education sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]]];
                // other划线
                height=[self getfontheight:temtext fontsize: height:height];
                CGContextMoveToPoint(pdfContext, , height);
                CGContextAddLineToPoint(pdfContext, -, height);
                CGContextStrokePath(pdfContext);
                height=height-;
                text=(char *)[@"Education" UTF8String];
                CGContextSetFontSize(pdfContext, );
                CGContextShowTextAtPoint(pdfContext, , height, text, strlen(text));
                //内容
                for(int i=;i<[self.education count];i++){
                    NSManagedObject *object=[self.education objectAtIndex:i];
                    NSString *schoolname=[object valueForKey:@"school"];
                    NSDate *startdate=[object valueForKey:@"starttime"];
                    NSDate *enddate=[object valueForKey:@"endtime"];
                    NSString *comment=[object valueForKey:@"comment"];
                    NSString *major=[object valueForKey:@"major"];
                    //height=height-13;
                    temtext=[NSString stringWithFormat:@"%@",schoolname];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];    
                    height=height-;
                    NSDateFormatter *timeformatter=[[NSDateFormatter alloc]init];
                    [timeformatter setDateFormat:@"MMMM, yyyy"];
                    temtext=[NSString stringWithFormat:@"%@ ~ %@",[timeformatter stringFromDate:startdate],[timeformatter stringFromDate:enddate]];
                    [timeformatter release];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                    height=height-;
                    temtext=[NSString stringWithFormat:@"%@",major];
                    height=[self    plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                    height=height-;
                    temtext=[NSString stringWithFormat:@"%@",comment];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                }
            }
        }else if([OrderData getawardnumber]==i){            //award
            if(self.awards!=nil&&[self.awards count]!=){
                //排序
                NSSortDescriptor *descriptor=[NSSortDescriptor sortDescriptorWithKey:@"awarddate" ascending:NO];
                [self.awards setArray:[self.awards sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]]];
                // other划线
                height=[self getfontheight:temtext fontsize: height:height];
                CGContextMoveToPoint(pdfContext, , height);
                CGContextAddLineToPoint(pdfContext, -, height);
                CGContextStrokePath(pdfContext);
                height=height-;
                text=(char *)[@"Awards" UTF8String];
                CGContextSetFontSize(pdfContext, );
                CGContextShowTextAtPoint(pdfContext, , height, text, strlen(text));
                //award内容
                for(int i=;i<[self.awards count];i++){
                    NSManagedObject *object=[self.awards objectAtIndex:i];
                    NSString *comment=[object valueForKey:@"comment"];
                    NSString *name=[object valueForKey:@"name"];
                    NSDate *awarddate=[object valueForKey:@"awarddate"];
                    temtext=[NSString stringWithFormat:@"%@",name];
                   height= [self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                    height=height-;
                    NSDateFormatter *timeformatter=[[NSDateFormatter alloc]init];
                    [timeformatter setDateFormat:@"MMMM, dd, yyyy"];
                    temtext=[NSString stringWithFormat:@"%@",[timeformatter stringFromDate:awarddate]];
                    [timeformatter release];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                   height=height-;
                    temtext=[NSString stringWithFormat:@"%@",comment];
                    height=[self plaintextatwith: width: text:temtext height:height fontsize: context:pdfContext];
                    height=height-;
                    }
                }
            }
        } 
               CGContextEndPage(pdfContext);
    }
        CGContextRelease(pdfContext);
}
ios 创建和绘画pdf文件 -转的更多相关文章
- PDFBox创建并打印PDF文件, 以及缩放问题的处理.
		
PDFBox带了一些很方便的API, 可以直接创建 读取 编辑 打印PDF文件. 创建PDF文件 public static byte[] createHelloPDF() { ByteArrayOu ...
 - ios创建bundle的图片资源文件(转)
		
在ios开发中为了方便管理资源文件,可以使用bundle的方式来进行管理,比如kkgridview里就是把所需的图片文件全部放在一个bundle来管理的 . 切记目前iOS中只允许使用bundle管理 ...
 - ios创建的sqlite数据库文件如何从ios模拟器中导出
		
为了验证数据库的结构,有的时候需要使用一些管理工具来直接查看sqlite数据库的内容,在windows下有sqlite3的专用工具下载,而在ios下也可以使用火狐浏览器的插件sqlitemanager ...
 - ios 创建自己的.a文件
		
1:首先创建个 静态工程(Cocoa Touch Static Library); 方法名字,一定要暴露在.h文件中, 2:分别在模拟器环境和真机环境下 Analyze (shift+command+ ...
 - iOS开发:读取pdf文件
		
方法一:使用QLPreviewController #pragma mark 浏览存在沙盒的文件 -(void)quickLook { QLPreviewController *QLPreviewV ...
 - 怎么用OCR图文识别软件在MS Office中创建PDF文件
		
ABBYY PDF Transformer+是一款可创建.编辑及将PDF文件转换为其他可编辑格式的OCR图文识别软件,不仅可以从纸质文档.图像文件和任何其他流行格式创建PDF文件(相关文章请参考如何从 ...
 - PDF文件的加载及展示
		
项目需要显示PDF文件,于是遍寻了网络,发现的方法以下几种: 1.使用UIWebView加载,没啥说的,根据文件路径,网络或者本地皆可,创建一个NSURLRequest,然后用webView加载就可以 ...
 - 使用iTextSharp修改PDF文件(一)
		
这个iTextSharp确实是个好东西,可以创建.读取PDF格式的文档,虽然我的需求比较简单,但我首先还是基本上.完整地看完了它的相关文档,不喜欢英文的同志,可以搜索一篇<用C#制作PDF文件全 ...
 - 使用pdfFactory为PDF文件设定查看选项
		
一般情况下,大部分PDF文件都会按照默认的查看设置,以100%的尺寸显示第一页的内容.但在一些特殊情况下,PDF文件的创建者会设定其他的文件查看尺寸,或设定打开页为第N页,来达到引起阅读者关注的目的. ...
 
随机推荐
- [Node.js] Read a File in Node.js with fs.readFile and fs.readFileSync
			
We'll read a csv file in node.js both synchronously, and asynchronously. The file we're reading is a ...
 - 单点登录cas常见问题(二) - 子系统是否会频繁訪问cas中心?
			
这个问题的完整描写叙述是:用户成功登陆后.在訪问子系统的受限资源时,还须要訪问cas中心么,即子系统是否还会频繁訪问cas中心.cas中心会不会压力太大? 答案是:不会. 假设用户通过子系统A登录了c ...
 - VM虚拟机ping不通局域网其他主机的解决办法
			
1 我的笔记本的无线网卡是自动获取IP,并且是通过无线网卡上网. 2 我的有线网卡是通过自己设定IP跟局域网的其他机器连通.当前设定的IP为172.16.17.2 3我需要连接的局域网另一个主 ...
 - Unity 3D 中动态字体的创建
			
原创不易,转载请注明转自: http://blog.csdn.net/u012413679/article/details/26232453 ---- kosion 1.载入NGUI插件包,载入完毕后 ...
 - Cookie防伪造防修改    电商课题:cookie防篡改
			
主要防止非法用户修改cookie信息,以及cookie的超时时间 传统cookie存储,Cookie(name, value),value很容易就被篡改. 防修改cookie存储,Cookie(nam ...
 - 小胖说事35-----Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer posi
			
2011-06-11 15:19:17.167 ***[930:707] *** Terminating app due to uncaught exception 'CALayerInvalidGe ...
 - 基于开源项目的在线网络视频直播项目---pc端的推流
			
https://github.com/winlinvip/simple-rtmp-server/issues/66 https://github.com/justinmakaila/iOS-Frame ...
 - MySQL 存储过程传參之in, out, inout 參数使用方法
			
存储过程传參:存储过程的括号中.能够声明參数. 语法是 create procedure p([in/out/inout] 參数名 參数类型 ..) in :给參数传入值,定义的參数就得到了值 ou ...
 - 关于集成支付宝SDK的开发
			
下载 首先,你要想找到这个SDK,都得费点功夫.如今的SDK改名叫移动支付集成开发包了,下载页面在 这里 的 "请点此下载集成开发包" Baidu和Googlep排在前面的支付宝开 ...
 - 连接虚拟机的SQLServer
			
1.IP可以互相PING通 2.Telnet发现端口没有放开,防火墙新建入账规则开放端口 成功..