PDF文件是我们常用的文件,本文简单介绍下PDF文件的操作。

首先,我们需要PDF的库文件--PDFLib

在网上搜索,就可下载

 

然后,新建对话框应用程序,将库文件拷贝到我们的工程中,并且添加到工程

将pdflib.dll拷贝到工程目录下

添加如下代码到工程

#include "PDFLib\PDFLib.hpp"
#pragma comment(lib, "PDFLib\\PDFLib.lib")

宏定义

#define RADIUS       200.0f
#define MARGIN      20.0f

文件操作

void CFilePdfDemoDlg::OnBtnPdfTest()
{PDFlib pdf;//设置兼容参数pdf.set_parameter("compatibility", "1.4");//打开文档if (-1 == pdf.open("PdfTest.pdf")){MessageBox("打开文件出错!");return;}//设置文档信息pdf.set_info("Creator","PDF Creator");pdf.set_info("Author","test");pdf.set_info("Title","Convert to PDF");pdf.set_info("Subject","PDF Creator");pdf.set_info("Keywords","vckbase.com");//开始A4页面pdf.begin_page(a4_width,a4_height);//设置字体为12号宋体int font_song = pdf.findfont("STSong-Light","GB-EUC-H",0);int font = pdf.findfont("Arial","host", 0);pdf.setfont(font_song,12);//设置起始点pdf.set_text_pos(50,a4_height-50);//设置颜色为蓝色pdf.setcolor("fill","rgb",0,0,1,0);//输出文字pdf.show("pdf欢迎您!");pdf.setcolor("fill","rgb",1,0,0,0);pdf.setfont(font,24);pdf.continue_text("this is just a test!");//画两根绿线pdf.setcolor("stroke", "rgb", 0.24f, 0.51f, 0.047f, 0);pdf.moveto(50, a4_height - 80);pdf.lineto(a4_width - 50, a4_height - 80);pdf.moveto(50, a4_height - 78);pdf.lineto(a4_width - 50, a4_height - 78);pdf.stroke();//填充一个蓝色方框pdf.setcolor("fill", "rgb", 0.04f, 0.24f, 0.62f, 0);pdf.rect(50, 50, a4_width - 100, 70);pdf.fill();//在指定位置输出文字pdf.setcolor("fill", "rgb", 1, 1, 1, 0);pdf.setfont(font_song, 16);pdf.show_xy("啦啦啦", a4_width - 150, 60);//打开并显示一个图像int img = pdf.open_image_file("jpeg", "test.jpg", "", 0);pdf.place_image(img, 200, 400, 1);pdf.close_image(img);//添加附件//宽度 高度 x坐标 Y坐标 附件名称 描述 作者 后缀名 图标pdf.attach_file(a4_width - 300, 0, 0, a4_height - 400, "test.rar", "description", "author", "zip", "paperclip");//结束本页pdf.end_page();//关闭PDF文件pdf.close();MessageBox("PdfTest.pdf成功生成!");
}void CFilePdfDemoDlg::OnBtnPdfClock()
{PDFlib pdf;double alpha;time_t timer;struct tm ltime;pdf.set_parameter("compatibility","1.4");if(-1 == pdf.open("pdfclock.pdf")){return;}pdf.set_info("Creator", "pdfclock.cpp");pdf.set_info("Author", "Thomas Merz");pdf.set_info("Title", "PDF clock (C++)");pdf.begin_page(2*(RADIUS+MARGIN),2*(RADIUS+MARGIN));pdf.translate(RADIUS+MARGIN,RADIUS+MARGIN);pdf.setcolor("fill","rgb",0,0,1,0);pdf.save();pdf.setlinewidth(2);for(alpha=0; alpha<360; alpha+=6){pdf.rotate(6);pdf.moveto(RADIUS,0);pdf.lineto((RADIUS-MARGIN/3),0);pdf.stroke();}pdf.restore();pdf.save();pdf.setlinewidth(3);for(alpha=0; alpha<360; alpha += 30){pdf.rotate(30);pdf.moveto(RADIUS,0);pdf.lineto(RADIUS-MARGIN,0);pdf.stroke();}time(&timer);ltime = *localtime(&timer);pdf.save();pdf.rotate( (-((ltime.tm_min/60.0) + ltime.tm_hour - 3.0) * 30.0) );pdf.moveto(-RADIUS/10, -RADIUS/20);pdf.lineto(RADIUS/2, 0);pdf.lineto(-RADIUS/10, RADIUS/20);pdf.closepath();pdf.fill();pdf.restore();pdf.save();pdf.rotate( (-((ltime.tm_sec/60.0) + ltime.tm_min - 15.0) * 6.0));pdf.moveto(-RADIUS/10, -RADIUS/20);pdf.lineto(RADIUS * 0.8, 0);pdf.lineto(-RADIUS/10, RADIUS/20);pdf.closepath();pdf.fill();pdf.restore();pdf.setcolor("fill","rgb",1,0,0,0);pdf.setlinewidth(2);pdf.save();pdf.rotate( -((ltime.tm_sec - 15) * 6));pdf.moveto(-RADIUS/5, 0);pdf.lineto(RADIUS, 0);pdf.stroke();pdf.restore();pdf.circle(0,0,RADIUS/30);pdf.fill();pdf.restore();pdf.end_page();pdf.close();MessageBox("pdfclock.pdf成功生成!");
}

