public virtual void Rowspan_Test() { String file = "rowspantest.pdf"; string fileE = CMP_FOLDER + file; Console.Write(File.Exists(fileE)); Document document = new Document(); PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(OUTPUT_FOLDER + file, FileMode.Create)); document.Open(); PdfContentByte contentByte = writer.DirectContent; Rectangle rect = document.PageSize; PdfPTable table = new PdfPTable(4); table.TotalWidth = rect.Right - rect.Left + 1; table.LockedWidth = true; float[] widths = new float[] { 0.1f, 0.54f, 0.12f, 0.25f }; table.SetWidths(widths); PdfPCell cell_1_1 = new PdfPCell(new Phrase("1-1")); cell_1_1.Colspan = 4; table.AddCell(cell_1_1); PdfPCell cell_2_1 = new PdfPCell(new Phrase("2-1")); cell_2_1.Rowspan = 2; table.AddCell(cell_2_1); PdfPCell cell_2_2 = new PdfPCell(new Phrase("2-2")); cell_2_2.Colspan = 2; table.AddCell(cell_2_2); PdfPCell cell_2_4 = new PdfPCell(new Phrase("2-4")); cell_2_4.Rowspan = 3; table.AddCell(cell_2_4); PdfPCell cell_3_2 = new PdfPCell(new Phrase("3-2")); table.AddCell(cell_3_2); PdfPCell cell_3_3 = new PdfPCell(new Phrase("3-3")); table.AddCell(cell_3_3); PdfPCell cell_4_1 = new PdfPCell(new Phrase("4-1")); cell_4_1.Colspan = 3; table.AddCell(cell_4_1); table.WriteSelectedRows(0, -1, rect.Left, rect.Top, contentByte); document.Close(); // compare CompareTool compareTool = new CompareTool(OUTPUT_FOLDER + file, CMP_FOLDER + file); String errorMessage = compareTool.Compare(OUTPUT_FOLDER, "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } }
public virtual void TestFlatteningNewAppearances() { String OUT = "tpl3_flattened.pdf"; PdfReader reader = new PdfReader(RESOURCES_FOLDER + "tpl3.pdf"); AcroFields fields = reader.AcroFields; if (fields != null && fields.Fields != null && fields.Fields.Count > 0) { FileStream @out = null; @out = new FileStream(OUTPUT_FOLDER + OUT, FileMode.Create); PdfStamper stamp = new PdfStamper(reader, @out); stamp.FormFlattening = true; AcroFields form = stamp.AcroFields; foreach (KeyValuePair <String, AcroFields.Item> e in form.Fields) { form.SetField(e.Key, e.Key); } stamp.Close(); @out.Close(); } reader.Close(); CompareTool compareTool = new CompareTool(); String errorMessage = compareTool.Compare(OUTPUT_FOLDER + OUT, RESOURCES_FOLDER + "cmp_" + OUT, OUTPUT_FOLDER, "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } }
/// <summary> /// Compares two PDF files using iText's CompareTool. /// </summary> /// <param name="dest">the PDF that resulted from the test</param> /// <param name="cmp">the reference PDF</param> protected void ComparePdf(string dest, string cmp) { if (string.IsNullOrEmpty(cmp)) { return; } CompareTool compareTool = new CompareTool(); string outPath = "./target/" + new DirectoryInfo(dest).Parent; new DirectoryInfo(outPath).Create(); if (compareRenders) { AddError(compareTool.Compare(dest, cmp, outPath, differenceImagePrefix)); AddError(compareTool.CompareLinks(dest, cmp)); } else { AddError(compareTool.CompareByContent(dest, cmp, outPath, differenceImagePrefix)); } AddError(compareTool.CompareDocumentInfo(dest, cmp)); if (errorMessage != null) { Assert.Fail(errorMessage); } }
public virtual void TestNeedAppearancesMixed() { String f1 = RESOURCES + "appearances1.pdf"; String f2 = RESOURCES + "appearances2(needAppearancesFalse).pdf"; String f3 = RESOURCES + "appearances3(needAppearancesFalseWithStreams).pdf"; String f4 = RESOURCES + "appearances4.pdf"; Directory.CreateDirectory("PdfCopyTest/"); FileStream outputPdfStream = new FileStream("PdfCopyTest/appearances(mixed).pdf", FileMode.Create); Document document = new Document(); PdfCopy copy = new PdfCopy(document, outputPdfStream); copy.SetMergeFields(); document.Open(); foreach (String f in new String[] { f1, f2, f3, f4 }) { PdfReader r = new PdfReader(f); copy.AddDocument(r); } copy.Close(); CompareTool compareTool = new CompareTool("PdfCopyTest/appearances(mixed).pdf", RESOURCES + "cmp_appearances(mixed).pdf"); String errorMessage = compareTool.Compare("PdfCopyTest/", "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } }
public virtual void TestFlattening() { if (File.Exists(INPUT_FOLDER)) { Assert.Fail("Input folder can't be found (" + INPUT_FOLDER + ")"); } Directory.CreateDirectory(OUTPUT_FOLDER); String[] files = Directory.GetFiles(INPUT_FOLDER, "*.pdf"); foreach (String file in files) { // flatten fields PdfReader reader = new PdfReader(file); PdfStamper stamper = new PdfStamper(reader, new FileStream(OUTPUT_FOLDER + Path.GetFileName(file), FileMode.Create)); stamper.FormFlattening = true; stamper.Close(); // compare CompareTool compareTool = new CompareTool(OUTPUT_FOLDER + Path.GetFileName(file), CMP_FOLDER + Path.GetFileName(file)); String errorMessage = compareTool.Compare(OUTPUT_FOLDER, "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } } }
public virtual void TestFlattening() { const string INPUT_FOLDER = RESOURCES_FOLDER + "input/"; const string CMP_FOLDER = RESOURCES_FOLDER + "cmp/"; if (File.Exists(INPUT_FOLDER)) Assert.Fail("Input folder can't be found (" + INPUT_FOLDER + ")"); Directory.CreateDirectory(OUTPUT_FOLDER); String[] files = Directory.GetFiles(INPUT_FOLDER, "*.pdf"); foreach (String file in files) { // flatten fields PdfReader reader = new PdfReader(file); PdfStamper stamper = new PdfStamper(reader, new FileStream(OUTPUT_FOLDER + Path.GetFileName(file), FileMode.Create)); stamper.FormFlattening = true; stamper.Close(); // compare CompareTool compareTool = new CompareTool(); String errorMessage = compareTool.Compare(OUTPUT_FOLDER + Path.GetFileName(file), CMP_FOLDER + Path.GetFileName(file), OUTPUT_FOLDER, "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } } }
private void Compare(String outPdf, String cmpPdf) { CompareTool ct = new CompareTool(); Assert.IsNull(ct.Compare(outPdf, cmpPdf, OUT_FOLDER, "difference")); String outXml = Path.GetFileNameWithoutExtension(outPdf); String cmpXml = Path.GetFileNameWithoutExtension(cmpPdf); outXml = OUT_FOLDER + outXml.Replace(".pdf", "") + ".xml"; cmpXml = OUT_FOLDER + "cmp_" + cmpXml.Replace("cmp_", "").Replace(".pdf", "") + ".xml"; PdfReader reader = new PdfReader(outPdf); new MyTaggedPdfReaderTool().ConvertToXml(reader, new FileStream(outXml, FileMode.Create)); reader.Close(); reader = new PdfReader(outPdf); new MyTaggedPdfReaderTool().ConvertToXml(reader, new FileStream(cmpXml, FileMode.Create)); reader.Close(); XmlDiff xmldiff = new XmlDiff(XmlDiffOptions.None); Assert.True(xmldiff.Compare(cmpXml, outXml, false)); }
protected override void ComparePdf(String outPdf, String cmpPdf) { if (!DetectCrashesAndHangUpsOnly()) { CompareTool compareTool = new CompareTool(outPdf, cmpPdf); String errorMessage = compareTool.Compare(outPath, differenceImagePrefix); if (errorMessage != null) { Assert.Fail(errorMessage); } } }
private void CompareDocuments(String @out, String cmp, bool visuallyOnly) { CompareTool compareTool = new CompareTool(); String errorMessage; if (visuallyOnly) { errorMessage = compareTool.Compare(outFolder + @out, cmpFolder + cmp, outFolder, "diff"); } else { errorMessage = compareTool.CompareByContent(outFolder + @out, cmpFolder + cmp, outFolder, "diff"); } if (errorMessage != null) Assert.Fail(errorMessage); }
public virtual void NestedTableTest() { Document doc = new Document(PageSize.A4); String file = "nestedtabletest.pdf"; PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(OUTPUT_FOLDER + file, FileMode.Create)); doc.Open(); ColumnText col = new ColumnText(writer.DirectContent); col.SetSimpleColumn( Utilities.MillimetersToPoints(25), Utilities.MillimetersToPoints(25), PageSize.A4.Right - Utilities.MillimetersToPoints(25), PageSize.A4.Top - Utilities.MillimetersToPoints(25)); PdfPTable table = new PdfPTable(3); table.HeaderRows = 1; table.AddCell("H1"); table.AddCell("H2"); table.AddCell("H3"); for (int i = 0; i < 15; i++) { PdfPCell cell = new PdfPCell(createNestedTable()); cell.Rowspan = 3; cell.Colspan = 3; table.AddCell(cell); } col.AddElement(table); while (ColumnText.HasMoreText(col.Go())) { doc.NewPage(); col.YLine = PageSize.A4.Top - Utilities.MillimetersToPoints(25); } doc.Close(); // compare CompareTool compareTool = new CompareTool(OUTPUT_FOLDER + file, CMP_FOLDER + file); String errorMessage = compareTool.Compare(OUTPUT_FOLDER, "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } }
public virtual void TestFlatteningGenerateAppearances7() { const string OUT = "test01.pdf"; TestFlatteningGenerateAppearance(RESOURCES_FOLDER + "test01.pdf", OUTPUT_FOLDER + OUT, true); CompareTool compareTool = new CompareTool(); String errorMessage = compareTool.Compare(OUTPUT_FOLDER + OUT, RESOURCES_FOLDER + "cmp_" + OUT, OUTPUT_FOLDER, "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } }
public virtual void TestFlatteningGenerateAppearances1() { Directory.CreateDirectory(OUTPUT_FOLDER); const string OUT = "noappearances-needapp-false_override-false.pdf"; TestFlatteningGenerateAppearance(RESOURCES_FOLDER + "noappearances-needapp-false.pdf", OUTPUT_FOLDER + OUT, false); CompareTool compareTool = new CompareTool(); String errorMessage = compareTool.Compare(OUTPUT_FOLDER + OUT, RESOURCES_FOLDER + "cmp_" + OUT, OUTPUT_FOLDER, "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } }
public virtual void TestFlatteningGenerateAppearances6() { const string OUT = "noappearances-needapp-true_override-none.pdf"; TestFlatteningGenerateAppearance(RESOURCES_FOLDER + "noappearances-needapp-true.pdf", OUTPUT_FOLDER + OUT, null); CompareTool compareTool = new CompareTool(); String errorMessage = compareTool.Compare(OUTPUT_FOLDER + OUT, RESOURCES_FOLDER + "cmp_" + OUT, OUTPUT_FOLDER, "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } }
public void Test() { String testName = GetTestName(); if (this.GetType() != typeof(SampleTest) && (testName.Length > 0)) { TransformHtml2Pdf(); if (DetectCrashesAndHangUpsOnly() == false) { String errorMessage = compareTool.Compare(outPath, differenceImagePrefix); if (errorMessage != null) { Assert.Fail(errorMessage); } } } }
private void CompareDocuments(String @out, String cmp, bool visuallyOnly) { CompareTool compareTool = new CompareTool(); String errorMessage; if (visuallyOnly) { errorMessage = compareTool.Compare(outFolder + @out, cmpFolder + cmp, outFolder, "diff"); } else { errorMessage = compareTool.CompareByContent(outFolder + @out, cmpFolder + cmp, outFolder, "diff"); } if (errorMessage != null) { Assert.Fail(errorMessage); } }
public virtual void DeviceNCmykRedRgbBlueGradient() { Document document = new Document(); // step 2 String dest_file = DEST_FOLDER + "/device_n_gradient_CmykRedRgbBlue.pdf"; PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(dest_file, FileMode.Create)); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfSpotColor psc_red = new PdfSpotColor("Spot Red", new CMYKColor(0f, 1f, 1f, 0f)); PdfSpotColor psc_blue = new PdfSpotColor("Spot Blue", new BaseColor(0, 0, 255)); PdfDeviceNColor deviceNColor = new PdfDeviceNColor(new PdfSpotColor[] { psc_red, psc_blue }); canvas.SaveState(); canvas.Rectangle(418, 412, -329, 189); canvas.Clip(); canvas.NewPath(); canvas.SaveState(); canvas.ConcatCTM(329f, 0f, 0f, -329f, 89f, 506.5f); canvas.PaintShading(PdfShading.SimpleAxial(writer, 0, 0, 1, 0, new DeviceNColor(deviceNColor, new float[] { 1, 0 }), new DeviceNColor(deviceNColor, new float[] { 0, 1 }))); canvas.RestoreState(); canvas.RestoreState(); canvas.SetCMYKColorStroke(0, 0, 0, 0xFF); canvas.Rectangle(418, 412, -329, 189); canvas.Stroke(); document.Close(); CompareTool compareTool = new CompareTool(); String error = compareTool.Compare(dest_file, TEST_RESOURCES_PATH + "cmp_device_n_gradient_CmykRedRgbBlue.pdf", DEST_FOLDER, "diff_"); if (error != null) { Assert.Fail(error); } }
public virtual void LabSpotBasedGradient() { // step 1 Document document = new Document(PageSize.A3); // step 2 String dest_file = DEST_FOLDER + "/lab_spot_based_gradient.pdf"; PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(dest_file, FileMode.Create)); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfLabColor pdfLabColor = new PdfLabColor(new float[] { 0.9505f, 1.0f, 1.0890f }, new float[] { 0f, 0.5f, 1.5f }, new float[] { -10, 100, -10, 100 }); PdfDeviceNColor pdfDeviceNNChannelColor = new PdfDeviceNColor(new PdfSpotColor[] { new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), new PdfSpotColor("labBlue", pdfLabColor.Rgb2lab(new BaseColor(0, 0, 255))) }); PdfSpotColor psc_lab3 = new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))); PdfSpotColor psc_lab2 = new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))); PdfSpotColor psc_lab1 = new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))); PdfSpotColor psc_lab_blue = new PdfSpotColor("labBlue", new BaseColor(0, 0, 100)); PdfDeviceNColor pdfDeviceNNChannelColor2 = new PdfDeviceNColor(new PdfSpotColor[] { psc_lab_blue, psc_lab2, psc_lab1 }); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 0, 255)), 36, 878, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96)), 90, 878, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83)), 144, 878, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 50, 50)), 198, 878, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 0, 255)).ToRgb(), 36, 824, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96)).ToRgb(), 90, 824, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83)).ToRgb(), 144, 824, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 50, 50)).ToRgb(), 198, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))), 1f), 36, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))), 0.8f), 90, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))), 0.6f), 144, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))), 0.2f), 198, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))), 1f), 252, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))), 0.8f), 306, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))), 0.6f), 360, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))), 0.2f), 416, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), 1.0f), 470, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), 0.8f), 524, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), 0.6f), 578, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), 0.2f), 634, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb1", new BaseColor(255, 0, 0)), 1f), 36, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb1", new BaseColor(255, 0, 0)), 0.8f), 90, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb1", new BaseColor(255, 0, 0)), 0.6f), 144, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb1", new BaseColor(255, 0, 0)), 0.2f), 198, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb2", new BaseColor(70, 138, 96)), 1f), 252, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb2", new BaseColor(70, 138, 96)), 0.8f), 306, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb2", new BaseColor(70, 138, 96)), 0.6f), 360, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb2", new BaseColor(70, 138, 96)), 0.2f), 416, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb3", new BaseColor(0, 217, 83)), 1.0f), 470, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb3", new BaseColor(0, 217, 83)), 0.8f), 524, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb3", new BaseColor(0, 217, 83)), 0.6f), 578, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb3", new BaseColor(0, 217, 83)), 0.2f), 634, 932, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_lab2, psc_lab_blue, psc_lab1 }), new float[] { 0, 0.0f, 1 }), 36, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.1f, 0.1f }), 90, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.2f, 0.2f }), 144, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.3f, 0.3f }), 198, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.4f, 0.4f }), 252, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_lab2, psc_lab_blue, psc_lab1, psc_lab3 }), new float[] { 0.5f, 0.5f, 1, 0.5f }), 306, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor2, new float[] { 0.6f, 0.1f, 0.5f }), 360, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.7f, 0.7f }), 416, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.8f, 0.8f }), 470, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_lab2, psc_lab_blue, psc_lab1 }), new float[] { 0.9f, 0.9f, 1 }), 524, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1 }), 578, 770, 36, 36); canvas.SaveState(); canvas.Rectangle(418, 412, -329, 189); canvas.Clip(); canvas.NewPath(); canvas.SaveState(); canvas.ConcatCTM(329f, 0f, 0f, -329f, 89f, 506.5f); canvas.PaintShading(PdfShading.SimpleAxial(writer, 0, 0, 1, 0, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 0 }), new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0, 1 }))); canvas.RestoreState(); canvas.RestoreState(); canvas.SetColorStroke(new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1 })); canvas.Rectangle(418, 412, -329, 189); canvas.Stroke(); // step 5 document.Close(); CompareTool compareTool = new CompareTool(); String error = compareTool.Compare(dest_file, TEST_RESOURCES_PATH + "cmp_lab_spot_based_gradient.pdf", DEST_FOLDER, "diff"); if (error != null) { Assert.Fail(error); } }
static void Main(string[] args) { if (args.Length < 2) { Console.WriteLine("Invalid number of arguments."); Console.WriteLine("Usage: html2Pdf.exe [input html_file/directory] [default css file]"); return; } List <FileStream> fileList = new List <FileStream>(); if (File.Exists(args[0])) { fileList.Add(new FileStream(args[0], FileMode.Open)); } else if (Directory.Exists(args[0])) { CollectHtmlFiles(fileList, args[0]); } if (fileList.Count == 0) { Console.WriteLine("Invalid html_file/directory"); Console.WriteLine("Usage: html2Pdf.exe [input html_file/directory] [default css file]"); return; } foreach (FileStream fileStream in fileList) { Document doc = new Document(PageSize.LETTER); doc.SetMargins(doc.LeftMargin, doc.RightMargin, 35, 0); String path = Path.GetDirectoryName(Path.GetFullPath(fileStream.Name)) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(fileStream.Name) + ".pdf"; PdfWriter pdfWriter = PdfWriter.GetInstance(doc, new FileStream(path, FileMode.Create)); doc.Open(); Dictionary <String, String> substFonts = new Dictionary <String, String>(); substFonts["Arial Unicode MS"] = "Helvetica"; CssFilesImpl cssFiles = new CssFilesImpl(); cssFiles.Add(XMLWorkerHelper.GetCSS(new FileStream(args[1], FileMode.Open))); StyleAttrCSSResolver cssResolver = new StyleAttrCSSResolver(cssFiles); HtmlPipelineContext hpc = new HtmlPipelineContext(new CssAppliersImpl(new UnembedFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS, substFonts))); hpc.SetImageProvider(new ImageProvider(args[0])); hpc.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(Tags.GetHtmlTagProcessorFactory()); HtmlPipeline htmlPipeline = new HtmlPipeline(hpc, new PdfWriterPipeline(doc, pdfWriter)); IPipeline pipeline = new CssResolverPipeline(cssResolver, htmlPipeline); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser xmlParse = new XMLParser(true, worker, null); xmlParse.Parse(fileStream); doc.Close(); String cmpPath = Path.GetDirectoryName(Path.GetFullPath(fileStream.Name)) + Path.DirectorySeparatorChar + "cmp_" + Path.GetFileNameWithoutExtension(fileStream.Name) + ".pdf"; if (File.Exists(cmpPath)) { CompareTool ct = new CompareTool(path, cmpPath); String outImage = "<testName>-%03d.png".Replace("<testName>", Path.GetFileNameWithoutExtension(fileStream.Name)); String cmpImage = "cmp_<testName>-%03d.png".Replace("<testName>", Path.GetFileNameWithoutExtension(fileStream.Name)); String diffPath = Path.GetDirectoryName(Path.GetFullPath(fileStream.Name)) + Path.DirectorySeparatorChar + "diff_" + Path.GetFileNameWithoutExtension(fileStream.Name) + ".png"; String errorMessage = ct.Compare(Path.GetDirectoryName(Path.GetFullPath(fileStream.Name)) + Path.DirectorySeparatorChar + "compare" + Path.DirectorySeparatorChar, diffPath); if (errorMessage != null) { Console.WriteLine(errorMessage); } } } }
public virtual void TestNeedAppearancesMixed() { String f1 = RESOURCES + "appearances1.pdf"; String f2 = RESOURCES + "appearances2(needAppearancesFalse).pdf"; String f3 = RESOURCES + "appearances3(needAppearancesFalseWithStreams).pdf"; String f4 = RESOURCES + "appearances4.pdf"; Directory.CreateDirectory("PdfCopyTest/"); FileStream outputPdfStream = new FileStream("PdfCopyTest/appearances(mixed).pdf", FileMode.Create); Document document = new Document(); PdfCopy copy = new PdfCopy(document, outputPdfStream); copy.SetMergeFields(); document.Open(); foreach (String f in new String[] {f1, f2, f3, f4}) { PdfReader r = new PdfReader(f); copy.AddDocument(r); } copy.Close(); CompareTool compareTool = new CompareTool("PdfCopyTest/appearances(mixed).pdf", RESOURCES + "cmp_appearances(mixed).pdf"); String errorMessage = compareTool.Compare("PdfCopyTest/", "diff"); if (errorMessage != null) { Assert.Fail(errorMessage); } }
public virtual void DeviceNSpotBasedGradient() { // step 1 Document document = new Document(PageSize.A3); // step 2 String dest_file = DEST_FOLDER + "/device_n_gradient_base.pdf"; PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(dest_file, FileMode.Create)); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfSpotColor psc_gray = new PdfSpotColor("iTextGray", new GrayColor(0f)); PdfSpotColor psc_cmyk_yell = new PdfSpotColor("iTextYellow", new CMYKColor(0f, 0f, 1f, 0f)); PdfSpotColor psc_cmyk_magen = new PdfSpotColor("iTextMagenta", new CMYKColor(0f, 1f, 0f, 0f)); PdfSpotColor psc_rgb_blue = new PdfSpotColor("iTextBlue", new BaseColor(0, 0, 255)); PdfDeviceNColor pdfDeviceNNChannelColor = new PdfDeviceNColor(new PdfSpotColor[] {psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue}); PdfDeviceNColor pdfDeviceNNChannelColor2 = new PdfDeviceNColor(new PdfSpotColor[] {psc_cmyk_magen, psc_cmyk_yell, psc_rgb_blue}); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextGray", new GrayColor(0f)), 0.8f), 36, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextYellow", new CMYKColor(0f, 0f, 1f, 0f)), 0.8f), 90, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextMagenta", new CMYKColor(0f, 1f, 0f, 0f)), 0.4f), 144, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextBlue", new BaseColor(0, 0, 255)), 0.7f), 198, 824, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] {psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue}), new float[] {0, 0.0f, 1}), 36, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] {0.1f, 0.1f, 1}), 90, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] {0.2f, 0.2f, 1}), 144, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] {0.3f, 0.3f, 1}), 198, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] {0.4f, 0.4f, 1}), 252, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] {psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue, psc_gray}), new float[] {0.5f, 0.5f, 1, 0.5f}), 306, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor2, new float[] {0.6f, 0.1f, 1}), 360, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] {0.7f, 0.7f, 1}), 416, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] {0.8f, 0.8f, 1}), 470, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] {psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue}), new float[] {0.9f, 0.9f, 1}), 524, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] {1, 1, 1}), 578, 770, 36, 36); PdfDeviceNColor pdfDeviceNColor = new PdfDeviceNColor(new PdfSpotColor[] {psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue}); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0, 0, 1})); canvas.Rectangle(36, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0.1f, 0.1f, 1})); canvas.Rectangle(90, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0.2f, 0.2f, 1})); canvas.Rectangle(144, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0.3f, 0.3f, 1})); canvas.Rectangle(198, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0.4f, 0.4f, 1})); canvas.Rectangle(252, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0.5f, 0.5f, 1})); canvas.Rectangle(306, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0.6f, 0.1f, 1})); canvas.Rectangle(360, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0.7f, 0.7f, 1})); canvas.Rectangle(416, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0.8f, 0.8f, 1})); canvas.Rectangle(470, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {0.9f, 0.9f, 1})); canvas.Rectangle(524, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] {1, 1, 1})); canvas.Rectangle(578, 716, 36, 36); canvas.FillStroke(); canvas.SaveState(); canvas.Rectangle(418, 412, -329, 189); canvas.Clip(); canvas.NewPath(); canvas.SaveState(); canvas.ConcatCTM(329f, 0f, 0f, -329f, 89f, 506.5f); canvas.PaintShading(PdfShading.SimpleAxial(writer, 0, 0, 1, 0, new DeviceNColor(pdfDeviceNNChannelColor, new float[] {1, 1, 0}), new DeviceNColor(pdfDeviceNNChannelColor, new float[] {0, 0, 1}))); canvas.RestoreState(); canvas.RestoreState(); canvas.SetColorStroke(new DeviceNColor(pdfDeviceNNChannelColor, new float[] {1, 1, 1})); canvas.Rectangle(418, 412, -329, 189); canvas.Stroke(); // step 5 document.Close(); CompareTool compareTool = new CompareTool(); String error = compareTool.Compare(dest_file, TEST_RESOURCES_PATH + "cmp_device_n_gradient_base.pdf", DEST_FOLDER, "diff_"); if (error != null) { Assert.Fail(error); } }
/// <summary> /// Compares two PDF files using iText's CompareTool. /// </summary> /// <param name="dest">the PDF that resulted from the test</param> /// <param name="cmp">the reference PDF</param> protected void ComparePdf(string dest, string cmp) { if (string.IsNullOrEmpty(cmp)) return; CompareTool compareTool = new CompareTool(); string outPath = "./target/" + new DirectoryInfo(dest).Parent; new DirectoryInfo(outPath).Create(); if (compareRenders) { AddError(compareTool.Compare(dest, cmp, outPath, differenceImagePrefix)); AddError(compareTool.CompareLinks(dest, cmp)); } else { AddError(compareTool.CompareByContent(dest, cmp, outPath, differenceImagePrefix)); } AddError(compareTool.CompareDocumentInfo(dest, cmp)); if (errorMessage != null) Assert.Fail(errorMessage); }
public virtual void DeviceNSpotBasedGradient() { // step 1 Document document = new Document(PageSize.A3); // step 2 String dest_file = DEST_FOLDER + "/device_n_gradient_base.pdf"; PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(dest_file, FileMode.Create)); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfSpotColor psc_gray = new PdfSpotColor("iTextGray", new GrayColor(0f)); PdfSpotColor psc_cmyk_yell = new PdfSpotColor("iTextYellow", new CMYKColor(0f, 0f, 1f, 0f)); PdfSpotColor psc_cmyk_magen = new PdfSpotColor("iTextMagenta", new CMYKColor(0f, 1f, 0f, 0f)); PdfSpotColor psc_rgb_blue = new PdfSpotColor("iTextBlue", new BaseColor(0, 0, 255)); PdfDeviceNColor pdfDeviceNNChannelColor = new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }); PdfDeviceNColor pdfDeviceNNChannelColor2 = new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_magen, psc_cmyk_yell, psc_rgb_blue }); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextGray", new GrayColor(0f)), 0.8f), 36, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextYellow", new CMYKColor(0f, 0f, 1f, 0f)), 0.8f), 90, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextMagenta", new CMYKColor(0f, 1f, 0f, 0f)), 0.4f), 144, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextBlue", new BaseColor(0, 0, 255)), 0.7f), 198, 824, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }), new float[] { 0, 0.0f, 1 }), 36, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.1f, 0.1f, 1 }), 90, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.2f, 0.2f, 1 }), 144, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.3f, 0.3f, 1 }), 198, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.4f, 0.4f, 1 }), 252, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue, psc_gray }), new float[] { 0.5f, 0.5f, 1, 0.5f }), 306, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor2, new float[] { 0.6f, 0.1f, 1 }), 360, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.7f, 0.7f, 1 }), 416, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.8f, 0.8f, 1 }), 470, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }), new float[] { 0.9f, 0.9f, 1 }), 524, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1, 1 }), 578, 770, 36, 36); PdfDeviceNColor pdfDeviceNColor = new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0, 0, 1 })); canvas.Rectangle(36, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.1f, 0.1f, 1 })); canvas.Rectangle(90, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.2f, 0.2f, 1 })); canvas.Rectangle(144, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.3f, 0.3f, 1 })); canvas.Rectangle(198, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.4f, 0.4f, 1 })); canvas.Rectangle(252, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.5f, 0.5f, 1 })); canvas.Rectangle(306, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.6f, 0.1f, 1 })); canvas.Rectangle(360, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.7f, 0.7f, 1 })); canvas.Rectangle(416, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.8f, 0.8f, 1 })); canvas.Rectangle(470, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.9f, 0.9f, 1 })); canvas.Rectangle(524, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 1, 1, 1 })); canvas.Rectangle(578, 716, 36, 36); canvas.FillStroke(); canvas.SaveState(); canvas.Rectangle(418, 412, -329, 189); canvas.Clip(); canvas.NewPath(); canvas.SaveState(); canvas.ConcatCTM(329f, 0f, 0f, -329f, 89f, 506.5f); canvas.PaintShading(PdfShading.SimpleAxial(writer, 0, 0, 1, 0, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1, 0 }), new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0, 0, 1 }))); canvas.RestoreState(); canvas.RestoreState(); canvas.SetColorStroke(new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1, 1 })); canvas.Rectangle(418, 412, -329, 189); canvas.Stroke(); // step 5 document.Close(); CompareTool compareTool = new CompareTool(); String error = compareTool.Compare(dest_file, TEST_RESOURCES_PATH + "cmp_device_n_gradient_base.pdf", DEST_FOLDER, "diff_"); if (error != null) { Assert.Fail(error); } }
static void Main(string[] args) { if (args.Length < 2) { Console.WriteLine("Invalid number of arguments."); Console.WriteLine("Usage: html2Pdf.exe [input html_file/directory] [default css file]"); return; } List<FileStream> fileList = new List<FileStream>(); if (File.Exists(args[0])) { fileList.Add(new FileStream(args[0], FileMode.Open)); } else if (Directory.Exists(args[0])) { CollectHtmlFiles(fileList, args[0]); } if (fileList.Count == 0) { Console.WriteLine("Invalid html_file/directory"); Console.WriteLine("Usage: html2Pdf.exe [input html_file/directory] [default css file]"); return; } foreach (FileStream fileStream in fileList) { Document doc = new Document(PageSize.LETTER); doc.SetMargins(doc.LeftMargin, doc.RightMargin, 35, 0); String path = Path.GetDirectoryName(Path.GetFullPath(fileStream.Name)) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(fileStream.Name) + ".pdf"; PdfWriter pdfWriter = PdfWriter.GetInstance(doc, new FileStream(path, FileMode.Create)); doc.Open(); Dictionary<String, String> substFonts = new Dictionary<String, String>(); substFonts["Arial Unicode MS"] = "Helvetica"; CssFilesImpl cssFiles = new CssFilesImpl(); cssFiles.Add(XMLWorkerHelper.GetCSS(new FileStream(args[1], FileMode.Open))); StyleAttrCSSResolver cssResolver = new StyleAttrCSSResolver(cssFiles); HtmlPipelineContext hpc = new HtmlPipelineContext(new CssAppliersImpl(new UnembedFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS, substFonts))); hpc.SetImageProvider(new ImageProvider(args[0])); hpc.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(Tags.GetHtmlTagProcessorFactory()); HtmlPipeline htmlPipeline = new HtmlPipeline(hpc, new PdfWriterPipeline(doc, pdfWriter)); IPipeline pipeline = new CssResolverPipeline(cssResolver, htmlPipeline); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser xmlParse = new XMLParser(true, worker, null); xmlParse.Parse(fileStream); doc.Close(); String cmpPath = Path.GetDirectoryName(Path.GetFullPath(fileStream.Name)) + Path.DirectorySeparatorChar + "cmp_" + Path.GetFileNameWithoutExtension(fileStream.Name) + ".pdf"; if (File.Exists(cmpPath)) { CompareTool ct = new CompareTool(path, cmpPath); String outImage = "<testName>-%03d.png".Replace("<testName>", Path.GetFileNameWithoutExtension(fileStream.Name) ); String cmpImage = "cmp_<testName>-%03d.png".Replace("<testName>", Path.GetFileNameWithoutExtension(fileStream.Name) ); String diffPath = Path.GetDirectoryName(Path.GetFullPath(fileStream.Name)) + Path.DirectorySeparatorChar + "diff_" + Path.GetFileNameWithoutExtension(fileStream.Name); String errorMessage = ct.Compare(Path.GetDirectoryName(Path.GetFullPath(fileStream.Name)) + Path.DirectorySeparatorChar + "compare" + Path.DirectorySeparatorChar, diffPath); if (errorMessage != null) { Console.WriteLine(errorMessage); } } } }
public virtual void LabSpotBasedGradient() { // step 1 Document document = new Document(PageSize.A3); // step 2 String dest_file = DEST_FOLDER + "/lab_spot_based_gradient.pdf"; PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(dest_file, FileMode.Create)); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfLabColor pdfLabColor = new PdfLabColor(new float[] {0.9505f, 1.0f, 1.0890f}, new float[] {0f, 0.5f, 1.5f}, new float[] {-10, 100, -10, 100}); PdfDeviceNColor pdfDeviceNNChannelColor = new PdfDeviceNColor(new PdfSpotColor[] { new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), new PdfSpotColor("labBlue", pdfLabColor.Rgb2lab(new BaseColor(0, 0, 255))) }); PdfSpotColor psc_lab3 = new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))); PdfSpotColor psc_lab2 = new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))); PdfSpotColor psc_lab1 = new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))); PdfSpotColor psc_lab_blue = new PdfSpotColor("labBlue", new BaseColor(0, 0, 100)); PdfDeviceNColor pdfDeviceNNChannelColor2 = new PdfDeviceNColor(new PdfSpotColor[]{psc_lab_blue, psc_lab2, psc_lab1}); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 0, 255)), 36, 878, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96)), 90, 878, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83)), 144, 878, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 50, 50)), 198, 878, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 0, 255)).ToRgb(), 36, 824, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96)).ToRgb(), 90, 824, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83)).ToRgb(), 144, 824, 36, 36); ColorRectangle(canvas, pdfLabColor.Rgb2lab(new BaseColor(0, 50, 50)).ToRgb(), 198, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))), 1f), 36, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))), 0.8f), 90, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))), 0.6f), 144, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab1", pdfLabColor.Rgb2lab(new BaseColor(255, 0, 0))), 0.2f), 198, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))), 1f), 252, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))), 0.8f), 306, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))), 0.6f), 360, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab2", pdfLabColor.Rgb2lab(new BaseColor(70, 138, 96))), 0.2f), 416, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), 1.0f), 470, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), 0.8f), 524, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), 0.6f), 578, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("lab3", pdfLabColor.Rgb2lab(new BaseColor(0, 217, 83))), 0.2f), 634, 986, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb1", new BaseColor(255, 0, 0)), 1f), 36, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb1", new BaseColor(255, 0, 0)), 0.8f), 90, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb1", new BaseColor(255, 0, 0)), 0.6f), 144, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb1", new BaseColor(255, 0, 0)), 0.2f), 198, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb2", new BaseColor(70, 138, 96)), 1f), 252, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb2", new BaseColor(70, 138, 96)), 0.8f), 306, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb2", new BaseColor(70, 138, 96)), 0.6f), 360, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb2", new BaseColor(70, 138, 96)), 0.2f), 416, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb3", new BaseColor(0, 217, 83)), 1.0f), 470, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb3", new BaseColor(0, 217, 83)), 0.8f), 524, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb3", new BaseColor(0, 217, 83)), 0.6f), 578, 932, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("rgb3", new BaseColor(0, 217, 83)), 0.2f), 634, 932, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[]{psc_lab2, psc_lab_blue, psc_lab1}), new float[]{0, 0.0f, 1}), 36, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[]{0.1f, 0.1f}), 90, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[]{0.2f, 0.2f}), 144, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[]{0.3f, 0.3f}), 198, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[]{0.4f, 0.4f}), 252, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[]{psc_lab2, psc_lab_blue, psc_lab1, psc_lab3}), new float[]{0.5f, 0.5f, 1, 0.5f}), 306, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor2, new float[]{0.6f, 0.1f, 0.5f}), 360, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[]{0.7f, 0.7f}), 416, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[]{0.8f, 0.8f}), 470, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[]{psc_lab2, psc_lab_blue, psc_lab1}), new float[]{0.9f, 0.9f, 1}), 524, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[]{1, 1}), 578, 770, 36, 36); canvas.SaveState(); canvas.Rectangle(418, 412, -329, 189); canvas.Clip(); canvas.NewPath(); canvas.SaveState(); canvas.ConcatCTM(329f, 0f, 0f, -329f, 89f, 506.5f); canvas.PaintShading(PdfShading.SimpleAxial(writer, 0, 0, 1, 0, new DeviceNColor(pdfDeviceNNChannelColor, new float[]{1, 0}), new DeviceNColor(pdfDeviceNNChannelColor, new float[]{ 0, 1}))); canvas.RestoreState(); canvas.RestoreState(); canvas.SetColorStroke(new DeviceNColor(pdfDeviceNNChannelColor, new float[]{1, 1})); canvas.Rectangle(418, 412, -329, 189); canvas.Stroke(); // step 5 document.Close(); CompareTool compareTool = new CompareTool(); String error = compareTool.Compare(dest_file, TEST_RESOURCES_PATH + "cmp_lab_spot_based_gradient.pdf", DEST_FOLDER, "diff"); if (error != null) { Assert.Fail(error); } }
public virtual void DeviceNCmykRedRgbBlueGradient() { Document document = new Document(); // step 2 String dest_file = DEST_FOLDER + "/device_n_gradient_CmykRedRgbBlue.pdf"; PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(dest_file, FileMode.Create)); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfSpotColor psc_red = new PdfSpotColor("Spot Red", new CMYKColor(0f, 1f, 1f, 0f)); PdfSpotColor psc_blue = new PdfSpotColor("Spot Blue", new BaseColor(0, 0, 255)); PdfDeviceNColor deviceNColor = new PdfDeviceNColor(new PdfSpotColor[] {psc_red, psc_blue}); canvas.SaveState(); canvas.Rectangle(418, 412, -329, 189); canvas.Clip(); canvas.NewPath(); canvas.SaveState(); canvas.ConcatCTM(329f, 0f, 0f, -329f, 89f, 506.5f); canvas.PaintShading(PdfShading.SimpleAxial(writer, 0, 0, 1, 0, new DeviceNColor(deviceNColor, new float[] {1, 0}), new DeviceNColor(deviceNColor, new float[] {0, 1}))); canvas.RestoreState(); canvas.RestoreState(); canvas.SetCMYKColorStroke(0, 0, 0, 0xFF); canvas.Rectangle(418, 412, -329, 189); canvas.Stroke(); document.Close(); CompareTool compareTool = new CompareTool(); String error = compareTool.Compare(dest_file, TEST_RESOURCES_PATH + "cmp_device_n_gradient_CmykRedRgbBlue.pdf", DEST_FOLDER, "diff_"); if (error != null) { Assert.Fail(error); } }
private void Compare(String outPdf, String cmpPdf) { CompareTool ct = new CompareTool(outPdf, cmpPdf); Assert.IsNull(ct.Compare(OUT_FOLDER, "difference")); String outXml = Path.GetFileNameWithoutExtension(outPdf); String cmpXml = Path.GetFileNameWithoutExtension(cmpPdf); outXml = OUT_FOLDER + outXml.Replace(".pdf", "") + ".xml"; cmpXml = OUT_FOLDER + "cmp_" + cmpXml.Replace("cmp_", "").Replace(".pdf", "") + ".xml"; PdfReader reader = new PdfReader(outPdf); new MyTaggedPdfReaderTool().ConvertToXml(reader, new FileStream(outXml, FileMode.Create)); reader.Close(); reader = new PdfReader(outPdf); new MyTaggedPdfReaderTool().ConvertToXml(reader, new FileStream(cmpXml, FileMode.Create)); reader.Close(); XmlDiff xmldiff = new XmlDiff(XmlDiffOptions.None); Assert.True(xmldiff.Compare(cmpXml, outXml, false)); }