protected void ManipulatePdf(String dest) { PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest)); // Suppose that this is our image data byte[] circleData = new byte[] { (byte)0x3c, (byte)0x7e, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0x7e, (byte)0x3c }; PdfSpecialCs colorspace = GetSeparationColorspace(pdfDoc.GetWriter(), new DeviceCmyk(0.8f, 0.3f, 0.3f, 0.1f)); // Specifying a single component colorspace in the image ImageData image = ImageDataFactory.Create(8, 8, 1, 1, circleData, new int[] { 0, 0 }); PdfImageXObject imageXObject = new PdfImageXObject(image); imageXObject.Put(PdfName.ColorSpace, colorspace.GetPdfObject()); imageXObject.MakeIndirect(pdfDoc); // Now we add the image to the existing PDF document PdfPage pdfPage = pdfDoc.GetFirstPage(); pdfPage.SetIgnorePageRotationForContent(true); PdfCanvas canvas = new PdfCanvas(pdfPage); Rectangle rect = PdfXObject.CalculateProportionallyFitRectangleWithWidth(imageXObject, 100, 200, 100); canvas.AddXObjectFittedIntoRectangle(imageXObject, rect); pdfDoc.Close(); }
public virtual void CalculateProportionallyFitRectangleWithWidthTest() { String fileName = "calculateProportionallyFitRectangleWithWidthTest.pdf"; String destPdf = DESTINATION_FOLDER + fileName; String cmpPdf = SOURCE_FOLDER + "cmp_" + fileName; FileStream fos = new FileStream(destPdf, FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument document = new PdfDocument(writer); PdfFormXObject formXObject = new PdfFormXObject(new Rectangle(5, 5, 15, 20)); formXObject.Put(PdfName.Matrix, new PdfArray(new float[] { 1, 0.57f, 0, 2, 20, 5 })); new PdfCanvas(formXObject, document).Circle(10, 15, 10).Fill(); PdfImageXObject imageXObject = new PdfImageXObject(ImageDataFactory.Create(SOURCE_FOLDER + "itext.png")); PdfPage page = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page); Rectangle rect = PdfXObject.CalculateProportionallyFitRectangleWithWidth(formXObject, 0, 0, 20); canvas.AddXObjectFittedIntoRectangle(formXObject, rect); rect = PdfXObject.CalculateProportionallyFitRectangleWithWidth(imageXObject, 20, 0, 20); canvas.AddXObjectFittedIntoRectangle(imageXObject, rect); canvas.Release(); page.Flush(); document.Close(); NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destPdf, cmpPdf, DESTINATION_FOLDER, "diff_" )); }
public virtual void CalculateProportionallyFitRectangleWithWidthForCustomXObjectTest() { NUnit.Framework.Assert.That(() => { PdfXObject pdfXObject = new PdfXObjectTest.CustomPdfXObject(new PdfStream()); PdfXObject.CalculateProportionallyFitRectangleWithWidth(pdfXObject, 0, 0, 20); } , NUnit.Framework.Throws.InstanceOf <ArgumentException>().With.Message.EqualTo("PdfFormXObject or PdfImageXObject expected.")) ; }
public virtual void AddFormXObjectXYWidthLargerOneWithoutMatrixTest() { String fileName = "addXObjectXYWidthLargerOneWithoutMatrixTest.pdf"; String destPdf = DESTINATION_FOLDER + fileName; String cmpPdf = SOURCE_FOLDER + "cmp_" + fileName; FileStream fos = new FileStream(destPdf, FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument document = new PdfDocument(writer); PdfFormXObject formXObject = new PdfFormXObject(new Rectangle(10, 15, 10, 20)); new PdfCanvas(formXObject, document).Rectangle(10, 10, 10, 20).Fill(); PdfPage page = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page); Rectangle rect = PdfXObject.CalculateProportionallyFitRectangleWithWidth(formXObject, 5, 5, 30); canvas.AddXObjectFittedIntoRectangle(formXObject, rect); canvas.Release(); page.Flush(); document.Close(); NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destPdf, cmpPdf, DESTINATION_FOLDER, "diff_" )); }