public static void FlatPDFonlyFistPage(List <string> files) { LogHelper.Log("Flatt all PDF comments", LogType.Successful); foreach (var file in files) { string OutFile = $"{Path.GetDirectoryName(file)}{Path.DirectorySeparatorChar}{Path.GetFileNameWithoutExtension(file)}_flat.pdf"; LogHelper.Log($"Flattening file: { Path.GetFileNameWithoutExtension(file)}"); using (FileStream stream = new FileStream(OutFile, FileMode.Create)) { PdfReader reader = null; PdfStamper stamper = null; try { var memStream1 = new MemoryStream(); reader = new PdfReader(file); reader.SelectPages("1"); stamper = new PdfStamper(reader, memStream1) { FormFlattening = true, AnnotationFlattening = true, FreeTextFlattening = true, }; stamper.Close(); PdfReader readerfirstPage = new PdfReader(memStream1.ToArray()); Document doc = new Document(); PdfCopy pdf = new PdfCopy(doc, stream); doc.Open(); pdf.AddDocument(readerfirstPage); PdfReader readerOtherPages = new PdfReader(file); if (readerOtherPages.NumberOfPages > 2) { readerOtherPages.SelectPages($"2-{readerOtherPages.NumberOfPages}"); pdf.AddDocument(readerOtherPages); } doc.Close(); pdf.Close(); } catch (Exception e) { LogHelper.Log(e.ToString(), LogType.Error); reader?.Close(); } finally { reader?.Close(); } } } }
/// <summary> /// Add PdfFile /// </summary> /// <param name="fullpath"></param> public void Add(string fullpath, List <Dictionary <String, Object> > parentBookmarks) { var pdfFilename = Path.GetFileName(fullpath); PdfReader reader = null; try { // Open PDF reader = new PdfReader(fullpath); // Although this method seems to have a large memory consumption, it is troublesome as this is done copy.AddDocument(reader); AddBookmark(reader, pdfFilename, parentBookmarks); // Update count of pages pageCount += reader.NumberOfPages; } catch (Exception e) { logger?.LogError(e, $"Failed to join {pdfFilename}"); throw; } finally { reader?.Close(); } }
/// <summary> /// Takes an ordered list of files and merges them into one output file. /// </summary> /// <param name="mergeList">An ordered list of file paths.</param> /// <returns>The path to merged file created in this method.</returns> private static string MergeOrderedList(IEnumerable <string> mergeList) { var filename = Guid.NewGuid() + ".pdf"; var outfileFullPath = Path.Combine(Constants.InputDirectory.FullName, filename); using (var stream = new FileStream(outfileFullPath, FileMode.Create)) using (var doc = new Document()) using (var pdf = new PdfCopy(doc, stream)) { PdfReader reader = null; doc.Open(); foreach (var file in mergeList) { reader = new PdfReader(file); for (var i = 0; i < reader.NumberOfPages; i++) { var page = pdf.GetImportedPage(reader, i + 1); pdf.AddPage(page); } } pdf.FreeReader(reader); reader?.Close(); } return(outfileFullPath); }
private string ReadPDF(string filePath) { var builder = new StringBuilder(); PdfReader document = null; try { document = new PdfReader(filePath); for (int i = 1; i <= document.NumberOfPages; i++) { byte[] stream = document.GetPageContent(i); var tokenizer = new PRTokeniser(new RandomAccessFileOrArray(stream)); while (tokenizer.NextToken()) { if (tokenizer.TokenType == PRTokeniser.TokType.STRING) { builder.Append(tokenizer.StringValue); } } } } catch (Exception e) { builder.Append(e.Message); } finally { document?.Close(); } return(builder.ToString()); }
private static void Merge <TSource>(Stream target, Func <TSource, PdfReader> createPdfReader, params TSource[] sources) { if (sources.Length == 0) { throw new ArgumentException("At least one source must be given."); } Document document = null; PdfReader reader = null; try { document = new Document(); PdfCopy pdf = new PdfCopy(document, target); document.Open(); foreach (TSource file in sources) { reader = createPdfReader(file); pdf.AddDocument(reader); reader.Close(); } } catch (Exception e) { reader?.Close(); throw new PdfMergeFailedException("Failed to merge pdfs", e); } finally { document?.Close(); } }
public Stream FillForm(Stream inputStream, Profile profile) { 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; form.SetField("FirstName", $"{profile.FirstName}"); form.SetField("LastName", $"{profile.LastName}"); form.SetField("IDNumber", $"{profile.IDNumber}"); form.SetField("Nationality", $"{profile.Nationality}"); form.SetField("Email", $"{profile.Email}"); form.SetField("PhoneNumber", $"{profile.PhoneNumber}"); pdfStamper.FormFlattening = true; return(outStream); } finally { pdfStamper?.Close(); pdfReader?.Close(); inStream?.Close(); } }
public Stream FromValues(string pdfTemplate, IDictionary <string, string> values) { var pdfStream = new FileStream(path: pdfTemplate, mode: FileMode.Open); var outStream = new MemoryStream(); PdfReader pdfReader = null; PdfStamper pdfStamper = null; try { pdfReader = new PdfReader(pdfStream); pdfStamper = new PdfStamper(pdfReader, outStream); AcroFields form = pdfStamper.AcroFields; foreach (string f in values.Keys) { form.SetField(f, values[f]); } // set this if you want the result PDF to not be editable. pdfStamper.FormFlattening = true; return(outStream); } finally { pdfStamper?.Close(); pdfReader?.Close(); } }
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 Stream FillForm(Stream inputStream, PDFSampleForm 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; form.SetField(SampleFormFieldNames.FirstName, model.FirstName); form.SetField(SampleFormFieldNames.LastName, model.LastName); form.SetField(SampleFormFieldNames.IAmAwesomeCheck, model.AwesomeCheck ? "Yes" : "Off"); // set this if you want the result PDF to be uneditable. pdfStamper.FormFlattening = true; return(outStream); } finally { pdfStamper?.Close(); pdfReader?.Close(); inStream?.Close(); } }
public string CreateInvoiceForOrder() { // build in checks.... PdfReader pdfReader = null; PdfStamper pdfStamper = null; try { pdfReader = new PdfReader(_template); pdfStamper = new PdfStamper(pdfReader, _outputFile); AcroFields form = pdfStamper.AcroFields; // Company address form.SetField("Company Name", "Food shop NV"); form.SetField("Email Address", "*****@*****.**"); form.SetField("Address 1", "Teststraat 11, 9000 Gent"); form.SetField("Address 2", "+32 484/26.23.55"); // Client address form.SetField("Client Name", _customer.Name + " " + _customer.LastName); form.SetField("Client Email Address", _customer.EmailAddress); form.SetField("Client Address 1", _customer.Address.Street + " " + _customer.Address.StreetNumber); form.SetField("Client Address 2", _customer.Address.PostalCode + " " + _customer.Address.City + " " + _customer.Address.Country); // Order data form.SetField("Due Date", DateTime.Today.ToString("dd/MM/yyyy")); form.SetField("Date", DateTime.Today.ToString("dd/MM/yyyy")); form.SetField("Invoice Number", _order.InvoiceId); for (int i = 1; i < (_orderLines.Count + 1); i++) { form.SetField("Item Description Row " + i, _orderLines[i - 1].Item); form.SetField("Quantity Row " + i, "st " + _orderLines[i - 1].QtyOrdered.ToString()); form.SetField("Price Row " + i, "€ " + Math.Round(_orderLines[i - 1].Price, 2).ToString()); form.SetField("Amount Row " + i, "€ " + Math.Round(_orderLines[i - 1].Price * _orderLines[i - 1].QtyOrdered, 2).ToString()); } form.SetField("Amount_5", "€ " + Math.Round(_order.TotalPrice, 2).ToString()); form.SetField("Amount_6", "% 6"); form.SetField("Amount_7", "€ " + Math.Round(_order.TotalPrice * 1.06M, 2).ToString()); form.SetField("Notes", "Thanks for your order!"); } finally { pdfStamper?.Close(); pdfReader?.Close(); _template?.Close(); _outputFile?.Close(); } return((_outputFile as FileStream).Name); }
public static void FlatPDF(List <string> files) { LogHelper.Log("Flatt all PDF comments", LogType.Successful); foreach (var file in files) { string OutFile = $"{Path.GetDirectoryName(file)}{Path.DirectorySeparatorChar}{Path.GetFileNameWithoutExtension(file)}_flat.pdf"; LogHelper.Log($"Flattening file: { Path.GetFileNameWithoutExtension(file)}"); using (FileStream stream = new FileStream(OutFile, FileMode.Create)) { PdfReader reader = null; PdfStamper stamper = null; try { reader = new PdfReader(file); stamper = new PdfStamper(reader, stream) { FormFlattening = true, AnnotationFlattening = true, FreeTextFlattening = true, }; stamper.Close(); } catch (Exception e) { LogHelper.Log(e.ToString(), LogType.Error); reader?.Close(); } finally { reader?.Close(); } } } }
public ICollection GetFormFields(Stream pdfStream) { PdfReader reader = null; try { PdfReader pdfReader = new PdfReader(pdfStream); AcroFields acroFields = pdfReader.AcroFields; return(acroFields.Fields.Keys); } finally { reader?.Close(); } }
// ToDo: Функция по закрытию документов точно нужна? private void Close() { if (!IsOpen) { throw new Exception("Pdf file is not open! Please first load and open file!"); } _document?.Close(); _reader?.Close(); _document = null; _reader = null; _isOpen = false; }
public PdfInfo(string file) { try { reader = new PdfReader(file); NumberOfPages = reader.NumberOfPages; SignatureNames = reader.AcroFields.GetSignatureNames().AsReadOnly(); } catch (Exception e) { throw new ReadingPdfInfoFailedException($"Failed to read information from pdf file {file}", e); } finally { reader?.Close(); } }
public static void VerifyPdfFileIsReadable(byte[] file) { PdfReader reader = null; try { reader = new PdfReader(file); var author = reader.Info["Author"] as string; if (string.IsNullOrWhiteSpace(author) || !author.Equals("Vahid")) { throw new InvalidPdfException("This is not a valid PDF file."); } } finally { reader?.Close(); } }
public static int GetNumberOfPages(string filePath) { PdfReader reader = null; try { reader = new PdfReader(File.ReadAllBytes(filePath)); int numPage = reader.NumberOfPages; return(numPage); } catch (Exception ex) { return(1); } finally { reader?.Close(); } }
private Dictionary <string, string> LoadTemplateData() { PdfReader pdfReader = null; try { pdfReader = new PdfReader(_templatePath); var acroFields = pdfReader.AcroFields; var parametros = new Dictionary <string, string>(); foreach (var item in acroFields.Fields.Keys) { parametros.Add(item.ToString(), string.Empty); } return(parametros); } finally { pdfReader?.Close(); } }
public static async Task <object> Handle(string organizationId, RosterRequest request) { var reportOptions = JsonSerializer.Deserialize <TaggingDataFormReportOptionsDto>(request.body.GetRawText()); var fileTimestamp = $"{DateTime.Now:yyyyMMddHHmmss} UTC"; const string baseMasterReportFileName = "MASTER - Tagging Data form.pdf"; var basePath = AppDomain.CurrentDomain.BaseDirectory; var masterReportFileName = Path.Combine(basePath, "pdf", baseMasterReportFileName); var filledReportFileName = Path.Combine("/tmp", baseMasterReportFileName.Replace("MASTER - ", "FILLED - ").Replace(".pdf", $" - {fileTimestamp}.pdf")); var organizationService = new OrganizationService(organizationId); var organization = await organizationService.GetOrganization(); var organizationInformation = $"{organization.organizationName} - {organization.phone} - {organization.emailAddress}"; var seaTurtleService = new SeaTurtleService(organizationId); var seaTurtle = await seaTurtleService.GetSeaTurtle(reportOptions.seaTurtleId); var seaTurtleTagService = new SeaTurtleTagService(organizationId, reportOptions.seaTurtleId); var seaTurtleTags = await seaTurtleTagService.GetSeaTurtleTags(); var seaTurtleMorphometricService = new SeaTurtleMorphometricService(organizationId, reportOptions.seaTurtleId); var seaTurtleMorphometrics = await seaTurtleMorphometricService.GetSeaTurtleMorphometrics(); var nonPitTags = seaTurtleTags.Where(x => x.tagType != "PIT" && !string.IsNullOrWhiteSpace(x.tagNumber)); var flipperTagLeftFront = string.Join(", ", nonPitTags.Where(x => x.location == "LFF").Select(x => x.tagNumber)); var flipperTagRightFront = string.Join(", ", nonPitTags.Where(x => x.location == "RFF").Select(x => x.tagNumber)); var flipperTagLeftRear = string.Join(", ", nonPitTags.Where(x => x.location == "LRF").Select(x => x.tagNumber)); var flipperTagRightRear = string.Join(", ", nonPitTags.Where(x => x.location == "RRF").Select(x => x.tagNumber)); var pitTags = seaTurtleTags.Where(x => x.tagType == "PIT"); var pitTagNumber = string.Join(", ", pitTags.Where(x => !string.IsNullOrWhiteSpace(x.tagNumber)).Select(x => x.tagNumber)); var pitTagLocation = string.Join(", ", pitTags.Where(x => !string.IsNullOrWhiteSpace(x.location)).Select(x => x.location)); //---------------------------------------------------------------------------------------------------- var pdfReader = new PdfReader(masterReportFileName); pdfReader.RemoveUsageRights(); var fs = new FileStream(filledReportFileName, FileMode.Create); var pdfStamper = new PdfStamper(pdfReader, fs, '\0', false); var info = pdfReader.Info; info["Title"] = baseMasterReportFileName.Replace("MASTER - ", "").Replace(".pdf", $" - {fileTimestamp}.pdf"); pdfStamper.MoreInfo = info; var acroFields = pdfStamper.AcroFields; acroFields.SetField("txtSID", reportOptions.printSidOnForm ? $"SID: {seaTurtle.sidNumber}" : string.Empty); acroFields.SetField("txtSpecies", seaTurtle.species); string dateCaptured = seaTurtle.dateCaptured ?? seaTurtle.dateAcquired; if (!string.IsNullOrEmpty(dateCaptured)) { acroFields.SetField("txtDateCapturedDay", dateCaptured.Substring(8, 2)); acroFields.SetField("txtDateCapturedMonth", dateCaptured.Substring(5, 2)); acroFields.SetField("txtDateCapturedYear", dateCaptured.Substring(0, 4)); } if (!string.IsNullOrEmpty(seaTurtle.dateRelinquished)) { acroFields.SetField("txtDateReleasedDay", seaTurtle.dateRelinquished.Substring(8, 2)); acroFields.SetField("txtDateReleasedMonth", seaTurtle.dateRelinquished.Substring(5, 2)); acroFields.SetField("txtDateReleasedYear", seaTurtle.dateRelinquished.Substring(0, 4)); } acroFields.SetField("txtFlipperTagLeftFront", flipperTagLeftFront); acroFields.SetField("txtFlipperTagRightFront", flipperTagRightFront); acroFields.SetField("txtFlipperTagLeftRear", flipperTagLeftRear); acroFields.SetField("txtFlipperTagRightRear", flipperTagRightRear); acroFields.SetField("txtPitTagNumber", pitTagNumber); acroFields.SetField("txtPitTagLocation", pitTagLocation); if (seaTurtle.wasCarryingTagsWhenEnc) { acroFields.SetField("radTurtleCarryingTags", "Yes"); if (seaTurtle.recaptureType == "S") { acroFields.SetField("radRecapture", "1"); } else if (seaTurtle.recaptureType == "D") { acroFields.SetField("radRecapture", "2"); } } else { acroFields.SetField("radTurtleCarryingTags", "No"); } acroFields.SetField("txtTagReturnAddress", seaTurtle.tagReturnAddress); acroFields.SetField("txtOrganizationInformation", organizationInformation); switch (seaTurtle.captureProjectType) { case "N": acroFields.SetField("radProjectType", "NestingBeach"); switch (seaTurtle.didTurtleNest) { case "Y": acroFields.SetField("radDidTurtleNest", "Yes"); break; case "N": acroFields.SetField("radDidTurtleNest", "No"); break; case "U": acroFields.SetField("radDidTurtleNest", "Undetermined"); break; default: break; } break; case "T": acroFields.SetField("radProjectType", "TangleNet"); break; case "P": acroFields.SetField("radProjectType", "PoundNet"); break; case "H": acroFields.SetField("radProjectType", "HandCatch"); break; case "S": acroFields.SetField("radProjectType", "Stranding"); break; case "O": acroFields.SetField("radProjectType", "Other"); acroFields.SetField("txtProjectTypeOther", seaTurtle.captureProjectOther); break; default: break; } if (reportOptions.populateFacilityField) { acroFields.SetField("txtFacility", organizationInformation); } var acquiredCounty = !string.IsNullOrEmpty(seaTurtle.acquiredCounty) ? $"; County: {seaTurtle.acquiredCounty}" : string.Empty; var acquiredLatitude = !string.IsNullOrEmpty(seaTurtle.acquiredLatitude) ? $"; Latitude: {seaTurtle.acquiredLatitude}" : string.Empty; var acquiredLongitude = !string.IsNullOrEmpty(seaTurtle.acquiredLongitude) ? $"; Longitude: {seaTurtle.acquiredLongitude}" : string.Empty; var captureLocation = $"{seaTurtle.acquiredFrom}{acquiredCounty}{acquiredLatitude}{acquiredLongitude}".TrimStart(' ', ';'); acroFields.SetField("txtCaptureLocation", captureLocation); var relinquishedCounty = !string.IsNullOrEmpty(seaTurtle.relinquishedCounty) ? $"; County: {seaTurtle.relinquishedCounty}" : string.Empty; var relinquishedLatitude = !string.IsNullOrEmpty(seaTurtle.relinquishedLatitude) ? $"; Latitude: {seaTurtle.relinquishedLatitude}" : string.Empty; var relinquishedLongitude = !string.IsNullOrEmpty(seaTurtle.relinquishedLongitude) ? $"; Longitude: {seaTurtle.relinquishedLongitude}" : string.Empty; var releaseLocation = $"{seaTurtle.relinquishedTo}{relinquishedCounty}{relinquishedLatitude}{relinquishedLongitude}".TrimStart(' ', ';'); acroFields.SetField("txtReleaseLocation", releaseLocation); // If first string is greater than second string, it returns 1 else it returns -1. var dateAcquired = string.IsNullOrWhiteSpace(seaTurtle.dateAcquired) ? "0000-00-00" : seaTurtle.dateAcquired; var dateRelinquished = string.IsNullOrWhiteSpace(seaTurtle.dateRelinquished) ? "9999-99-99" : seaTurtle.dateRelinquished; var closestMorphometric = new SeaTurtleMorphometricModel(); if (reportOptions.useMorphometricsClosestTo == "dateAcquired") { // get first after acquired... closestMorphometric = seaTurtleMorphometrics .Where(x => string.Compare(dateAcquired, x.dateMeasured) == -1) .OrderBy(x => x.dateMeasured) .FirstOrDefault(); //...if none, try earliest date closestMorphometric ??= seaTurtleMorphometrics .OrderBy(x => x.dateMeasured) .FirstOrDefault(); } else //if (useMorphometricsClosestTo == "dateRelinquished") { // get first before relinquished... closestMorphometric = seaTurtleMorphometrics .Where(x => string.Compare(dateRelinquished, x.dateMeasured) == 1) .OrderByDescending(x => x.dateMeasured) .FirstOrDefault(); //...if none, try latest date closestMorphometric ??= seaTurtleMorphometrics .OrderByDescending(x => x.dateMeasured) .FirstOrDefault(); } if (closestMorphometric != null) { if (closestMorphometric.sclNotchNotchValue > 0) { if (closestMorphometric.sclNotchNotchUnits == "cm") { acroFields.SetField("txtSclMinCm", Convert.ToString(closestMorphometric.sclNotchNotchValue)); } else if (closestMorphometric.sclNotchNotchUnits == "in") { acroFields.SetField("txtSclMinIn", Convert.ToString(closestMorphometric.sclNotchNotchValue)); } } if (closestMorphometric.sclNotchTipValue > 0) { if (closestMorphometric.sclNotchTipUnits == "cm") { acroFields.SetField("txtSclNotchTipCm", Convert.ToString(closestMorphometric.sclNotchTipValue)); } else if (closestMorphometric.sclNotchTipUnits == "in") { acroFields.SetField("txtSclNotchTipIn", Convert.ToString(closestMorphometric.sclNotchTipValue)); } } if (closestMorphometric.scwValue > 0) { if (closestMorphometric.scwUnits == "cm") { acroFields.SetField("txtScwCm", Convert.ToString(closestMorphometric.scwValue)); } else if (closestMorphometric.scwUnits == "in") { acroFields.SetField("txtScwIn", Convert.ToString(closestMorphometric.scwValue)); } } if (closestMorphometric.cclNotchNotchValue > 0) { if (closestMorphometric.cclNotchNotchUnits == "cm") { acroFields.SetField("txtCclMinCm", Convert.ToString(closestMorphometric.cclNotchNotchValue)); } else if (closestMorphometric.cclNotchNotchUnits == "in") { acroFields.SetField("txtCclMinIn", Convert.ToString(closestMorphometric.cclNotchNotchValue)); } } if (closestMorphometric.cclNotchTipValue > 0) { if (closestMorphometric.cclNotchTipUnits == "cm") { acroFields.SetField("txtCclNotchTipCm", Convert.ToString(closestMorphometric.cclNotchTipValue)); } else if (closestMorphometric.cclNotchTipUnits == "in") { acroFields.SetField("txtCclNotchTipIn", Convert.ToString(closestMorphometric.cclNotchTipValue)); } } if (closestMorphometric.ccwValue > 0) { if (closestMorphometric.ccwUnits == "cm") { acroFields.SetField("txtCcwCm", Convert.ToString(closestMorphometric.ccwValue)); } else if (closestMorphometric.ccwUnits == "in") { acroFields.SetField("txtCcwIn", Convert.ToString(closestMorphometric.ccwValue)); } } if (closestMorphometric.weightValue > 0) { if (closestMorphometric.weightUnits == "kg") { acroFields.SetField("txtWeightKg", Convert.ToString(closestMorphometric.weightValue)); } else if (closestMorphometric.weightUnits == "lb") { acroFields.SetField("txtWeightLbs", Convert.ToString(closestMorphometric.weightValue)); } } } if (seaTurtle.inspectedForTagScars) { acroFields.SetField("radTagScars", "Yes"); acroFields.SetField("txtTagScars", seaTurtle.tagScarsLocated); } else { acroFields.SetField("radTagScars", "No"); } if (seaTurtle.scannedForPitTags) { acroFields.SetField("radPitTags", "Yes"); acroFields.SetField("txtPitTags", seaTurtle.pitTagsScanFrequency); } else { acroFields.SetField("radPitTags", "No"); } if (seaTurtle.scannedForMagneticWires) { acroFields.SetField("radMagneticWires", "Yes"); acroFields.SetField("txtMagneticWires", seaTurtle.magneticWiresLocated); } else { acroFields.SetField("radMagneticWires", "No"); } if (seaTurtle.inspectedForLivingTags) { acroFields.SetField("radLivingTags", "Yes"); acroFields.SetField("txtLivingTags", seaTurtle.livingTagsLocated); } else { acroFields.SetField("radLivingTags", "No"); } acroFields.SetField("radAdditionalRemarksOnBack", reportOptions.additionalRemarksOrDataOnBackOfForm ? "Yes" : "No"); // ============================================================================= pdfStamper.FormFlattening = true; // 'true' to make the PDF read-only pdfStamper.Close(); pdfReader.Close(); var bytes = await File.ReadAllBytesAsync(filledReportFileName); return(bytes); }
void generateThesisPDF() { string fileNameExisting = @"G:\old.pdf";; string fileNameNew = @"G:\new.pdf"; using (FileStream existingFileStream = new FileStream(fileNameExisting, FileMode.Open)) using (FileStream newFileStream = new FileStream(fileNameNew, FileMode.Create)) { // PDF öffnen PdfReader pdfReader = new PdfReader(existingFileStream); PdfStamper stamper = new PdfStamper(pdfReader, newFileStream); var form = stamper.AcroFields; var fieldKeys = form.Fields.Keys; foreach (string fieldKey in fieldKeys) { var value = pdfReader.AcroFields.GetField(fieldKey); switch (fieldKey) { case "Name_Prof": form.SetField(fieldKey, "Prof XYZ"); break; case "Name": form.SetField(fieldKey, "Murarka"); break; case "Vorname": form.SetField(fieldKey, "Pooja"); break; case "Matrikel-Nr": //form.SetFieldProperty(fieldKey, "texttype", 12f, null); form.SetField(fieldKey, "900090"); break; case "Studiengang": //course of studies form.SetField(fieldKey, "Information Engineering"); break; case "Arb_Beginn": form.SetField(fieldKey, "22.03.2018"); break; case "Thema": form.SetField(fieldKey, "Blah blah blah blah blah"); break; case "Prüfer1": form.SetField(fieldKey, "Mr 1"); break; case "Prüfer2": form.SetField(fieldKey, "Mr 2"); break; case "öffentl": //published form.SetField(fieldKey, "nein"); break; } } // Make text box unworkable (looks like normal text) //stamper.FormFlattening = true; stamper.Close(); pdfReader.Close(); } }
public void dodajstranicu(int bs, string put1, string put2, int zod, int zdo) { if (put2 != "" && System.IO.File.Exists(put2) && put1 != "" && System.IO.File.Exists(put1) && zod <= zdo) { Document document = new Document(); string tempf = put2.Replace(".pdf", ".bak"); System.IO.File.Copy(put2, tempf, true); //file u koji se ubacuje PdfReader reader = new PdfReader(tempf); brojstr2 = reader.NumberOfPages; //create PdfCopy object PdfCopy copy = new PdfCopy(document, new FileStream(put2, FileMode.Create)); //open the document document.Open(); //zamjenski file PdfReader readerz = new PdfReader(put1); int ostalo = 0; if (ostalostr.Text != "") { ostalo = Convert.ToInt16(ostalostr.Text); } // uvijek ispred //ako je izabrano da se umece ispred prve stranice if (izaispred.SelectedIndex == 0 && prvazadnja.SelectedIndex == 0) { for (int j = zod; j <= zdo; j++) { copy.AddPage(copy.GetImportedPage(readerz, j)); } for (int i = 1; i <= brojstr2; i++) { copy.AddPage(copy.GetImportedPage(reader, i)); } } //ako je izabrano da se umece ispred zadnje stranice else if (izaispred.SelectedIndex == 0 && prvazadnja.SelectedIndex == 1) { for (int i = 1; i < brojstr2; i++) { copy.AddPage(copy.GetImportedPage(reader, i)); } for (int j = zod; j <= zdo; j++) { copy.AddPage(copy.GetImportedPage(readerz, j)); } copy.AddPage(copy.GetImportedPage(reader, brojstr2)); } //ako je izabrano da se umece iza prve stranice else if (izaispred.SelectedIndex == 1 && prvazadnja.SelectedIndex == 0) { copy.AddPage(copy.GetImportedPage(reader, 1)); for (int j = zod; j <= zdo; j++) { copy.AddPage(copy.GetImportedPage(readerz, j)); } for (int i = 2; i < brojstr2; i++) { copy.AddPage(copy.GetImportedPage(reader, i)); } } //ako je izabrano da se umece iza zadnje stranice else if (izaispred.SelectedIndex == 1 && prvazadnja.SelectedIndex == 1) { for (int i = 1; i <= brojstr2; i++) { copy.AddPage(copy.GetImportedPage(reader, i)); } for (int j = zod; j <= zdo; j++) { copy.AddPage(copy.GetImportedPage(readerz, j)); } } //ako je izabrano da se umece ispred ostalo else if (izaispred.SelectedIndex == 0 && prvazadnja.SelectedIndex == 2 && ostalo != 0) { for (int i = 1; i <= brojstr2; i++) { if (i == ostalo - 1) { for (int j = zod; j <= zdo; j++) { copy.AddPage(copy.GetImportedPage(readerz, j)); } } copy.AddPage(copy.GetImportedPage(reader, i)); } } //ako je izabrano da se umece iza ostalo else if (izaispred.SelectedIndex == 1 && prvazadnja.SelectedIndex == 2 && ostalo != 0) { for (int i = 1; i <= brojstr2; i++) { if (i == ostalo) { for (int j = zod; j <= zdo; j++) { copy.AddPage(copy.GetImportedPage(readerz, j)); } } copy.AddPage(copy.GetImportedPage(reader, i)); } } reader.Close(); readerz.Close(); document.Close(); } }
public bool Read(string inputFileorFolder, string outputFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress) { PdfReader reader = null; PDFImageListener listener = null; try { reader = new PdfReader(inputFileorFolder); PdfReaderContentParser parser = new PdfReaderContentParser(reader); listener = new PDFImageListener(); for (int i = 1; i <= reader.NumberOfPages; i++) { listener.PageIndex = i; parser.ProcessContent(i, listener); } if (settings.CheckResult && reader.NumberOfPages != listener.ImageNames.Count) { if (settings.JoinImages) { string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageCountingKO", "Extracting {0} : {1} images for {2} pages - Try to merge !"); progress(string.Format(msg, inputFileorFolder, listener.ImageNames.Count, reader.NumberOfPages)); ImageJoiner cp = new ImageJoiner(); cp.Merge(listener.ImageBytes, listener.ImageNames); msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageMerge", "Merge to {0} new images..."); progress(string.Format(msg, cp.NewImageNames.Count)); imageBytes.AddRange(cp.NewImageBytes); imageNames.AddRange(cp.NewImageNames); } else { string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageError", "Error extracting {0} : {1} images for {2} pages !!"); progress(string.Format(msg, inputFileorFolder, listener.ImageNames.Count, reader.NumberOfPages)); throw new Exception("PDF check error"); } } else { string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageCountingOK", "Extracting {0} images in {1} pages"); progress(string.Format(msg, listener.ImageNames.Count, reader.NumberOfPages)); imageBytes.AddRange(listener.ImageBytes); imageNames.AddRange(listener.ImageNames); msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageExtracted", "{0} images extracted..."); progress(string.Format(msg, listener.ImageBytes.Count)); } } catch (Exception err) { LogHelper.Manage("PDFImageReader:Read", err); settings.Result = false; listener.ImageNames.Clear(); listener.ImageBytes.Clear(); return(false); } finally { if (reader != null) { reader.Close(); } } return(true); }
private void btnProcess_Click(object sender, EventArgs e) { if (String.IsNullOrWhiteSpace(tbPath.Text)) { return; } dataGridView1.Rows.Clear(); Cursor = Cursors.WaitCursor; IEnumerable <string> srcFiles; if (System.IO.File.GetAttributes(tbPath.Text).HasFlag(FileAttributes.Directory)) { srcFiles = Directory.EnumerateFiles(tbPath.Text, "*.pdf", SearchOption.AllDirectories); } else { srcFiles = new string[] { tbPath.Text }; } foreach (var srcFile in srcFiles) { var dataGridRowNum = dataGridView1.Rows.Add(new object[] { srcFile, 0 }); PdfReader reader = null; PdfStamper pdfStamper = null; try { reader = new PdfReader(srcFile); var dstFile = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(srcFile), System.IO.Path.GetFileNameWithoutExtension(srcFile) + "_clean.pdf"); var output = File.Open(dstFile, FileMode.Create); pdfStamper = new PdfStamper(reader, output, reader.PdfVersion, false); pdfStamper.RotateContents = false; var replaceTextProcessor = new TextReplaceStreamEditor(tbReplaceMatch.Text, tbReplaceReplace.Text); if (cbReplaceText.Checked) { for (int i = 1; i <= reader.NumberOfPages; i++) { replaceTextProcessor.EditPage(pdfStamper, i); } } var redactTextProcessor = new TextRedactStreamEditor(tbRedactMatch.Text); if (cbRedactText.Checked) { for (int i = 1; i <= reader.NumberOfPages; i++) { redactTextProcessor.EditPage(pdfStamper, i); } pdfStamper.Writer.SetEncryption(null, Encoding.UTF8.GetBytes("ownerPassword"), PdfWriter.AllowDegradedPrinting | PdfWriter.AllowPrinting, PdfWriter.ENCRYPTION_AES_256); } if (cbRemoveJavascript.Checked && reader.JavaScript != null) { pdfStamper.JavaScript = ""; } pdfStamper.Writer.CompressionLevel = PdfStream.BEST_COMPRESSION; pdfStamper.SetFullCompression(); pdfStamper.Writer.Info?.Clear(); pdfStamper.XmpMetadata = new byte[0]; pdfStamper.MoreInfo?.Clear(); dataGridView1.Rows[dataGridRowNum].ErrorText = "";; } catch (Exception ex) { dataGridView1.Rows[dataGridRowNum].ErrorText = ex.Message; } finally { pdfStamper?.Close(); reader?.Close(); } } Cursor = Cursors.Arrow; }
public static void AssinaComCertificado(List <ICrlClient> crlList, byte[] File, out byte[] SignFile, CertSimples cert, int X, int Y, int Pagina, int Rotation, bool AddTimeStamper = true, string urlTimeStamper = "https://freetsa.org/tsr", string timeStampUser = "", string timeStampPass = "", string Reason = "Assinatura Digital", bool AplicaPolitica = false, string MyDigestAlgorithm = "SHA-256", string Contact = "", string Location = "Indústrias Nucleares do Brasil S/A - INB", string Creator = "Assinador da INB", TipoAssinatura Tipo = TipoAssinatura.Normal, string Cargo = "", string CREACRM = "") { int Largura = 140; int Altura = 63; MemoryStream ArquivoOrigem = new MemoryStream(File); PdfReader pdfReader = new PdfReader(ArquivoOrigem); MemoryStream signedPdf = new MemoryStream(); StampingProperties osp = new StampingProperties(); osp.UseAppendMode(); PdfSigner objStamper = new PdfSigner(pdfReader, signedPdf, osp); ITSAClient tsaClient = null; IOcspClient ocspClient = null; ConfiguraAparencia(objStamper, cert, X, Y, Largura, Altura, Pagina, Rotation, Contact, Reason, Location, Creator, Tipo, Cargo, CREACRM); Org.BouncyCastle.X509.X509Certificate vert = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(cert.Certificado); Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser(); Org.BouncyCastle.X509.X509Certificate[] Arraychain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.Certificado.RawData) }; X509CertificateParser objCP = new X509CertificateParser(); RSACryptoServiceProvider rsa; RSACryptoServiceProvider Provider; IExternalSignature externalSignature; if (cert.Certificado.PrivateKey is RSACryptoServiceProvider) { rsa = (RSACryptoServiceProvider)cert.Certificado.PrivateKey; Provider = (RSACryptoServiceProvider)cert.Certificado.PrivateKey; externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm); } else { RSA rsaTeste = cert.Certificado.GetRSAPrivateKey(); rsa = (RSACryptoServiceProvider)cert.Certificado.PrivateKey; Provider = (RSACryptoServiceProvider)cert.Certificado.PrivateKey; externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm); } if (AddTimeStamper) { tsaClient = new TSAClientBouncyCastle(urlTimeStamper, timeStampUser, timeStampPass); } OCSPVerifier ocspVerifier = new OCSPVerifier(null, null); ocspClient = new OcspClientBouncyCastle(ocspVerifier); if (AplicaPolitica) { SignaturePolicyInfo spi = getPolitica(); objStamper.SignDetached(externalSignature, Arraychain, crlList, ocspClient, tsaClient, 0, PdfSigner.CryptoStandard.CADES, spi); } else { objStamper.SignDetached(externalSignature, Arraychain, crlList, ocspClient, tsaClient, 0, PdfSigner.CryptoStandard.CADES); } try { SignFile = signedPdf.ToArray(); try { signedPdf.Close(); signedPdf.Dispose(); } catch { } } catch (Exception ex) { SignFile = null; throw ex; } try { signedPdf.Close(); } catch (Exception ex) { } pdfReader.Close(); }
private void AnalyzeFilesAction(Object o) { EnDsCommands(CommandSet.csStop); ProgressPosition = Items.Count(); ProgressMax = Items.Count(); ProgressStatus = "Running..."; foreach (ItemType file in Items) { Interlocked.Increment(ref TasksCounter); Task task = new Task(() => { file.Status = StatusType.stInProgress; PdfFunctions pdfFunctions = new PdfFunctions(); DateTimeFunctions dateTimeFunctions = new DateTimeFunctions(); PdfReader pdfFile = null; try { string value = ""; if (file.TypeOfItem == PdfLocation.plFile) { pdfFile = pdfFunctions.GetPdf(file.FileName); } else { throw new NotImplementedException(); } if (pdfFile != null) { // file.FileLength = pdfFile.FileLength; file.Encrypted = pdfFile.IsEncrypted(); file.NumberOfPages = pdfFile.NumberOfPages; // value = pdfFunctions.GetValue(pdfFile, "Author"); if (!String.IsNullOrEmpty(value)) { file.Author = value; } // value = pdfFunctions.GetValue(pdfFile, "Title"); if (!String.IsNullOrEmpty(value)) { file.Title = value; } // value = pdfFunctions.GetValue(pdfFile, "Producer"); if (!String.IsNullOrEmpty(value)) { file.Producer = value; } // value = pdfFunctions.GetValue(pdfFile, "EBX_PUBLISHER"); if (!String.IsNullOrEmpty(value)) { file.Publisher = value; } // value = pdfFunctions.GetValue(pdfFile, "CreationDate"); if (!String.IsNullOrEmpty(value)) { file.CreationDate = dateTimeFunctions.FixDateTime(value); } // value = pdfFunctions.GetValue(pdfFile, "ModDate"); if (!String.IsNullOrEmpty(value)) { file.ModificationDate = dateTimeFunctions.FixDateTime(value); } file.Status = StatusType.stDone; } else { file.Status = StatusType.stError; } } finally { pdfFile?.Close(); pdfFile?.Dispose(); GC.Collect(); } Interlocked.Decrement(ref TasksCounter); TaskCompleted(); }); task.Start(); } }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { try { using (var oldFile = GetBaseFile()) { using (var newFile = new MemoryStream()) { PdfReader reader = new PdfReader(oldFile); Rectangle size = reader.GetPageSizeWithRotation(1); Document document = new Document(size); // open the writer PdfWriter writer = PdfWriter.GetInstance(document, newFile); document.Open(); //// the pdf content //PdfContentByte cb = writer.DirectContent; //// select the font properties //BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); //cb.SetColorFill(BaseColor.DARK_GRAY); //cb.SetFontAndSize(bf, 8); //// write the text in the pdf content //cb.BeginText(); //string text = "Some random blablablabla..."; //// put the alignment and coordinates here //cb.ShowTextAligned(1, text, 520, 640, 0); //cb.EndText(); //cb.BeginText(); //text = "Other random blabla..."; //// put the alignment and coordinates here //cb.ShowTextAligned(2, text, 100, 200, 0); //cb.EndText(); //// create the new page and add it to the pdf //PdfImportedPage page = writer.GetImportedPage(reader, 1); //cb.AddTemplate(page, 0, 0); var byteResult = ReadFully(newFile); var result = new FileContentResult(byteResult, "application/pdf") { FileDownloadName = "Export.pdf" }; // close the streams and voilá the file should be changed :) document.Close(); newFile.Close(); writer.Close(); reader.Close(); return(result); } } return(null); //var byteResult = ReadFully(newfile); //var result = new FileContentResult(byteResult, "application/pdf") //{ // FileDownloadName = "Export.pdf" //}; } catch (Exception e) { return(new BadRequestObjectResult(e.Message)); } //log.LogInformation("C# HTTP trigger function processed a request."); //string name = req.Query["name"]; //string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); //dynamic data = JsonConvert.DeserializeObject(requestBody); //name = name ?? data?.name; //return name != null // ? (ActionResult)new OkObjectResult($"Hello, {name}") // : new BadRequestObjectResult("Please pass a name on the query string or in the request body"); }
public bool WatermarkPDF(string SourcePdfPath, string OutputPdfPath, string WatermarkImageUrl, int positionX, int positionY, int WatermarkHeight, int WatermarkWidth, out string msg, string XMAdd) { try { PdfReader reader = new PdfReader(SourcePdfPath); PdfStamper stamp = new PdfStamper(reader, new FileStream(OutputPdfPath, FileMode.Create)); int n = reader.NumberOfPages; int i = 0; PdfContentByte under; int WatermarkWidth2 = WatermarkWidth; WatermarkWidth = WatermarkWidth / n; //这个地方要注意,是根据页数来动态加载图片地址,有几页就加载几页的图片 string WatermarkPath = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/合同备案公章" + n + "/"); string WatermarkPath2 = ""; while (i < n) { i++; WatermarkPath2 = WatermarkPath + i + ".gif"; iTextSharp.text.Image im = iTextSharp.text.Image.GetInstance(WatermarkPath2); im.SetAbsolutePosition(positionX, positionY); im.ScaleAbsolute(WatermarkWidth, WatermarkHeight); under = stamp.GetUnderContent(i); under.AddImage(im, true); //还要在最后一页加盖公章,如果是江阴、宜兴的,要同时加盖他们对应的公章,然后再加上市建设局的公章 if (i == n)//表示是最后一页 { string imgPath = ""; string imgHYPath = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/核验章.png"); iTextSharp.text.Image imHY = iTextSharp.text.Image.GetInstance(imgHYPath); imHY.ScaleAbsolute(100, 50); //江阴/宜兴 if (XMAdd == "320281") { imgPath = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/江阴合同备案公章.gif"); iTextSharp.text.Image imQX = iTextSharp.text.Image.GetInstance(imgPath); imQX.SetAbsolutePosition(400, 350); imQX.ScaleAbsolute(WatermarkWidth2, WatermarkHeight); under = stamp.GetUnderContent(i); under.AddImage(imQX, true); //加核验章 imHY.SetAbsolutePosition(200, 390); under.AddImage(imHY, true); } else if (XMAdd == "320282") { imgPath = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/宜兴合同备案公章.gif"); iTextSharp.text.Image imQX = iTextSharp.text.Image.GetInstance(imgPath); imQX.SetAbsolutePosition(400, 350); imQX.ScaleAbsolute(WatermarkWidth2, WatermarkHeight); under = stamp.GetUnderContent(i); under.AddImage(imQX, true); //加核验章 imHY.SetAbsolutePosition(200, 390); under.AddImage(imHY, true); } //无锡市 imgPath = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/合同备案公章.gif"); iTextSharp.text.Image imWX = iTextSharp.text.Image.GetInstance(imgPath); imWX.SetAbsolutePosition(400, 150); imWX.ScaleAbsolute(WatermarkWidth2, WatermarkHeight); under = stamp.GetUnderContent(i); under.AddImage(imWX, true); //加核验章 imHY.SetAbsolutePosition(200, 190); under.AddImage(imHY, true); } } stamp.Close(); reader.Close(); } catch (Exception ex) { msg = ex.Message; return(false); } msg = "加水印成功!"; return(true); }
public void CreatePdf() { if (!IsValidPath()) { throw new DirectoryNotFoundException("Invalid output path"); } // converting data to ours desired format. var Result0 = MakeGroup(); // group by warrant var Result1 = Result0.GroupBy(u => u.WarrantNumber).Select(s => s.ToList()).ToList(); var OutPutPdfFile = string.Empty; var TempOutPutPdfFile = string.Empty; bool IsPdfExist = false; FileStream fs = null; // loop i for each warrant foreach (var i in Result1) { var ParentOutDirName = OutPutPath + i.FirstOrDefault().DelivaryLocation; if (!Directory.Exists(ParentOutDirName)) { Directory.CreateDirectory(ParentOutDirName); } OutPutPdfFile = ParentOutDirName + "\\" + i.FirstOrDefault().WarrantNumber + ".pdf"; TempOutPutPdfFile = CreateTempPathFile(OutPutPdfFile); var writer = CreateWriter(OutPutPdfFile, fs, out IsPdfExist); // loop j, object inside each warrant in i foreach (var j in i) { using (PdfReader Reader = new PdfReader(j.PdfFileName)) { Reader.ConsolidateNamedDestinations(); Reader.SelectPages(j.PageNumbers); writer.AddPages(Reader); Reader.Close(); } } writer.Close(); // if pdf file exist, just rename the file. if (IsPdfExist) { System.IO.File.Move(TempOutPutPdfFile, OutPutPdfFile); } // if the pdf file is empty, delete it. XbsPdfUtility.CheckFileIsEmpty(OutPutPdfFile, fs); } }
List <string> getListMail(string ProductCode) { NVCoKhi = ""; NVDien = ""; NVDT = ""; DocUtils.InitFTPQLSX(); List <string> listMailAddress = new List <string>(); if (ProductCode.StartsWith("TPAD.")) { #region Get Address of Điện string personDien = ""; try { string fdfFileName = string.Format("Thietke.Dn\\{0}\\{1}.Dn\\PRD.{1}\\{1}.Dn.pdf", ProductCode.Substring(0, 6), ProductCode); if (DocUtils.CheckExits(fdfFileName)) { DocUtils.DownloadFile("D:/", Path.GetFileName(fdfFileName), fdfFileName); PdfReader reader1 = new PdfReader("D:/" + Path.GetFileName(fdfFileName)); personDien = reader1.Info["Author"]; reader1.Close(); File.Delete("D:/" + Path.GetFileName(fdfFileName)); } else { fdfFileName = string.Format("Thietke.Dn/{0}/{1}.Dn/{1}.Dn.pdf", ProductCode.Substring(0, 6), ProductCode); if (DocUtils.CheckExits(fdfFileName)) { DocUtils.DownloadFile("D:/", Path.GetFileName(fdfFileName), fdfFileName); PdfReader reader1 = new PdfReader("D:/" + Path.GetFileName(fdfFileName)); personDien = reader1.Info["Author"]; reader1.Close(); File.Delete("D:/" + Path.GetFileName(fdfFileName)); } } if (personDien != "") { NVDien = personDien; personDien = getAddressMail(personDien); if (personDien != "") { listMailAddress.Add(getAddressMail(personDien) + "@tpa.com.vn"); } } } catch { } #endregion string _serverPathCK = "Thietke.Ck/" + ProductCode.Substring(0, 6) + "/" + ProductCode + ".Ck/" + "/VT." + ProductCode + ".xlsm"; try { if (DocUtils.CheckExits(_serverPathCK)) { #region Get Address of Module if (File.Exists("D:/VT." + ProductCode + ".xlsm")) { File.Delete("D:/VT." + ProductCode + ".xlsm"); } //Download file danh mục vật tư DocUtils.DownloadFile("D:/", "VT." + ProductCode + ".xlsm", _serverPathCK); DataTable dtDMVT = TextUtils.ExcelToDatatable("D:/VT." + ProductCode + ".xlsm", "DMVT"); File.Delete("D:/VT." + ProductCode + ".xlsm"); NVCoKhi = dtDMVT.Rows[2]["F3"].ToString(); string ck = getAddressMail(dtDMVT.Rows[2]["F3"].ToString()); if (ck != "") { if (!listMailAddress.Contains(ck + "@tpa.com.vn")) { listMailAddress.Add(ck + "@tpa.com.vn"); } } #endregion try { DataTable dtDT = dtDMVT.Select("F4 like '%PCB%'").CopyToDataTable(); if (dtDT.Rows.Count > 0) { string dienTuPath = "Thietke.Dt/PCB/"; foreach (DataRow item in dtDT.Rows) { #region Get address of PCB string code = item["F4"].ToString(); if (code != "") { string pathDMVT_DT = dienTuPath + "/" + code + "/PRD." + code + "/VT." + code + ".xls"; if (DocUtils.CheckExits(pathDMVT_DT)) { try { DocUtils.DownloadFile("D:/", Path.GetFileName(pathDMVT_DT), pathDMVT_DT); DataTable dtDMVT_DT = TextUtils.ExcelToDatatable("D:/VT." + code + ".xls", "DMVT"); File.Delete("D:/VT." + code + ".xls"); NVDT += dtDMVT_DT.Rows[2]["F3"].ToString() + " - " + code + ","; string dt = getAddressMail(dtDMVT_DT.Rows[2]["F3"].ToString()); if (dt != "") { string personDT = dt + "@tpa.com.vn"; if (!listMailAddress.Contains(personDT)) { listMailAddress.Add(personDT); } } } catch (Exception) { } } } #endregion } } } catch { } } } catch { } } if (ProductCode.StartsWith("PCB.")) { #region Get address of PCB string dienTuPath = "Thietke.Dt/PCB/"; string code = ProductCode; if (code != "") { string pathDMVT_DT = dienTuPath + "/" + code + "/PRD." + code + "/VT." + code + ".xls"; if (DocUtils.CheckExits(pathDMVT_DT)) { try { DocUtils.DownloadFile("D:/", Path.GetFileName(pathDMVT_DT), pathDMVT_DT); DataTable dtDMVT_DT = TextUtils.ExcelToDatatable("D:/VT." + code + ".xls", "DMVT"); File.Delete("D:/VT." + code + ".xls"); NVDT += dtDMVT_DT.Rows[2]["F3"].ToString() + " - " + code + ","; string dt = getAddressMail(dtDMVT_DT.Rows[2]["F3"].ToString()); if (dt != "") { string personDT = dt + "@tpa.com.vn"; if (!listMailAddress.Contains(personDT)) { listMailAddress.Add(personDT); } } } catch { } } } #endregion } return(listMailAddress); }
/// <summary> /// Utility method that fills out the blank blue card /// </summary> /// <param name="inputStream">The blank blue card</param> /// <param name="model">The merit badge student that contains the data</param> /// <param name="numberOfPDFs">The number of PDFs we are going to generate for the student</param> /// <param name="writeVoid">Whether VOID should be written on unused blue cards</param> /// <returns>A Stream containing the filled out PDF</returns> private static Stream FillForm(Stream inputStream, MeritBadgeStudentViewModel model, int numberOfPDFs, bool writeVoid) { Stream outStream = new MemoryStream(); PdfReader pdfReader = null; PdfStamper pdfStamper = null; try { pdfReader = new PdfReader(inputStream); pdfStamper = new PdfStamper(pdfReader, outStream); AcroFields form = pdfStamper.AcroFields; // Name BaseFont bf = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.EMBEDDED); var studentName = model.FirstName + " " + model.LastName; form.SetField(BlueCardFields.StudentName, studentName); float fontSize = 250 / studentName.Length; if (fontSize > 12) { fontSize = 12; } if (fontSize < 5) { fontSize = 5; } form.SetFieldProperty(BlueCardFields.StudentName, "textsize", fontSize, null); form.SetFieldProperty(BlueCardFields.StudentName, "textfont", bf, null); form.RegenerateField(BlueCardFields.StudentName); form.SetField(BlueCardFields.Address, model.Address ?? ""); form.SetField(BlueCardFields.CityStateZip, string.Concat(model.City, " ", model.State, " ", model.ZipCode)); form.SetField(BlueCardFields.UnitTypeRB, model.UnitType); form.SetField(BlueCardFields.UnitType, model.UnitType); form.SetField(BlueCardFields.UnitNumber, model.UnitNumber.ToString()); form.SetField(BlueCardFields.District, model.District ?? ""); form.SetField(BlueCardFields.Council, model.Council ?? ""); var mbcclasses = model.StudentClassEntries.ToList(); for (var i = 1; i + 3 * (numberOfPDFs - 1) <= model.StudentClassEntries.Count() && i <= 3; i++) { var mbcclass = mbcclasses[i + 3 * (numberOfPDFs - 1) - 1]; var number = i.ToString(); if (i == 3) { number = ""; } form.SetField(BlueCardFields.MeritBadgeName + number, mbcclass.MeritBadgeClass.ClassName); form.SetFieldProperty(BlueCardFields.MeritBadgeName + number, "textfont", bf, null); form.RegenerateField(BlueCardFields.MeritBadgeName + number); form.SetField(BlueCardFields.DateApplied + number, ""); if (mbcclass.MeritBadgeClass.Counselor != null) { if (mbcclass.IsComplete && mbcclass.MeritBadgeClass.Counselor.DisplayName != null) { form.SetField(BlueCardFields.Counselor + number, mbcclass.MeritBadgeClass.Counselor.FirstName + " " + mbcclass.MeritBadgeClass.Counselor.LastName); } form.SetField(BlueCardFields.CounselorAddress + number, mbcclass.MeritBadgeClass.Counselor.Address); form.SetField(BlueCardFields.CounselorCityStateZip + number, $"{mbcclass.MeritBadgeClass.Counselor.City} {mbcclass.MeritBadgeClass.Counselor.State} {mbcclass.MeritBadgeClass.Counselor.ZipCode}"); form.SetField(BlueCardFields.CounselorPhone + number, mbcclass.MeritBadgeClass.Counselor.Telephone); } var requirementTitleList = mbcclass.RequirementList.Select(r => r.RequirementTitle).ToList(); var requirementList = mbcclass.RequirementList.ToList(); for (var j = 1; j <= requirementTitleList.Count; j++) { var appendString = number + "." + j.ToString("00"); form.SetField(BlueCardFields.Requirement + appendString, requirementTitleList[j - 1]); var fieldString = BlueCardFields.RequirementDate + appendString; var req = requirementList[j - 1]; form.SetField(fieldString, req.IsComplete ? req.CompletionDate.ToString("MM/dd/yyyy") : ""); form.SetFieldProperty(fieldString, "textsize", (float)6, null); form.RegenerateField(fieldString); var counselorInitials = string.Empty; if (mbcclass.MeritBadgeClass.Counselor != null) { counselorInitials = mbcclass.MeritBadgeClass.Counselor.FirstName.ElementAt(0).ToString().ToUpperInvariant() + mbcclass.MeritBadgeClass.Counselor.LastName.ElementAt(0).ToString().ToUpperInvariant(); } form.SetField(BlueCardFields.RequirementInitials + appendString, req.IsComplete ? counselorInitials : ""); } if (mbcclass.IsComplete) { form.SetField(BlueCardFields.DateCompleted + number, mbcclass.CompletionDate.ToString("MM/dd/yyyy")); } if (!string.IsNullOrWhiteSpace(mbcclass.Remarks)) { form.SetField(BlueCardFields.Remarks + number, mbcclass.Remarks); } } if (writeVoid && numberOfPDFs * 3 - mbcclasses.Count > 0) { form.SetField(BlueCardFields.BlueCardVoid1, "VOID"); if (numberOfPDFs * 3 - mbcclasses.Count > 1) { form.SetField(BlueCardFields.BlueCardVoid2, "VOID"); } } pdfStamper.FormFlattening = true; return(outStream); } finally { pdfStamper?.Close(); pdfReader?.Close(); } }
public TestCreatePDF() { filenameBlank = filename.Replace(".", "_Blank."); FileStream fs = new System.IO.FileStream(filenameBlank, System.IO.FileMode.Create); writer = PdfWriter.GetInstance(doc, fs); doc.Open(); cb = writer.DirectContent; Rectangle rect = new Rectangle(50, 700, 300, 600) { BorderWidth = .25f, Border = 255 }; cb.Rectangle(rect); cb.Stroke(); //Add text Font font3 = new Font(FontFactory.GetFont(FontFactory.HELVETICA, 1000, Font.NORMAL, BaseColor.BLACK)); Chunk chunk = new Chunk("Roopesh", new Font(FontFactory.GetFont(FontFactory.HELVETICA, 10, Font.NORMAL, BaseColor.BLUE))); Phrase phrase = new Phrase(chunk); ColumnText ctext = new ColumnText(cb); ctext.SetSimpleColumn(rect.Left + 5, rect.Top, rect.Right, rect.Bottom); ctext.SetText(phrase); ctext.Go(); this.doc.Close(); GetReader(); //Add TextBox rect = new Rectangle(rect.Left, rect.Top - 100, rect.Right, rect.Bottom - 100); TextField tf = new TextField(writer, rect, "text1") { Alignment = Element.ALIGN_LEFT | Element.ALIGN_TOP, BorderColor = BaseColor.BLACK, BorderStyle = PdfBorderDictionary.STYLE_SOLID, Text = "TextField" }; stamper.AddAnnotation(tf.GetTextField(), 1); //Add Radio rect = new Rectangle(rect.Left, rect.Top - 100, rect.Right, rect.Bottom - 25); PdfFormField group = PdfFormField.CreateRadioButton(writer, true); group.FieldName = "grp1"; for (int i = 0; i < 5; i++) { Rectangle radioRect = new Rectangle(rect.Left + i * 25, rect.Top, rect.Left + (i + 1) * 25, rect.Bottom); RadioCheckField radioField = new RadioCheckField(writer, radioRect, "chk" + i.ToString(), i.ToString()) { BorderColor = GrayColor.BLACK, CheckType = RadioCheckField.TYPE_CIRCLE, BorderStyle = PdfBorderDictionary.STYLE_SOLID }; group.AddKid(radioField.RadioField); } //group.SetAdditionalActions(PdfName.E, PdfAction.JavaScript("app.alert(validate);",writer)); stamper.AddAnnotation(group, 1); //Add submit button rect = new Rectangle(rect.Left, rect.Top - 100, rect.Right, rect.Bottom - 25); PushbuttonField button = new PushbuttonField(writer, rect, "postSubmit") { FontSize = 8, BackgroundColor = BaseColor.LIGHT_GRAY, BorderColor = GrayColor.BLACK, BorderWidth = 1f, BorderStyle = PdfBorderDictionary.STYLE_BEVELED, TextColor = GrayColor.GREEN, Text = "Submit", Visibility = PushbuttonField.VISIBLE_BUT_DOES_NOT_PRINT }; PdfFormField field = button.Field; String javascript = "validate();"; field.Action = PdfAction.JavaScript(javascript, writer); //field.Action = PdfAction.CreateSubmitForm( @"*****@*****.**", null, PdfAction.SUBMIT_HTML_FORMAT | PdfAction.SUBMIT_INCLUDE_NO_VALUE_FIELDS); stamper.AddAnnotation(field, 1); PdfAcroForm f = new PdfAcroForm(writer); //Add common Javascript code writer.AddJavaScript("var requiredFields = ['text1', 'grp1'];"); string validateFunction = "function validate () { " + " for (i=0; i<requiredFields.length; i++) {" + " var grp = this.getField(requiredFields[i]); if (!grp || grp.value === null || grp.value == ''|| grp.value=='Off') { " + " app.alert('please select this '+ requiredFields[i]); return false; }}" + "return true}"; writer.AddJavaScript(validateFunction); //Close all the streams stamper.Close(); reader.Close(); doc.Close(); }
public static string pdfText(string path) { PdfReader reader = new PdfReader(path); string text = string.Empty; for(int page = 1; page <= reader.NumberOfPages; page++) { text += PdfTextExtractor.GetTextFromPage(reader,page); } reader.Close(); return text; }