From 5d5aa5cf1714af3ed471ab6302c79e7bb5e3e0d7 Mon Sep 17 00:00:00 2001 From: Joseph Argento Date: Wed, 11 Sep 2024 16:08:39 -0500 Subject: [PATCH] Fix sample code based on improved usage of Image.Translate(). The imaging code of the .NET and Java libraries has been updated significantly and now Image.Translate() takes coordinates as one would expect on the page. Whereas previously the values were based on internally applying the matrix multiplication backwards. Because of this change the sample needs to be updated to produce the correct output. --- .../ExtendedGraphicStates.cs | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/ContentModification/ExtendedGraphicStates/ExtendedGraphicStates.cs b/ContentModification/ExtendedGraphicStates/ExtendedGraphicStates.cs index c71669f..5904749 100644 --- a/ContentModification/ExtendedGraphicStates/ExtendedGraphicStates.cs +++ b/ContentModification/ExtendedGraphicStates/ExtendedGraphicStates.cs @@ -1,7 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Text; using Datalogics.PDFL; +using System; /* * @@ -12,7 +10,7 @@ * * This sample program shows how to use the Extended Graphic State object to add graphics parameters to an image. * - * Copyright (c) 2007-2023, Datalogics, Inc. All rights reserved. + * Copyright (c) 2007-2024, Datalogics, Inc. All rights reserved. * */ @@ -37,6 +35,9 @@ static void blendPage(Document doc, Image foregroundImage, Image backgroundImage gsText.FillColor = new Color(0, 0, 1.0); TextState ts = new TextState(); + double spaceFactor = 18.0; + double heightOffset = height - 88.0; + for (int i = 0; i < 16; i++) { Image individualForegroundImage = foregroundImage.Clone(); @@ -44,15 +45,24 @@ static void blendPage(Document doc, Image foregroundImage, Image backgroundImage GraphicState gs = individualForegroundImage.GraphicState; individualForegroundImage.Scale(0.125, 0.125); - individualForegroundImage.Translate(800, 200 + height * (7 - i)); individualBackgroundImage.Scale(0.125, 0.125); - individualBackgroundImage.Translate(800, 200 + height * (7 - i)); - // Halfway through, create 2nd column by shifting over and up + spaceFactor = 18.0; + if (i == 0) + { + spaceFactor = 0; + } + + //Halfway through, create 2nd column by shifting over and up if (i > 7) { - individualForegroundImage.Translate(2400, height * 8); - individualBackgroundImage.Translate(2400, height * 8); + individualForegroundImage.Translate(400, heightOffset - (72.0 + spaceFactor) * (i - 8)); + individualBackgroundImage.Translate(400, heightOffset - (72.0 + spaceFactor) * (i - 8)); + } + else + { + individualForegroundImage.Translate(100, heightOffset - (72.0 + spaceFactor) * i); + individualBackgroundImage.Translate(100, heightOffset - (72.0 + spaceFactor) * i); } docpage.Content.AddElement(individualBackgroundImage); @@ -62,9 +72,14 @@ static void blendPage(Document doc, Image foregroundImage, Image backgroundImage Matrix m = new Matrix(); if (i > 7) - m = m.Translate(480, 750 - ((i - 8) * 100)); // second column + { + m = m.Translate(480, heightOffset - (72.0 + spaceFactor) * (i - 8));// second column + } else - m = m.Translate(180, 750 - (i * 100)); // first column + { + m = m.Translate(180, heightOffset - (72.0 + spaceFactor) * i);// first column + } + m = m.Scale(12.0, 12.0); ExtendedGraphicState xgs = new ExtendedGraphicState(); @@ -193,7 +208,6 @@ static void Main(string[] args) doc.EmbedFonts(); doc.Save(SaveFlags.Full, sOutput); - } } }