启事的特点
启事是党政机关、企事业单位等向社会公众陈述事宜、告知音讯和其请求协助时所使用的告知性文书,通常可以张贴在公共场所或刊登在报纸、杂志上,也可通过广播和电视放映。
启事具有公开性、广泛性、求应性、自主性和简明性等特点。根据事项不同,启事可划分为寻找、征召、周知和声明4类。
启事由标题、正文和落款组成。
显示效果
示例代码所生成的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 C1307QiShi {
public static void main(String[] args) throws Throwable {
C1307QiShi o = new C1307QiShi();
o.done();
}
private void done() throws Throwable {
String clzName = this.getClass().getSimpleName();
System.out.println(clzName + " begin");
OfficialDocument official = new OfficialDocument(OfficialDocumentType.QI_SHI);
List titles = new ArrayList<>();
titles.add("更名启事");
official.setTitles(titles);
official.addContent("经上级有关部门批准,我单位将“××旅游服务中心”更名为“××旅游开发公司”。自××年××月××日起启用新名称,原中心的各种印章即予废除,原来的银行账号不变,原来的一切业务关系及未尽事宜均由“××旅游开发公司”办理。");
List sealList = new ArrayList<>();
SealInfo info = new SealInfo();
info.setName("××旅游开发公司");
info.setDate("××年××月××日");
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");
}
}