private PdfDocument InitPdfDocument(Job job) { var version = DeterminePdfVersionAsEnum(job.Profile); _originalSourceFile = job.IntermediatePdfFile; var processedFile = AddTailToFile(_originalSourceFile, "_processed"); var writerProperties = new WriterProperties(); writerProperties.SetPdfVersion(version); ApplyEncryptionToWriterProperties(job, writerProperties); try { PdfReader pdfReader = new PdfReader(_originalSourceFile); PdfWriter pdfWriter = new PdfWriter(processedFile, writerProperties); _pdfDocument = new PdfDocument(pdfReader, pdfWriter); } catch (Exception e) { Logger.Trace(e.Message); } job.IntermediatePdfFile = processedFile; return(_pdfDocument); }
public virtual void EncryptWithPassword2(String filename, int encryptionType, int compression, bool isPdf2 ) { int permissions = EncryptionConstants.ALLOW_SCREENREADERS; WriterProperties writerProperties = new WriterProperties().SetStandardEncryption(USER, OWNER, permissions, encryptionType); if (isPdf2) { writerProperties.SetPdfVersion(PdfVersion.PDF_2_0); } PdfWriter writer = new PdfWriter(destinationFolder + filename, writerProperties.AddXmpMetadata()); writer.SetCompressionLevel(compression); PdfDocument document = new PdfDocument(writer); document.GetDocumentInfo().SetMoreInfo(customInfoEntryKey, customInfoEntryValue); PdfPage page = document.AddNewPage(); WriteTextBytesOnPageContent(page, pageTextContent); page.Flush(); document.Close(); CompareEncryptedPdf(filename); CheckEncryptedWithPasswordDocumentStamping(filename, OWNER); CheckEncryptedWithPasswordDocumentAppending(filename, OWNER); }
private void ConvertToPdfa(Job job) { if (job.Profile.OutputFormat.IsPdfA()) { var sourcePdf = job.IntermediatePdfFile; if (string.IsNullOrEmpty(sourcePdf)) { return; } var targetPdf = AddTailToFile(sourcePdf, "_pdfa"); var version = DeterminePdfVersionAsEnum(job.Profile); var writerProperties = new WriterProperties(); writerProperties.SetPdfVersion(version); byte[] resource; //Set ICC Profile according to the color model switch (job.Profile.PdfSettings.ColorModel) { case ColorModel.Cmyk: resource = GhostscriptResources.WebCoatedFOGRA28; break; case ColorModel.Gray: resource = GhostscriptResources.ISOcoated_v2_grey1c_bas; break; default: resource = GhostscriptResources.eciRGB_v2; break; } try { using (var icc = new MemoryStream(resource)) { var document = new PdfADocument(new PdfWriter(targetPdf, writerProperties), GetConformLevel(job.Profile.OutputFormat), new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc)); document.SetTagged(); var toCopyDoc = new PdfDocument(new PdfReader(sourcePdf)); toCopyDoc.CopyPagesTo(1, toCopyDoc.GetNumberOfPages(), document); var metaData = XMPMetaFactory.ParseFromBuffer(toCopyDoc.GetXmpMetadata()); document.SetXmpMetadata(metaData); toCopyDoc.Close(); document.Close(); File.Delete(sourcePdf); job.IntermediatePdfFile = targetPdf; } } catch (PdfAConformanceException ex) { throw new ProcessingException("One of the used pdfs does not conform to the PDF-A specification", ErrorCode.Processing_ConformanceMismatch, ex); } } }
public MemoryStream CreatePdf(string text) { if (text == null) { throw new ArgumentNullException(nameof(text)); } _logger.LogInformation("Creating barcode for '{Text}'", text); var properties = new WriterProperties(); properties.SetPdfVersion(PdfVersion.PDF_1_4); var stream = new MemoryStream(); using var writer = new PdfWriter(stream, properties); var pdfDoc = new PdfDocument(writer); PdfFont fontOcrb = PdfFontFactory.CreateFont("wwwroot/OCRB.otf", PdfEncodings.WINANSI, PdfFontFactory.EmbeddingStrategy.PREFER_EMBEDDED); Color cmykBlack = new DeviceCmyk(0, 0, 0, 100); var gState = new PdfExtGState().SetFillOverPrintFlag(true).SetStrokeOverPrintFlag(true).SetOverprintMode(1); var code128 = new Barcode128(pdfDoc); code128.SetBaseline(7.67f); code128.SetSize(9f); code128.SetFont(fontOcrb); code128.SetX(0.72f); code128.SetBarHeight(14.17f); code128.SetCode(text); code128.SetCodeType(Barcode128.CODE128); var xObject = code128.CreateFormXObject(cmykBlack, cmykBlack, pdfDoc); pdfDoc.AddNewPage(new iText.Kernel.Geom.PageSize(xObject.GetWidth(), xObject.GetHeight())); PdfCanvas canvas = new PdfCanvas(pdfDoc.GetFirstPage()); canvas.SaveState(); canvas.SetExtGState(gState); canvas.AddXObjectAt(xObject, 0f, 0f); canvas.RestoreState(); pdfDoc.Close(); return(stream); }
/// <summary> /// Avvia merge /// </summary> /// <param name="name"></param> /// <param name="outstream"></param> /// <param name="closeOnEndMerge"></param> public void BeginMergeToStream(string name, Stream outstream, bool closeOnEndMerge) { this.NumDocumentsMerged = 0; this.NumPagesMerged = 0; this.Name = name; this.mStream = outstream; var wp = new WriterProperties().AddXmpMetadata(); wp.SetPdfVersion(PdfVersion.PDF_1_4); var w = new PdfWriter(outstream, wp); w.SetCloseStream(closeOnEndMerge); w.SetSmartMode(true); this.mDocument = new PdfDocument(w); this.mMerge = new PdfMerger(this.mDocument); }