运行效果

点击PDF TEST按钮

点击PDF CLOCK按钮

查看文件

PdfTest.pdf

pdfclock.pdf

源码下载

VC之PDF文件操作相关推荐

  1. 剖析VC中的文件操作

    剖析VC中的文件操作 2002-8-4 17:33:29   燕山大学   聂栋栋   阅读次数: 18539 各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找 ...

  2. python对PDF文件操作

    python对PDF文件操作 下载模块PyPDF2,以页为基本单位对PDF文件进行读写操作,无法直接操作每一页内容. PDF文件读操作 导入函数 from PyPDF2 import PdfFileR ...

  3. angular2之pdf文件操作大全

    最近的项目中需要显示pdf内容.下载pdf.甚至是前端生成pdf 适用于angular2.4或者更高版本 情景1.需要将页面的某个部分转成pdf文件并下载(即将页面的部分html内容转成pdf文件) ...

  4. pypdf2 存储pdf_PyPDF2:用于PDF文件操作的Python库

    pypdf2 存储pdf PyPDF2 is a pure-python library to work with PDF files. We can use the PyPDF2 module to ...

  5. 在线转换pdf和虚拟打印机生成pdf文件操作攻略

    由于PDF具有稳定的格式和良好的视图,使得PDF格式文件越来越受工作族的欢迎.但大多人仍习惯Word编辑,所以就有了Word文档转换PDF的需求,那么有什么好的转换Word的方法呢? 小编就来介绍两种 ...

  6. Python 办公自动化:全网最强最详细 PDF 文件操作手册!

    PDF(Portable Document Format)是一种便携文档格式,便于跨操作系统传播文档.PDF文档遵循标准格式,因此存在很多可以操作PDF文档的工具,Python自然也不例外. 而Pyt ...

  7. MATLAB下pdf文件操作读取示例

    这里写目录标题 摘要 原文件 预处理为txt 代码实现 摘要 当遇到一些需要大量数据的项目,数据的读取与储存显得尤为重要.怎样把数据从其他格式的文件中读取,并运用到程序中是很多时候我们要解决的问题.对 ...

  8. Win32 API、VC++、C# 文件操作函数的初步比较

    一 C# File.ReadAllText(FilePath) : 一次将文本内容全部读完, File.ReadAllLines: 该方法返回一个字符串数组.每一行都是一个数组元素. string[] ...

  9. vc中常用文件操作(二) Ini文件操作

    在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINA ...

最新文章

  1. 教你五分钟入门使用html5 svg绘制图形
  2. 用java编写一个函数,统计一个字符串中每个字母出现的次数
  3. LWIP裸机环境下实现TCP与UDP通讯(转)
  4. 干货 | 十年经验PM手机里都装了哪些app?
  5. SAP的模块化服务应用市场Hybris,前景如何?
  6. 免费源码赠送之 pwm (vhdl)
  7. 微软Window硬件大会(WinHEC)
  8. LINUX获得毫秒时间戳的代码
  9. 树莓派-11-3又1/2位数字万用表使用说明书
  10. idea顶部工具栏、底部工具栏、两边工具栏的显示与隐藏
  11. numeric_limits<T>::max(),min()及lowest()
  12. 【一周读书】All life is problem solving
  13. 前端开发规范——Vue
  14. #NAME?_#NAME?
  15. 29python腾讯位置大数据北京2019五一期间迁出数据
  16. NBA比赛数据分析与预测
  17. 2021 年软件开发趋势大预测!
  18. 梯度下降法,二维空间三维空间 代码实现
  19. 赛门铁克企业防火墙曝已存在30年漏洞
  20. 【Stable-Diffusion-webui】No module ‘xformers‘. Proceeding without it. 问题解决方法(Windows)

热门文章

  1. B. Number Busters
  2. matlab2015崩溃,Matlab 2015b 启动时崩溃 MATLAB crashes during startup on Ubuntu 16.04
  3. 轻松搞定eclipse中英文转换
  4. Codeforces Round #748 E. Gardener and Tree
  5. 论文阅读笔记--ExpandNet: High Dynamic Range Expansion from Low Dynamic Range Content
  6. Android中可变帧率VRR
  7. 【USACO 2.4.4】回家
  8. html网页设计课程心得,网页制作学习心得5篇.doc
  9. java窗口的repaint_Java Swing revalidate()与repaint()
  10. linux只读文件修改无法退出