//Methode: Zum Erstellen der internen Begründung als PDF public void CreateReasonPdf() { //Laden der PDF-Vorlage in ein ByteArray. "Vorlagenordner" gibt die Bibliothek an und "vorlage" gibt den zu Namen der zu ladenden Datei an. reasonPdf = web.Folders[templateFolder].Files[templateReason].OpenBinary(); //Initialisieren eines PDF-Readers von itextsharp (zum Lesen) using (PdfReader pdfReader = new PdfReader(reasonPdf)) { using (MemoryStream memoryStream = new MemoryStream()) { using (PdfStamper pdfStamper = new PdfStamper(pdfReader, memoryStream, '\0', true)) { //Mit pdfstamper.AcroFields werden alle Formularfelder des PDFs geladen AcroFields formFields = pdfStamper.AcroFields; //Eintragen der Auftragsnummer und der Begründung in entsprechende Formularfelder (Syntax: fields.SetField(<Name des PDF-Feldes>, <string>);) formFields.SetField(fieldReasonOrderNumber, orderNumber); formFields.SetField(fieldReasonReason, root.SelectSingleNode(xReason, nsmgr).Value.ToString()); //Stellen der Felder auf Schreibgeschützt formFields.SetFieldProperty(fieldReasonOrderNumber, "setfflags", PdfFormField.FF_READ_ONLY, null); formFields.SetFieldProperty(fieldReasonReason, "setfflags", PdfFormField.FF_READ_ONLY, null); } //Bis zu dieser Stelle sind alle Editierungen des PDFS nur in einem MemoryStream vorhanden. Durch "ToArray()" wird dieser MemoryStream in ein ByteArray umgewandelt. reasonPdf = memoryStream.ToArray(); } } }
/// <summary> /// A partir do documento de modelo preenche os dados lidos /// </summary> /// <param name="Valores">Valores a serem preenchidos</param> /// <param name="NomeArquivo">Nome do arquivo a Ser gerado</param> private void PreencherModelo(string workFolder_, string caminhoCompletoArquivoAssinatura_, string contrato_, string CPF_, string municipio_, string NomeArquivo) { using (Stream newpdfStream = new FileStream(System.IO.Path.Combine(workFolder_ + "\\" + ConfigurationManager.AppSettings["Bradesco.DiretorioBalde"], NomeArquivo), FileMode.Create, FileAccess.ReadWrite)) { PdfReader pdfReader = new PdfReader(caminhoCompletoArquivoAssinatura_); PdfStamper pdfStamper = new PdfStamper(pdfReader, newpdfStream); AcroFields acroFields = pdfStamper.AcroFields; acroFields.SetField("contrato", contrato_); acroFields.SetField("Cidade", municipio_); acroFields.SetField("Dia", DateTime.Now.ToString("dd")); acroFields.SetField("Ano", DateTime.Now.Year.ToString().Substring(3, 1)); acroFields.SetField("Mes", ToTitleCase(new DateTime(1900, DateTime.Now.Month, 1).ToString("MMMM", new CultureInfo("pt-BR")))); //marcando os campos como somente leitura acroFields.SetFieldProperty("contrato", "setfflags", PdfFormField.FF_READ_ONLY, null); acroFields.SetFieldProperty("Cidade", "setfflags", PdfFormField.FF_READ_ONLY, null); acroFields.SetFieldProperty("Dia", "setfflags", PdfFormField.FF_READ_ONLY, null); acroFields.SetFieldProperty("Ano", "setfflags", PdfFormField.FF_READ_ONLY, null); acroFields.SetFieldProperty("Mes", "setfflags", PdfFormField.FF_READ_ONLY, null); acroFields = null; pdfStamper.Close(); pdfReader.Close(); pdfReader.Dispose(); pdfStamper.Dispose(); newpdfStream.Close(); newpdfStream.Dispose(); } }
static void set_field(AcroFields form, string field_key, string value) { //BaseFont bf = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, false, null, null, false); if (baseFont != null) { form.SetFieldProperty(field_key, "textfont", baseFont, null); } if (fontSize != null) { form.SetFieldProperty(field_key, "textsize", fontSize, null); } form.SetField(field_key, value); }
public static void SetTotalReport(this AcroFields fields, CardOrder cardOrder, MonthReport report) { var initIndex = getInitIndexForMonth(formNumber, 13); fields.SetFieldProperty("Text" + (initIndex + 1), "textsize", 8f, null); fields.SetField("Text" + (initIndex + 1), report.Placements.ToString()); fields.SetFieldProperty("Text" + (initIndex + 2), "textsize", 8f, null); fields.SetField("Text" + (initIndex + 2), report.VideoShowings.ToString()); fields.SetFieldProperty("Text" + (initIndex + 3), "textsize", 8f, null); fields.SetField("Text" + (initIndex + 3), report.Hours.ToString()); fields.SetFieldProperty("Text" + (initIndex + 4), "textsize", 8f, null); fields.SetField("Text" + (initIndex + 4), report.ReturnVisits.ToString()); fields.SetFieldProperty("Text" + (initIndex + 6), "textsize", 8f, null); fields.SetField("Text" + (initIndex + 6), report.Remarks); }
public void FillForm( Dictionary <string, string> items, Stream formStream) { PdfStamper pdfStamper = new PdfStamper(pdfReader, formStream); AcroFields pdfFormFields = pdfStamper.AcroFields; BaseFont arialBaseFont; string arialFontPath; try { arialFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF"); arialBaseFont = BaseFont.CreateFont(arialFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); } catch (IOException) { arialFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIAL.TTF"); arialBaseFont = BaseFont.CreateFont(arialFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); } pdfFormFields.AddSubstitutionFont(arialBaseFont); foreach (KeyValuePair <string, string> item in items) { pdfFormFields.SetFieldProperty(item.Key, "textfont", arialBaseFont, null); if (item.Value != null) { pdfFormFields.SetField(item.Key, item.Value); } } pdfStamper.FormFlattening = false; pdfStamper.Close(); }
public void SetFieldProperty(AcroFields fields, string[] fieldsToDisable) { for (int i = 0; i < fieldsToDisable.Length; i++) { fields.SetFieldProperty(fieldsToDisable[i], "setfflags", PdfFormField.FF_READ_ONLY, null); } }
public static void GeneratePDF(string modelFile, Dictionary <string, string> contents, string outputPath) { BaseFont baseFont = BaseFont.CreateFont("font.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); PdfReader reader = new PdfReader(modelFile); MemoryStream stream = new MemoryStream(); PdfStamper stamp = new PdfStamper(reader, stream); AcroFields form = stamp.AcroFields; stamp.FormFlattening = true; foreach (KeyValuePair <string, string> parameter in contents) { form.SetFieldProperty(parameter.Key, "textfont", baseFont, null); form.SetField(parameter.Key, parameter.Value); } stamp.Close(); reader.Close(); FileStream fs = new FileStream(outputPath, FileMode.Create); var array = stream.ToArray(); fs.Write(array, 0, array.Length); fs.Flush(); stream.Close(); fs.Close(); }
/// <summary> /// 获取文件byte /// </summary> /// <param name="fontPath">字体路径</param> /// <param name="templatePath">模版路径</param> /// <param name="printPara">填充表单数据</param> /// <returns></returns> public static byte[] GetPdfByte(string fontPath, string templatePath, Dictionary <string, string> printPara) { //获取中文字体,第三个参数表示为是否潜入字体,但只要是编码字体就都会嵌入。 BaseFont baseFont = BaseFont.CreateFont($"{fontPath}", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); //读取模板文件 PdfReader reader = new PdfReader(templatePath); //创建文件流用来保存填充模板后的文件 MemoryStream stream = new MemoryStream(); PdfStamper stamp = new PdfStamper(reader, stream); //设置表单字体,在高版本有用,高版本加入这句话就不会插入字体,低版本无用 stamp.AcroFields.AddSubstitutionFont(baseFont); AcroFields form = stamp.AcroFields; //表单文本框是否锁定 stamp.FormFlattening = true; //填充表单,para为表单的一个(属性-值)字典 foreach (KeyValuePair <string, string> parameter in printPara) { //要输入中文就要设置域的字体; form.SetFieldProperty(parameter.Key, "textfont", baseFont, null); //为需要赋值的域设置值; form.SetField(parameter.Key, parameter.Value); } //按顺序关闭io流 stamp.Close(); reader.Close(); return(stream.ToArray()); }
private static void SetReadOnly(AcroFields fields, IEnumerable <string> ListOfFields) { foreach (var field in ListOfFields) { fields.SetFieldProperty(field, "setfflags", PdfFormField.FF_READ_ONLY, null); } }
// --------------------------------------------------------------------------- public byte[] FillTemplate(byte[] pdf, Movie movie) { using (MemoryStream ms = new MemoryStream()) { PdfReader reader = new PdfReader(pdf); using (PdfStamper stamper = new PdfStamper(reader, ms)) { AcroFields form = stamper.AcroFields; BaseColor color = WebColors.GetRGBColor( "#" + movie.entry.category.color ); PushbuttonField bt = form.GetNewPushbuttonFromField(POSTER); bt.Layout = PushbuttonField.LAYOUT_ICON_ONLY; bt.ProportionalIcon = true; bt.Image = Image.GetInstance(Path.Combine(IMAGE, movie.Imdb + ".jpg")); bt.BackgroundColor = color; form.ReplacePushbuttonField(POSTER, bt.Field); PdfContentByte canvas = stamper.GetOverContent(1); float size = 12; AcroFields.FieldPosition f = form.GetFieldPositions(TEXT)[0]; while (AddParagraph(CreateMovieParagraph(movie, size), canvas, f, true) && size > 6) { size -= 0.2f; } AddParagraph(CreateMovieParagraph(movie, size), canvas, f, false); form.SetField(YEAR, movie.Year.ToString()); form.SetFieldProperty(YEAR, "bgcolor", color, null); form.SetField(YEAR, movie.Year.ToString()); stamper.FormFlattening = true; } return(ms.ToArray()); } }
public Stream FillForm(Stream inputStream, Models.PDF.Invoice model) { Stream outStream = new MemoryStream(); PdfReader pdfReader = null; PdfStamper pdfStamper = null; Stream inStream = null; try { pdfReader = new PdfReader(inputStream); pdfStamper = new PdfStamper(pdfReader, outStream); AcroFields form = pdfStamper.AcroFields; Font font = GetTHSarabunNew(); foreach (string key in form.Fields.Keys) { form.SetFieldProperty(key, "textfont", font.BaseFont, null); form.RegenerateField(key); } form.SetField("txt_CustomerName", "เจนวิทย์ เพ็ญจำรัส"); // form.SetField("rdb_ans_1","Choice1"); // form.SetField("txt_CardName", model.CardName); //form.SetField("txt_DocNum", model.Docnum); // set this if you want the result PDF to not be editable. pdfStamper.FormFlattening = true; return(outStream); } finally { pdfStamper?.Close(); pdfReader?.Close(); inStream?.Close(); } }
public void GetChPdf(string templatePath, string newFilePath, Dictionary <string, string> parameters) { PdfReader pdfReader = new PdfReader(templatePath); PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFilePath, FileMode.Create)); AcroFields acroFields = pdfStamper.AcroFields; BaseFont value = BaseFont.CreateFont("C:\\Windows\\Fonts\\simsun.ttc,0", "Identity-H", true); foreach (KeyValuePair <string, string> parameter in parameters) { acroFields.SetFieldProperty(parameter.Key, "textfont", value, null); acroFields.SetField(parameter.Key, parameter.Value); } for (int i = 0; i < CheckList.Count; i++) { int nDataLength = 0; DllImageFuc.GetImageDataRoiFunc(InfoStruct, SlideZoom, CheckList[i].GlobalPosX, CheckList[i].GlobalPosY, CheckList[i].Width, CheckList[i].Height, out IntPtr datas, ref nDataLength, true); byte[] array = new byte[nDataLength]; if (datas != IntPtr.Zero) { Marshal.Copy(datas, array, 0, nDataLength); } DllImageFuc.DeleteImageDataFunc(datas); iTextSharp.text.Image instance = iTextSharp.text.Image.GetInstance(array); instance.ScaleAbsoluteWidth(40f); instance.ScaleAbsoluteHeight(40f); instance.SetAbsolutePosition(40 + i * 50 + 10, 400f); PdfContentByte overContent = pdfStamper.GetOverContent(1); overContent.AddImage(instance); } pdfStamper.FormFlattening = true; pdfStamper.Close(); pdfReader.Close(); }
public byte[] importXml(byte[] inputPdf, Stream xmlData, Boolean isSign) { Console.WriteLine("Read PDF"); PdfReader reader = new PdfReader(inputPdf); MemoryStream output = new MemoryStream(); PdfStamper stamper = new PdfStamper(reader, output, '\0', false); AcroFields form = stamper.AcroFields; XfaForm xfa = form.Xfa; Console.WriteLine("Fill Data"); xfa.FillXfaForm(xmlData); Console.WriteLine("Set fields to read only"); if (!isSign) { foreach (string key in form.Fields.Keys) { form.SetFieldProperty(key, "setfflags", PdfFormField.FF_READ_ONLY, null); } } stamper.Close(); reader.Close(); return(output.ToArray()); }
/// <summary> /// Set font family and font size on all text fields for consistency /// </summary> /// <param name="stamperFields"> /// PdfStamper.AcroFields - so we can set the form field value here. /// </param> /// <param name="family">BaseFont</param> /// <param name="size">Desired size</param> public static void SetTemplateFont(AcroFields stamperFields, BaseFont family, float size) { // ignore everything except text fields var textFields = stamperFields.Fields.Keys .Where(x => stamperFields.GetFieldType(x) == AcroFields.FIELD_TYPE_TEXT && GetFontSize(stamperFields, x) != 0f ) .ToDictionary(k => k); Console.WriteLine(string.Join(" :: ", textFields.Keys.ToArray())); foreach (var key in textFields.Keys) { stamperFields.SetFieldProperty(key, "textfont", family, null); stamperFields.SetFieldProperty(key, "textsize", size, null); } }
public void Go() { var outputFile = Helpers.IO.GetClassOutputPath(this); var testField = "title"; var testText = "0"; List <string> testTextList = new List <string>(); for (int i = 1; i <= 76; ++i) { testTextList.Add(string.Format("{0}[{1}]", testText, i)); } var baseFont = BaseFont.CreateFont(); float testSize = 8f; char delimiter = ','; var testJoined = string.Join(delimiter.ToString(), testTextList.ToArray()); using (var reader = Helpers.IO.GetInputReader(fileName)) { using (var stream = new FileStream(outputFile, FileMode.Create)) { using (var stamper = new PdfStamper(reader, stream)) { AcroFields fields = stamper.AcroFields; var width = fields.GetFieldPositions("title")[0].position.Width; fields.SetFieldProperty( testField, "textfont", baseFont, null ); fields.SetFieldProperty( testField, "textsize", testSize, null ); string fit; string over; Console.WriteLine("TEST STRING: {0}\n", testJoined); FitSingleLine(fields, testJoined, "title", out fit, out over); Console.WriteLine("fit: {0}\n", fit); Console.WriteLine("over: {0}\n", over); fields.SetField(testField, fit); } } } }
public static AcroFields LockFields(this AcroFields pdfForm, string[] formFields) { foreach (var formField in formFields) { pdfForm.SetFieldProperty(formField, "setfflags", PdfFormField.FF_READ_ONLY, null); } return(pdfForm); }
public static bool GetPdf(string templatePath, string newFilePath, Dictionary <string, string> parameters) { bool result = true; try { PdfReader pdfReader = new PdfReader(templatePath); PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFilePath, FileMode.Create)); //加密 pdfStamper.SetEncryption(PdfWriter.STRENGTH128BITS, "", null, PdfWriter.AllowPrinting); //通过iTextAsian调用中文字体 //iTextSharp.text.io.StreamUtil.AddToResourceSearch(Assembly.LoadFile(Utils.GetMapPath(Utils.GetAppSettingValue("appName")+"lib/iTextAsian.dll"))); //iTextSharp.text.io.StreamUtil.AddToResourceSearch(Assembly.LoadFile(Utils.GetMapPath(Utils.GetAppSettingValue("appName") + "lib/iTextAsianCmaps.dll"))); //BaseFont baseFT = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED); // BaseFont baseFT1 = BaseFont.CreateFont("MHei-Medium", "UniCNS-UCS2-H", BaseFont.EMBEDDED); //调用系统字体 BaseFont baseFT = BaseFont.CreateFont(@"C:\Windows\Fonts\MSYH.TTC,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //BaseFont baseFT1 = BaseFont.CreateFont(@"C:\Windows\Fonts\msyhbd.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); BaseFont baseFT1 = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); //获取域的集合; AcroFields pdfFormFields = pdfStamper.AcroFields; //设置域的字体;生成文件几十K pdfFormFields.AddSubstitutionFont(baseFT); //为需要赋值的域设置值; foreach (KeyValuePair <string, string> parameter in parameters) { if (parameter.Key == "titile") { pdfFormFields.SetFieldProperty(parameter.Key, "textfont", baseFT1, null); } //pdfFormFields.SetFieldProperty(parameter.Key, "textfont", baseFT, null );//生成文件过大(十几MB左右) 摒弃掉了 pdfFormFields.SetField(parameter.Key, parameter.Value); } //这句很重要,如果为false那么生成的PDF文件还能编辑,一定要设为true; pdfStamper.FormFlattening = true; pdfStamper.Close(); pdfReader.Close(); } catch { result = false; throw; } return(result); }
/// <summary> /// 根据数据填充模板并获取一个一个pdf文件流 /// </summary> /// <param name="listPara">数据参数</param> /// <returns>所有的pdf文件字节数组,并装在一个数组中</returns> public static List <byte[]> GetPdfs(List <Dictionary <string, string> > listPara) { //获取中文字体,第三个参数表示为是否潜入字体,但只要是编码字体就都会嵌入。 BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); List <byte[]> pdfStreams = new List <byte[]>(); foreach (Dictionary <string, string> para in listPara) { //读取模板文件 PdfReader reader = new PdfReader(@"C:\Users\Administrator\Desktop\template.pdf"); //创建文件流用来保存填充模板后的文件 MemoryStream stream = new MemoryStream(); PdfStamper stamp = new PdfStamper(reader, stream); stamp.AcroFields.AddSubstitutionFont(baseFont); AcroFields form = stamp.AcroFields; stamp.FormFlattening = true;//表单文本框锁定 //填充表单 foreach (KeyValuePair <string, string> parameter in para) { //要输入中文就要设置域的字体; form.SetFieldProperty(parameter.Key, "textfont", baseFont, null); //为需要赋值的域设置值; form.SetField(parameter.Key, parameter.Value); } //添加图片 // 通过域名获取所在页和坐标,左下角为起点 float[] positions = form.GetFieldPositions("sender"); int pageNo = (int)positions[0]; float x = positions[1]; float y = positions[2]; // 读图片 Image image = Image.GetInstance(@"C:\Users\Administrator\Desktop\02.png"); // 获取操作的页面 PdfContentByte under = stamp.GetOverContent(pageNo); // 根据域的大小缩放图片 image.ScaleToFit(positions[3] - positions[1], positions[4] - positions[2]); // 添加图片 image.SetAbsolutePosition(x, y); under.AddImage(image); stamp.Close(); reader.Close(); byte[] result = stream.ToArray(); pdfStreams.Add(result); } return(pdfStreams); }
public void FillOut(String src, String dest, String name, String value) { PdfReader reader = new PdfReader(src); PdfStamper stamper = new PdfStamper(reader, new FileStream(dest, FileMode.Create), '\0', true); AcroFields form = stamper.AcroFields; form.SetField(name, value); form.SetFieldProperty(name, "setfflags", PdfFormField.FF_READ_ONLY, null); stamper.Close(); }
// --------------------------------------------------------------------------- /** * Manipulates a PDF file src with the file dest as result * @param src the original PDF */ public byte[] ManipulatePdf(byte[] src) { PdfReader reader = new PdfReader(src); using (MemoryStream ms = new MemoryStream()) { using (PdfStamper stamper = new PdfStamper(reader, ms)) { AcroFields form = stamper.AcroFields; form.SetField("text_1", "Bruno Lowagie"); form.SetFieldProperty("text_2", "fflags", 0, null); form.SetFieldProperty("text_2", "bordercolor", BaseColor.RED, null); form.SetField("text_2", "bruno"); form.SetFieldProperty("text_3", "clrfflags", TextField.PASSWORD, null); form.SetFieldProperty("text_3", "setflags", PdfAnnotation.FLAGS_PRINT, null); form.SetField("text_3", "12345678", "xxxxxxxx"); form.SetFieldProperty("text_4", "textsize", 12f, null); form.RegenerateField("text_4"); } return(ms.ToArray()); } }
public void FillOutAndSign(String keystore, String src, String name, String fname, String value, String dest) { Pkcs12Store store = new Pkcs12Store(new FileStream(keystore, FileMode.Open), PASSWORD); String alias = ""; ICollection <X509Certificate> chain = new List <X509Certificate>(); // searching for private key foreach (string al in store.Aliases) { if (store.IsKeyEntry(al) && store.GetKey(al).Key.IsPrivate) { alias = al; break; } } AsymmetricKeyEntry pk = store.GetKey(alias); foreach (X509CertificateEntry c in store.GetCertificateChain(alias)) { chain.Add(c.Certificate); } RsaPrivateCrtKeyParameters parameters = pk.Key as RsaPrivateCrtKeyParameters; PdfReader reader = new PdfReader(src); FileStream os = new FileStream(dest, FileMode.Create); PdfStamper stamper = PdfStamper.CreateSignature(reader, os, '\0', null, true); AcroFields form = stamper.AcroFields; form.SetField(fname, value); form.SetFieldProperty(name, "setfflags", PdfFormField.FF_READ_ONLY, null); form.SetFieldProperty(fname, "setfflags", PdfFormField.FF_READ_ONLY, null); // Creating the appearance PdfSignatureAppearance appearance = stamper.SignatureAppearance; appearance.SetVisibleSignature(name); // Creating the signature PrivateKeySignature pks = new PrivateKeySignature(parameters, DigestAlgorithms.SHA256); MakeSignature.SignDetached(appearance, pks, chain, null, null, null, 0, CryptoStandard.CMS); }
public void DisableFields(string oldPdfPath, string newPdfPath, string[] fieldsToDisable) { PdfReader reader = new PdfReader(oldPdfPath); using (PdfStamper stamper = new PdfStamper(reader, new FileStream(newPdfPath, FileMode.Create))) { AcroFields form = stamper.AcroFields; for (int i = 0; i < fieldsToDisable.Length; i++) { form.SetFieldProperty(fieldsToDisable[i], "setfflags", PdfFormField.FF_READ_ONLY, null); } } }
private static void SetWeapons(ICharacter character, AcroFields form) { var n = 1; foreach (var weapon in character.Weapons.Take(3)) { form.SetField($"Wpn{n} Name", weapon.Name); form.SetField($"Wpn{n} AtkBonus", $"{createAttackBonus(character, weapon)}"); form.SetField($"Wpn{n} Damage", createDamageString(character, weapon)); n++; } String additionalWeapons = ""; foreach (var weapon in character.Weapons.Skip(3)) { additionalWeapons += weapon.Name + "; " + "Atk +" + createAttackBonus(character, weapon) + "; " + createDamageString(character, weapon) + Environment.NewLine; } form.SetFieldProperty("AttacksSpellcasting", "textsize", 8f, null); form.SetField("AttacksSpellcasting", additionalWeapons); int?createAttackBonus(ICharacter person, Weapon weapon) { var statSearch = StatSearch(weapon); var attack = person.Abilities.FirstOrDefault(x => x.Name == statSearch)?.Bonus + weapon.AttackBonus; if (weapon.Prof) { if (int.TryParse(person.Properities?.FirstOrDefault(x => x.Name == "ProfBonus")?.Value, out var intOut)) { attack += intOut; } } return(attack); } string createDamageString(ICharacter person, Weapon weapon) { var damageString = string.Empty; foreach (var damage in weapon.Damages) { damageString = string.IsNullOrWhiteSpace(damageString) ? "" : damageString + " & "; damageString += $"{damage.Dice} + {person.Abilities.FirstOrDefault(x => x.Name == (damage.Stat == "base" ? StatSearch(weapon) : damage.Stat))?.Bonus + int.Parse(damage.Bonus)} {damage.Type}"; } return(damageString); } }
/// <summary> /// Установка значения текстового поля с использованием шрифта, определенного для этого поля или первого подходящего шрифта, при невозможности использования шрифта поля.. /// </summary> /// <param name="form">Объект формы.</param> /// <param name="reader">Объект чтения из шаблона PDF.</param> /// <param name="fonts">Список всех шрифтов формы.</param> /// <param name="fieldName">Имя поля формы.</param> /// <param name="value">Значение поля формы.</param> public static void SetFieldWithFont(this AcroFields form, PdfReader reader, PdfDictionary fonts, string fieldName, string value) { var fontName = FindFieldFontName(reader, fieldName); if (!string.IsNullOrWhiteSpace(fontName)) { var font = FindFontInFontDict(fonts, fontName); if (font != null) { form.SetFieldProperty(fieldName, "textfont", font, null); } } form.SetField(fieldName, value); }
public FileResult Index() { //获取中文字体,第三个参数表示为是否潜入字体,但只要是编码字体就都会嵌入。 BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //读取模板文件 PdfReader reader = new PdfReader(@"G:\简版征信PDF样本\陈贵年 2019.08.06个人信用报告.pdf"); //创建文件流用来保存填充模板后的文件 System.IO.MemoryStream stream = new System.IO.MemoryStream(); PdfStamper stamp = new PdfStamper(reader, stream); //设置表单字体,在高版本有用,高版本加入这句话就不会插入字体,低版本无用 //stamp.AcroFields.AddSubstitutionFont(baseFont); AcroFields form = stamp.AcroFields; //表单文本框是否锁定 stamp.FormFlattening = true; Dictionary <string, string> para = new Dictionary <string, string>(); para.Add("username", "国科"); para.Add("usertel", "133333333"); para.Add("workservice", "电脑开不机,可能是电源问题,维修前报价(主机缺侧盖,有重要资料,不能重装)"); para.Add("maketime", "2017年12月11日 12:24"); para.Add("recvicename", "某某某"); para.Add("workername", "某某某"); para.Add("weixinpic", ""); //填充表单,para为表单的一个(属性-值)字典 foreach (KeyValuePair <string, string> parameter in para) { //要输入中文就要设置域的字体; form.SetFieldProperty(parameter.Key, "textfont", baseFont, null); //为需要赋值的域设置值; form.SetField(parameter.Key, parameter.Value); } //按顺序关闭io流 stamp.Close(); reader.Close(); //生成文件 FileResult fileResult = new FileContentResult(stream.ToArray(), "application/pdf"); //fileResult.FileDownloadName = "4.pdf"; return(fileResult); }
public FillPDF(string template) { pdfTemplate = template; pdfreader = new PdfReader(pdfTemplate + "blankapp.pdf"); myPDF = new ByteBuffer(); pdfStamper = new PdfStamper(pdfreader, myPDF); pdfFormFields = pdfStamper.AcroFields; additionalHealthAnswers = new List <ByteBuffer>(); foreach (DictionaryEntry f in pdfreader.AcroFields.Fields) { pdfFormFields.SetFieldProperty(f.Key.ToString(), "textsize", (float)0.0, null); } }
/** * Manipulates a PDF file src with the file dest as result * @param src the original PDF */ public byte[] ManipulatePdfFont1(byte[] src) { PdfReader reader = new PdfReader(src); using (MemoryStream ms = new MemoryStream()) { using (PdfStamper stamper = new PdfStamper(reader, ms)) { AcroFields form = stamper.AcroFields; BaseFont unicode = BaseFont.CreateFont( "HYSMyeongJoStd-Medium", "UniKS-UCS2-H", BaseFont.NOT_EMBEDDED ); form.SetFieldProperty("description", "textfont", unicode, null); form.SetField("description", BINJIP); } return(ms.ToArray()); } }
public void Disable(string populatedFilePath, string readOnlyFilePath) { PdfReader reader = new PdfReader(populatedFilePath); List <string> readOnlyFields = CreateList(); using (PdfStamper stamper = new PdfStamper(reader, new FileStream(readOnlyFilePath, FileMode.Create))) { AcroFields fields = stamper.AcroFields; foreach (var value in readOnlyFields) { fields.SetFieldProperty(value, "setfflags", PdfFormField.FF_READ_ONLY, null); } stamper.Close(); } }
/// <summary> /// 根据填充内容获得一页的PDF文件内容 /// </summary> /// <param name="pdf1">模板文件</param> /// <param name="lfi">数据LIST</param> /// <param name="buf">返回的BUFFER</param> /// <returns>0为不成功</returns> public static int Get1PageBuf(string pdf1, List <FieldInfo> lfi, out byte[] buf) { int iret = 0; MemoryStream ms = new MemoryStream(); PdfReader reader = new PdfReader(pdf1); PdfStamper stamp1 = new PdfStamper(reader, ms); //不关闭流 stamp1.Writer.CloseStream = false; AcroFields form1 = stamp1.AcroFields; //BaseFont.AddToResourceSearch("iTextAsian.dll"); //BaseFont.AddToResourceSearch("iTextAsianCmaps.dll"); BaseFont.AddToResourceSearch(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\bin\\iTextAsian.dll"); BaseFont.AddToResourceSearch(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\bin\\iTextAsianCmaps.dll"); BaseFont font = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED); //以下为填写表单部分 for (int i = 0; i < lfi.Count; i++) { form1.SetFieldProperty(lfi[i].FieldName, "textfont", font, null); form1.SetField(lfi[i].FieldName, lfi[i].FieldValue); } //一下仅用于进度条start CProcessInfo info = HttpContext.Current.Session["ProcessInfo"] as CProcessInfo; info.Message = lfi[0].FieldValue + "创建打印文件完成"; info.Current++; //一下仅用于进度条end stamp1.FormFlattening = true; stamp1.Close(); buf = ms.GetBuffer(); iret = 1; return(iret); }
// --------------------------------------------------------------------------- /** * Shows the stream passed to the server with POST */ protected void DoPost(byte[] pdf, Stream stream) { // We get a resource from our web app PdfReader reader = new PdfReader(pdf); // Now we create the PDF using (PdfStamper stamper = new PdfStamper(reader, stream)) { // We alter the fields of the existing PDF AcroFields fields = stamper.AcroFields; fields.SetFieldProperty( "personal.password", "clrfflags", TextField.PASSWORD, null ); var req_form = WebContext.Request.Form; foreach (string k in req_form) { fields.SetField(k, req_form[k]); } stamper.FormFlattening = true; } }