コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: PdfMerge.cs プロジェクト: simonep77/app.pdfutils
        /// <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);
        }