声明的特点

声明是就有关事项或问题向社会表明自己立场、态度的文种。党和国家机关及其领导人、机关单位、社会团体、企事业单位、其他组织或公民个人均可发表声明。

声明可在报刊登载,具有表明立场、观点和态度,警告、警示,保护合法权益的特点。

声明由标题、正文、落款几部分组成。

 显示效果

示例代码所生成的OFD文件:下载

 示例代码

package test.create.c13;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.bouncycastle.asn1.ASN1BitString;
import org.bouncycastle.asn1.DERBitString;

import iofd.layout.signature.SignatureRequest;
import iofd.official.OfficialDocument;
import iofd.official.gbt9704.bean.SealInfo;
import iofd.official.gbt9704.contants.OfficialDocumentType;
import iofd.pki.core.asn1.SM2Signature;
import iofd.pki.core.sm2.Sm2Signer;
import iofd.signature.OfdSignatureHelper;
import iofd.signature.OfdSignatureHelper.DigestInfo;
import iofd.signature.asn1.seal.SeSeal;
import test.create.TestDocUtil;
import test.create.c11.C1101SealHelloWorld;

/**
 * 公文:声明
 * */
public class C1308ShengMing {

	public static void main(String[] args) throws Throwable {
		C1308ShengMing o = new C1308ShengMing();
		o.done();
	}

	private void done() throws Throwable {
		String clzName = this.getClass().getSimpleName();
		System.out.println(clzName + " begin");
		
		OfficialDocument official = new OfficialDocument(OfficialDocumentType.SHENG_MING);
		
		List titles = new ArrayList<>();
		titles.add("声  明");
		official.setTitles(titles);
		
		official.addContent("普通话水平测试是根据《国家通用语言文字法》和教育部、国家语委有关文件组织的国家级考试。普通话水平测试由经省级以上语委认定的具备相关资质的测试机构组织实施(开篇说明普通话水平测试的考试情况)。 ");
		official.addContent("最近发现社会上有些培训机构在网站上打出“官方合作培训测试”及“参加培训测试包过”的虚假广告招揽考生;同时还接到群众及相关部门反映,有个别培训机构通过不正当手段办理外省的普通话水平测试等级证书,严重毁坏了普通话水平测试的社会声誉,误导和欺骗了广大考生(说明虚假广告的具体现象)。为此郑重声明(“郑重”二字表现了此声明的严肃性和正规性): ");
		official.addContent("一、我省的普通话培训测试站从未与社会上任何培训机构有合作关系。敬请各位考生切勿相信有关普通话培训测试的不实宣传,直接到经省语委认定具备相关资质的普通话培训测试站报名参加测试。目前我省有55个经批准成立的测试站,完全可以满足广大考生的测试需求。 ");
		official.addContent("二、在省外取得普通话水平测试等级证书的考生,申请教师资格认定时需一并提供发证单位所在省份学习或工作经历证明(学生证、毕业证或工作证)的原件及复印件,不能提供者需在户口(或工作、学习)所在地重新报名参加测试。");
		official.addContent("三、广东省各普通话培训测试站严格执行省物价局批准的普通话培训测试收费标准:在校学生85元/次/人,其他人员110元/次/人,广州市和深圳市的收费标准见当地物价局批文,欢迎社会各界及广大考生监督(系统且完整地说明了普通话水平测试的官方办法和相关事宜)。 ");
		official.addContent("特此声明。");
		
		List sealList = new ArrayList<>();
		SealInfo info = new SealInfo();
		info.setName("广东省语言文字培训测试工作办公室");
		info.setDate("2013年10月8日");
		info.setSeal(C1101SealHelloWorld.SEAL1);
		sealList.add(info);
		official.setSeals(sealList);
		
		String digestFileName = TestDocUtil.getOfdFilePath(this.getClass(), "_digest",  false);
		String finalFileName = TestDocUtil.getOfdFilePath(this.getClass(), false);
		official.save(finalFileName);
		
		List signReqList = official.getSignatureRequestList();
		for(int i = 0; signReqList != null && i < signReqList.size(); i++) {
			File ofdFile = new File(finalFileName);
			File digestFile = new File(digestFileName);
			File finalFile = new File(finalFileName);
			SignatureRequest req = signReqList.get(i);
			SeSeal seSeal = req.getSeal();
			OfdSignatureHelper helper = OfdSignatureHelper.newInstance();
			DigestInfo digestInfo = helper.createSm3Digest(ofdFile, digestFile, C1101SealHelloWorld.pubKey, seSeal, req.getBoundary(), req.getClip(), req.getPageRef());
			byte[] digest = digestInfo.getDigest();
			
			/*
			 * 注意:这部分应该使用可靠的签名设备
			 * */
			Sm2Signer signer = new Sm2Signer();
			SM2Signature sign = signer.signWithHash(C1101SealHelloWorld.priKey, digest);
			
			byte[] signature = sign.getEncoded();
			int signVersion = 1;
			ASN1BitString dataHash = new DERBitString(digest);
			ASN1BitString timeInfo = null;//时间戳
			helper.createSm2Signature(digestInfo.getSignatureRoot(), signature, seSeal, C1101SealHelloWorld.pubKey, 
					C1101SealHelloWorld.cert, signVersion, dataHash, timeInfo, digestFile, finalFile);
		}
		
		System.out.println(clzName + " end");
	}

}