ofd是什么格式
【www.yin56.com--资料阅读】
语法分析器
篇一:ofd是什么格式
词法分析器
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace 编译器
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string Str = "", text2 = "";
StringReader streamToPrint = null;
Font printFont;
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
string Fname;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "文本文件(*.Txt)|*.Txt";
if (ofd.ShowDialog() == DialogResult.OK)
{
Fname = ofd.FileName;
richTextBox1.LoadFile(Fname, RichTextBoxStreamType.PlainText);
}
}
private void 打开OToolStripButton_Click(object sender, EventArgs e)
{
string Fname;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "文本文件(*.Txt)|*.Txt";
if (ofd.ShowDialog() == DialogResult.OK)
{
Fname = ofd.FileName;
richTextBox1.LoadFile(Fname, RichTextBoxStreamType.PlainText);
}
}
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
string Fname;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "文本文件(*.Txt)|*.Txt";
ofd.FilterIndex = 1;
ofd.Title = "保存文件";
ofd.InitialDirectory = Application.StartupPath;
ofd.RestoreDirectory = true;
ofd.ShowDialog();
Fname = ofd.FileName;
if (Fname != "")
{
if (ofd.FilterIndex == 1)
richTextBox1.SaveFile(Fname, RichTextBoxStreamType.PlainText);
else
richTextBox1.SaveFile(Fname, RichTextBoxStreamType.RichText);
}
}
private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
{
string Fname;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "文本文件(*.txt)|*.txt";
ofd.Title = "保存文件 ";
ofd.RestoreDirectory = true;
ofd.ShowDialog();
Fname = ofd.FileName;
if (Fname != "")ofd是什么格式。
richTextBox1.SaveFile(Fname, RichTextBoxStreamType.PlainText);
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void 词法分析器ToolStripMenuItem_Click(object sender, EventArgs e)
{
Gets.LineNo = 1; //初始化行号
Gets.errors = 0; //初始化错误个数
Gets.text5 = "";
string text1 = richTextBox1.Text + '\0';
Gets getstring = new Gets();ofd是什么格式。
text2 = getstring.GetString(text1);
textBox1.Text = "*****************Token串生成表如下********************" + "\r\n" + text2;
textBox2.Text = getstring.ErrorN0();
}
private void 语法分析器ToolStripMenuItem_Click(object sender, EventArgs e)
{
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 编译器
{
class Gets
{
int i = 0, j = 0; //记录字符位置,token数组的位置
public static int LineNo = 1; //行号
string token = ""; //记录识别出的单词
string text2 = "";
string text3 = ""; //用来记录错误信息
string wrong = ""; //记录异常信息
public static int errors = 0; //错误字段的个数
public static string text5 = ""; // 记录错误的详细信息
int flag1 = 0, flag2 = 0, flag3, flag4, flag5, flag6 = 0; //标记成对出现的界符
public static string text4 = "入口:单词名称 长度 类型 种属 值 内存地址" + "\r\n"; //用来记录符号表
string[]
"register","typedef","char","extern","return","union","const","float","short","unsigned","continue","for","signed","void","default",
"goto","sizeof","volatile","do","if","while","static" };
string[] m_operator = new string[28]{"+","-","*","/","%",">","<",">=","<=","==", "-=","+=","*=","/=", //运算符
"!=","=","%=","&","&&","|","||","!","++","--","~","<<",">>","?:"};
string[] m_bound = new string[15] { "{", "}", "[", "]", ";", ",", ".", "(", ")", ":", "\"", "#", ">", "<", "\'" }; //界符
public string GetString(string str) //读入字符串
{
string space = ""; //空格数
if (str.Length == 0) //判断字符串是否为空
return "";
try
{
while (str[i] != '\0') //读入字符判断,空格、字母、数字、界符
{
if (str[i] == ' ' || str[i] == '\t' || str[i] == '\r')
{
i++; //跳过无意义的字符
}
else if (str[i] == '\n')
{
LineNo++;
i++;
}
else if (isalpha(str[i]))
{
i = recog_id(str, i); //如果是字母 //如果是换行符,则行号加1 m_KeyWords = new string[32]{"auto", "double", "int","struct", "break", "else","long","switch","case","enum",
for (j = 0; j < m_KeyWords.Length; j++)
{
if (token.CompareTo(m_KeyWords[j]) == 0)
break;
}
if (j >= m_KeyWords.Length)
{
for (int m = 0; m < 12 - token.Length; m++)
space = space + " ";
text2 = text2 + LineNo.ToString() + ": " + token + space + "标识符 Token码 75" + "\r\n"; ;
text4 = text4 + LineNo.ToString() + ": " + token + " " + token.Length + space + "标识符" + " " + "简单变量" + " " + "未知" + " " + " 未知" + "\r\n";
token = "";
space = "";
}
if (j < m_KeyWords.Length)
字
{
for (int m = 0; m < 12 - token.Length; m++)
space = space + " ";
text2 = text2 + LineNo.ToString() + ": " + m_KeyWords[j] + space + "保留字 Token码 " + Convert.ToString(gettoken(token, 1)) + "\r\n"; ;
token = "";
space = "";
}
}
else if (isdigit(str[i]))
{
i = recog_dig(str, i);
for (int m = 0; m < 12 - token.Length; m++)
space = space + " ";
text2 = text2 + LineNo.ToString() + ": " + token + space + "常量 Token码 76" + "\r\n";
text4 = text4 + LineNo.ToString() + ": " + token + " " + token.Length + space + "整数" + " " + "简单变量" + " " + "未知" + " " + " 未知" + "\r\n";
token = ""; //如果是数字 //是保留 //不是保留字
数科版式转换系统产品白皮书
篇二:ofd是什么格式
数科版式转换系统
产品白皮书
北京数科网维技术有限责任公司
1. 产品概述
数科版式转换系统是一款提供文档转换服务的产品,它实现将其他格式的文档转换为OFD版式文档。在业务应用中,主要用于将各类历史存量文档转换为OFD,以及提供长期驻留的文档转换服务等。支持将主流的文件格式转换为OFD文件,支持的格式包括但不限于办公文件、PDF文件、图片和网页文件。内置多种转换引擎,支持集群配置,可有效应对高精度、大数据量、高速度、高可靠性要求的文档转换需求。支持无格式XML文件和结构化数据的套版转换。在调用方式上支持以C++、COM、JavaAPI、Windows服务、命令行和虚拟打印等多种形态提供调用。
版式转换系统具有转换速度快、转换精度高、服务运行稳定、海量转换支持、可扩展性强等显著优势,适合于部署在政府机关及企事业单位内部提供版式转换服务。
图 1-1 版式转换系统示意图
2. 产品功能
2.1 常规格式转换
支持各类常见文档格式转换为OFD文件,涵盖电子公文领域中的所有格式。支持的格式包括但不限于DOC\XLS\PPT等办公文档及其高版本、OFD、PDF、BMP、JPG、PNG、TIFF、HTML网页等。
在OFD转换功能之外,支持将OFD文件转换为PDF文件。
2.2 集中转换
数科文档转换网格将文档转换工作集中在服务端进行,比客户端转换更易于对转换所需的软硬件条件进行专业配置,转换生成文档质量更容易保证。
另外,集中转换利于充分发挥转换软件的性能优势,降低文档转换成本。
2.3 高速转换
数科文档转换网格非常容易扩充,其中的工作节点数量可以进行“热插拔式”扩展(即在不影响服务对外调用的前提下增加或减少转换节点)。通过合理配置转换工作节点的数量,可以应对TB级存量文档的高速转换需求。数科文档转换网格在实际应用中达到过24小时转换150万份单据的速度峰值。
2.4 多引擎转换
数科转换节点内置虚拟打印和其他转换引擎,当进行文档转换时,优先使用该文档的创建软件作为排版引擎,很大程度上避免了不同版本引擎之间的跑版现象引起的转换失真,转换后的版面效果更为精确。另外,电子文件使用其创建软件解析和排版的成功率也显著更高,这使得转换节点工作更为稳定。
2.5 文档同步加工
数科文档转换网格使用XML来描述转换要求,可在实现文档格式转换的同时,同步对转换后的文档进行数据加工,包括对文件附加文件标识、元数据、附件和权限声明,将多个文档的组合为一个文档,为文档添加封面、尾页或附件等。
2.6 水印和数字签名
数科文档转换网格支持在转化后文档的指定页面中插入水印和背景,水印和背景支持图形、图像和文字的组合描述。
数科文档转换网格对转换后的版式文件自动添加符合OFD格式规范和密码技术应用规范要求的电子印章和数字签名。该特性可被用于批量生成带有数字校验特性的文档,如各类证、照、单、据等。
2.7 加密封装
数科文档转换网格支持将转换后的版式文件封装为指定类型的加密信封,该信封可被具备条件的阅读终端打开,而未授权的用户和软件无法打开。
3. 产品技术特色
? 转换速度快
通过并行计算和自动负载均衡设计,可以获得数倍甚至数十倍于传统文档转换方式的吞吐能力。
? 转换精度高
内置多种排版引擎,综合利用各个引擎的优点,有效规避其转换缺点,转出文档与源文件相比版面精确度更高。
? 服务运行稳定
转换服务的结构设计特点可实现比一般文件转换方式更为稳定,这依托两种因素:首先,转换网格不会因某一节点的失败而失败,网格提供持续服务的能力更强;其次,用文档对应的创建工具去排版和转换该文档将显著降低失败概率。
? 可转无格式文档
独创的“XML文件+模板”的方式支持无格式文件的转换,该模式可用于将数据库中的单条记录创建为可见的版式文件。
? 海量转换支持
版式转换服务可支持海量历史文件的转换。
? 可扩展性强
转换服务中的密码运算模块(对称和非对称加解密)、源文件获取模块和转换结果处理等均已抽象为可二次开发的接口,加以简单重写即可扩展为新的实现。
4. 产品性能
? 最高支持每秒50页以上的格式文档高速转换;
? 支持文件150万份/24小时以上的高速转换;
? 支持XML文件的套用自定义表单模版转换;
? 支持在转换后自动添加水印和数字签名;
? 转换节点可扩充,支持任意多节点的热插拔接入和退出。
实验五:具有读写及存储功能的记事本程序设计
篇三:ofd是什么格式
实验报告 成绩
课程名称 《.Net程序设计》 指导教师 实验日期 2015/06/06
实验项目名称 实验五:具有读写及存储功能的记事本程序设计
一、 实验目的和要求
通过使用对话框控件和文件对象,访问Windows系统中的文件对象,实现文本文件的写入、读取和追加。掌握通过设定Form类的属性,创建多文档应用程序的方法。掌握打开文件对话框、保存文件对话框的使用方法。学习菜单栏、工具栏控件的具体使用。掌握文件类、流类的具体使用方法,学习通过流对象访问磁盘文件的方法。
二、 主要仪器设备、试剂或材料
微型计算机;Visual Studio 2010语言编译环境
三、 实验内容与要求,
1.通过C#创建窗体,设计一个类似于Windows中“记事本”的程序,并实现其主要功能。再创建一个新窗体,设定属性将其定义为父窗体。
2.在父窗体上通过使用菜单控件实现界面菜单,使用工具栏创建工具菜单,针对菜单和工具栏中对文件的打开、保存等操作,编写程序通过使用对话框控件来实现。
3.创建StreamWriter和StreamReader类对象,以实现对文本文件的存取。新打开的文件要放入到新创建的记事本窗体中,并以子窗体的形式显示。
四、 程序设计思路、运行及及结果分析
1.通过C#创建窗体,设计一个类似于Windows中“记事本”的程序,并实现其主要功能。再创建一个新窗体,设定属性将其定义为父窗体。ofd是什么格式。
关于OpenFileDialog的使用
篇四:ofd是什么格式
关于OpenFileDialog的使用
(2010-03-25 12:51:33)
标签: 分类:WinForm
杂谈
可以用以下代码来实现上面这个对话框:
private void openFileDialogBTN_Click(object sender, System.EventArgs e){
OpenFileDialog openFileDialog=new OpenFileDialog();
openFileDialog.InitialDirectory="c:\\";//注意这里写路径时要用c:\\而不是c:\
openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*";
openFileDialog.RestoreDirectory=true;
openFileDialog.FilterIndex=1;
if (openFileDialog.ShowDialog()==DialogResult.OK)
{
fName=openFileDialog.FileName;
File fileOpen=new File(fName);
isFileHaveName=true;
richTextBox1.Text=fileOpen.ReadFile();
richTextBox1.AppendText("");
}
}
路径的返回用filename是字符串类型
如:openFileDialog1.ShowDialog();
_name1= openFileDialog1.FileName;
Image imge = Image.FromFile(_name1);
为了方便同事在日常工作中很快速生成大量数据, 我做了文件拷贝的小工具:
其中用到了OpenFileDialog这个类,下面是关于这个类的一些用法!
OpenFileDialog类是用来选择文件位置的,
FolderBrowserDialog 类用来选择文件夹位置.
具体代码如下:
程序源码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace copyFile
{
public partial class Form1 : Form
{
String fileName;
String folderName;
String extendedName;
String fileName1;
public Form1()
{
InitializeComponent();
}
private void browse_Click(object sender,EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog(); //new一个方法 ofd.InitialDirectory = Environment. GetFolderPath_r(Environment.SpecialFolder.MyDocuments); //定义打开的默认文件夹位置 ofd.ShowDialog(); //显示打开文件的窗口
fileName = ofd.FileName; //获得选择的文件路径 textBox1.Text = fileName;
extendedName = Path. GetExtension_r(fileName); //获得文件扩展名 fileName1 = Path. GetFileName_r(fileName); //获得文件名 }
private void folder_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowDialog();
folderName = fbd.SelectedPath; //获得选择的文件夹路径
textBox3.Text = folderName;
}
private void ok_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim().Length == 0)
{
MessageBox.Show("文件路径不能为空!");
return;
}
if (textBox2.Text.Trim().Length == 0)
{
MessageBox.Show("复制数量不能为空!");
return;
}
if (textBox3.Text.Trim().Length == 0)
{
MessageBox.Show("目标文件夹路径不能为空!");
return;
}
String newFile; //定义存储的位置,和存储的名称
for (int i = 1; i <= Convert.ToInt32(textBox2.Text); i++) //从textBox2中获取要复制的次数
{
newFile = folderName + "\\" + fileName1 +"_"+ i.ToString() + extendedName;
; File.Copy(fileName, newFile, true); //使用Copy复制文件, Copy(源文件位置,目标文件夹位置,是否可以覆盖同名文件)
}
MessageBox.Show("复制完成!");
}
}
}
补充:
//获取文件名
Path. GetFileName_r(OpenFileDialog.FileName)
//获取文件路径
Path. GetDirectoryName_r(OpenFileDialog.FileName)
//获取文件扩展名
Path. GetExtension_r(OpenFileDialog.FileName)
ofd格式阅读器