Skip to content

Commit c702758

Browse files
committed
[RELEASE] iText 7 pdfHTML - 3.0.2
https://github.com/itext/i7j-pdfhtml/releases/tag/3.0.2 * release_branch: [RELEASE] pdfHTML 3.0.2 Add LineHeightTest#inlineBlockFloatAndLineHeightTest Add support of background-clip and background-origin Link TODOs in w3c/css21/text to tickets Refactor TaggedPdfFormTest to decrease code duplication Implement supporting background-repeat CSS property Add test on conversion to a tagged doc with acroform Support 'background-size' style Add tests for "background-repeat" css property Remove obsolete TODO Delete not reproduced TODOs. Add appropriate tickets to reproduced TODOs Tests fixes corresponding to changes in logic implementation due to supporting background-position Implementation for supporting background-position. Add tests for "background-blend-mode" css property Background blend mode implementation Add corresponding jira ticket and test Add corresponding jira ticket and test Deleting useless TODO's Update w3c tests input files which use Ahem font Update a lot of cmp files Reduce the length of test names Remove logmessages and link to Ahem font in res files Add remaining w3c linebox tests Extract HtmlUtils#isStyleSheetLink into SXP and deprecate the old method Add background svg test Add missing copyright headers Added support of multiple backgrounds Fix cmp files names in BackgroundTest Add new tests for specific float and indent scenario Update the test's TODO remark Fix TODO remarks Fix w3c css_backgrounds root tests name to be less than windows path length limit Add missing copyright headers Add w3c css-backgrounds root tests Add tests proving url-s from html reach ResourceResolver unmodified Add tests for 'capitalization' rules Fix falling tests Add missing copyright headers Add integration tests for overflow-wrap and word-break properties Add missing copyright headers Add background properties tests group css2 - PART_4 Shorten test names, so that they could be run on CI Add missing copyright headers Add background properties tests group css2 - PART_2 Adjust some TODO remarks, remove not supported test Add missing copyright headers Add box-shadow tests Improve TODOs Add missing copyright headers Add tests for background-origin Add missing copyright headers Add background-attachment-local tests Shorten test names so that they could be run on CI Remove line Add missing copyright headers Add new reference tests Add missing copyright headers Add background-clip, background-position, background-repeat tests Add missing copyright headers Add new background-size tests Add missing copyright headers Add background properties tests, group css2 - PART_3 Add missing copyright headers Add background properties tests, group css2 - PART_1 Move code duplicates to ReflectionUtils Implement capitalize style for inline elements Refactor references Add missing copyright headers Refactor resource resolver tests, add LinkTest#simpleLinkTest test Fixed tests when css attribute is invalid. Added Integration test to check if invalid value ignored Fix TODOs in BorderTest Move PdfEndPageEventWithAcroformTest from samples internal Change resource image in test for autoportability Remove unapplicable TODO remark Support for custom ResourceResolver Support object-fit css property Resize background image Bind a TODO commend to the correct ticket number Remove a TODO comment Add new tests demonstrating missing support of table body background color Use generalized Jenkinsfile in the pipeline-library Add new test and link a TODO to the corresponding ticket [RELEASE] Update dependency versions Add missing copyright headers Add shipped fonts Unicode coverage test
2 parents 992c837 + c6dc57c commit c702758

File tree

5,226 files changed

+102834
-4026
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

5,226 files changed

+102834
-4026
lines changed

Jenkinsfile

Lines changed: 4 additions & 291 deletions
Original file line numberDiff line numberDiff line change
@@ -1,294 +1,7 @@
11
#!/usr/bin/env groovy
2-
@Library('pipeline-library') _
2+
@Library('pipeline-library')_
33

4-
def schedule, sonarBranchName, sonarBranchTarget
5-
switch (env.BRANCH_NAME) {
6-
case ~/.*master.*/:
7-
schedule = '@monthly'
8-
sonarBranchName = '-Dsonar.branch.name=master'
9-
sonarBranchTarget = ''
10-
break
11-
case ~/.*develop.*/:
12-
schedule = '@midnight'
13-
sonarBranchName = '-Dsonar.branch.name=develop'
14-
sonarBranchTarget = '-Dsonar.branch.target=master'
15-
break
16-
default:
17-
schedule = ''
18-
sonarBranchName = '-Dsonar.branch.name=' + env.BRANCH_NAME
19-
sonarBranchTarget = '-Dsonar.branch.target=develop'
20-
break
21-
}
4+
def repoName = "pdfHtml"
5+
def dependencyRegex = "itextcore"
226

23-
pipeline {
24-
25-
agent any
26-
27-
environment {
28-
JDK_VERSION = 'jdk-8-oracle'
29-
}
30-
31-
options {
32-
ansiColor 'xterm'
33-
buildDiscarder logRotator(artifactNumToKeepStr: '1')
34-
parallelsAlwaysFailFast()
35-
skipStagesAfterUnstable()
36-
timeout time: 1, unit: 'HOURS'
37-
timestamps()
38-
}
39-
40-
triggers {
41-
cron schedule
42-
}
43-
44-
tools {
45-
maven 'M3'
46-
jdk "${JDK_VERSION}"
47-
}
48-
49-
stages {
50-
stage('Wait for blocking jobs') {
51-
steps {
52-
script {
53-
properties[[
54-
$class : 'BuildBlockerProperty',
55-
blockLevel : 'GLOBAL',
56-
blockingJobs : "^iText_7_Java/itextcore/${env.JOB_BASE_NAME}\$",
57-
scanQueueFor : 'ALL',
58-
useBuildBlocker: true
59-
]]
60-
}
61-
}
62-
}
63-
stage('Build') {
64-
options {
65-
retry 2
66-
}
67-
stages {
68-
stage('Clean workspace') {
69-
options {
70-
timeout time: 5, unit: 'MINUTES'
71-
}
72-
steps {
73-
withMaven(jdk: "${JDK_VERSION}", maven: 'M3') {
74-
sh 'mvn --threads 2C --no-transfer-progress clean ' +
75-
'dependency:purge-local-repository ' +
76-
"-Dmaven.repo.local=${env.WORKSPACE.replace '\\', '/'}/.repository " +
77-
'-Dinclude=com.itextpdf -DresolutionFuzziness=groupId -DreResolve=false'
78-
}
79-
script {
80-
try {
81-
sh "rm -rf ${env.WORKSPACE.replace('\\', '/')}/downloads"
82-
} catch (Exception ignored) {
83-
}
84-
}
85-
}
86-
}
87-
stage('Install branch dependencies') {
88-
options {
89-
timeout time: 5, unit: 'MINUTES'
90-
}
91-
when {
92-
not {
93-
anyOf {
94-
branch "master"
95-
branch "develop"
96-
}
97-
}
98-
}
99-
steps {
100-
script {
101-
getAndConfigureJFrogCLI()
102-
sh "./jfrog rt dl branch-artifacts/${env.JOB_BASE_NAME}/**/java/ downloads/"
103-
if (fileExists("downloads")) {
104-
dir("downloads") {
105-
def mainPomFiles = findFiles(glob: '**/main.pom')
106-
mainPomFiles.each { pomFile ->
107-
pomPath = pomFile.path.replace("\\", "/")
108-
sh "mvn org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file --quiet -Dmaven.repo.local=${env.WORKSPACE.replace('\\', '/')}/.repository -Dpackaging=pom -Dfile=${pomPath} -DpomFile=${pomPath}"
109-
}
110-
def pomFiles = findFiles(glob: '**/*.pom')
111-
pomFiles.each { pomFile ->
112-
if (pomFile.name != "main.pom") {
113-
pomPath = pomFile.path.replace("\\", "/")
114-
sh "mvn org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file --quiet -Dmaven.repo.local=${env.WORKSPACE.replace('\\', '/')}/.repository -Dpackaging=pom -Dfile=${pomPath} -DpomFile=${pomPath}"
115-
}
116-
}
117-
def jarFiles = findFiles(glob: '**/*.jar')
118-
jarFiles.each { jarFile ->
119-
jarPath = jarFile.path.replace("\\", "/")
120-
sh "mvn org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file --quiet -Dmaven.repo.local=${env.WORKSPACE.replace('\\', '/')}/.repository -Dfile=${jarPath}"
121-
}
122-
}
123-
}
124-
}
125-
}
126-
}
127-
stage('Compile') {
128-
options {
129-
timeout time: 10, unit: 'MINUTES'
130-
}
131-
steps {
132-
withMaven(jdk: "${JDK_VERSION}", maven: 'M3') {
133-
sh 'mvn --threads 2C package ' +
134-
"-Dmaven.repo.local=${env.WORKSPACE.replace '\\', '/'}/.repository " +
135-
'-Dmaven.test.skip=true'
136-
}
137-
}
138-
}
139-
}
140-
post {
141-
failure {
142-
sleep time: 2, unit: 'MINUTES'
143-
}
144-
success {
145-
script { currentBuild.result = 'SUCCESS' }
146-
}
147-
}
148-
}
149-
stage('Static Code Analysis') {
150-
options {
151-
timeout time: 1, unit: 'HOURS'
152-
}
153-
steps {
154-
withMaven(jdk: "${JDK_VERSION}", maven: 'M3') {
155-
sh 'mvn --no-transfer-progress verify --activate-profiles qa ' +
156-
"-Dmaven.repo.local=${env.WORKSPACE.replace '\\', '/'}/.repository " +
157-
'-Dmaven.test.skip=true -Dpmd.analysisCache=true'
158-
}
159-
recordIssues tools: [
160-
checkStyle(),
161-
pmdParser(),
162-
spotBugs(useRankAsPriority: true)
163-
]
164-
dependencyCheckPublisher pattern: 'target/dependency-check-report.xml'
165-
}
166-
}
167-
stage('Run Tests') {
168-
options {
169-
timeout time: 30, unit: 'MINUTES'
170-
}
171-
steps {
172-
withMaven(jdk: "${JDK_VERSION}", maven: 'M3') {
173-
sh 'mvn --no-transfer-progress --activate-profiles test ' +
174-
"-Dmaven.repo.local=${env.WORKSPACE.replace '\\', '/'}/.repository " +
175-
'-DgsExec="${gsExec}" -DcompareExec="${compareExec}" ' +
176-
'-Dmaven.main.skip=true ' +
177-
'-Dmaven.test.skip=false -Dmaven.test.failure.ignore=false ' +
178-
'-Ddependency-check.skip=true -Dmaven.javadoc.skip=true ' +
179-
'org.jacoco:jacoco-maven-plugin:prepare-agent verify org.jacoco:jacoco-maven-plugin:report'
180-
}
181-
}
182-
}
183-
stage("Quality Gate") {
184-
steps {
185-
withMaven(jdk: "${JDK_VERSION}", maven: 'M3') {
186-
withSonarQubeEnv('Sonar') {
187-
sh 'mvn --no-transfer-progress sonar:sonar ' +
188-
"-Dmaven.repo.local=${env.WORKSPACE.replace '\\', '/'}/.repository " +
189-
'-Dsonar.java.spotbugs.reportPaths="target/spotbugs.xml" ' +
190-
sonarBranchName + ' ' + sonarBranchTarget
191-
}
192-
}
193-
timeout(time: 1, unit: 'HOURS') {
194-
waitForQualityGate abortPipeline: true
195-
}
196-
}
197-
}
198-
stage('Artifactory Deploy') {
199-
options {
200-
timeout time: 5, unit: 'MINUTES'
201-
}
202-
when {
203-
anyOf {
204-
branch "master"
205-
branch "develop"
206-
}
207-
}
208-
steps {
209-
script {
210-
def server = Artifactory.server('itext-artifactory')
211-
def rtMaven = Artifactory.newMavenBuild()
212-
rtMaven.deployer server: server, releaseRepo: 'releases', snapshotRepo: 'snapshot'
213-
rtMaven.tool = 'M3'
214-
rtMaven.opts = "-Dmaven.repo.local=${env.WORKSPACE.replace '\\', '/'}/.repository"
215-
def buildInfo = rtMaven.run pom: 'pom.xml',
216-
goals: '--no-transfer-progress install -Dmaven.main.skip=true -Dmaven.test.skip=true ' +
217-
'-Ddependency-check.skip=true -Dspotbugs.skip=true ' +
218-
'-Dmaven.javadoc.failOnError=false'
219-
server.publishBuildInfo buildInfo
220-
}
221-
}
222-
}
223-
stage('Branch Artifactory Deploy') {
224-
options {
225-
timeout time: 5, unit: 'MINUTES'
226-
}
227-
when {
228-
not {
229-
anyOf {
230-
branch "master"
231-
branch "develop"
232-
}
233-
}
234-
}
235-
steps {
236-
script {
237-
if (env.GIT_URL) {
238-
repoName = ("${env.GIT_URL}" =~ /(.*\/)(.*)(\.git)/)[0][2]
239-
findFiles(glob: 'target/*.jar').each { item ->
240-
if (!(item ==~ /.*\/[fs]b-contrib-.*?.jar/) && !(item ==~ /.*\/findsecbugs-plugin-.*?.jar/) && !(item ==~ /.*-sources.jar/) && !(item ==~ /.*-javadoc.jar/)) {
241-
sh "./jfrog rt u \"${item.path}\" branch-artifacts/${env.BRANCH_NAME}/${repoName}/java/ --recursive=false --build-name ${env.BRANCH_NAME} --build-number ${env.BUILD_NUMBER} --props \"vcs.revision=${env.GIT_COMMIT};repo.name=${repoName}\""
242-
}
243-
}
244-
findFiles(glob: '**/pom.xml').each { item ->
245-
def pomPath = item.path.replace('\\', '/')
246-
if (!(pomPath ==~ /.*target.*/)) {
247-
def resPomName = "main.pom"
248-
def subDirMatcher = (pomPath =~ /^.*(?<=\/|^)(.*)\/pom\.xml/)
249-
if (subDirMatcher.matches()) {
250-
resPomName = "${subDirMatcher[0][1]}.pom"
251-
}
252-
sh "./jfrog rt u \"${item.path}\" branch-artifacts/${env.BRANCH_NAME}/${repoName}/java/${resPomName} --recursive=false --build-name ${env.BRANCH_NAME} --build-number ${env.BUILD_NUMBER} --props \"vcs.revision=${env.GIT_COMMIT};repo.name=${repoName}\""
253-
}
254-
}
255-
}
256-
}
257-
}
258-
}
259-
}
260-
261-
post {
262-
always {
263-
echo 'One way or another, I have finished \uD83E\uDD16'
264-
}
265-
success {
266-
echo 'I succeeeded! \u263A'
267-
cleanWs deleteDirs: true
268-
}
269-
unstable {
270-
echo 'I am unstable \uD83D\uDE2E'
271-
}
272-
failure {
273-
echo 'I failed \uD83D\uDCA9'
274-
}
275-
changed {
276-
echo 'Things were different before... \uD83E\uDD14'
277-
}
278-
fixed {
279-
script {
280-
if (env.BRANCH_NAME.contains('master') || env.BRANCH_NAME.contains('develop')) {
281-
slackNotifier "#ci", currentBuild.currentResult, "${env.BRANCH_NAME} - Back to normal"
282-
}
283-
}
284-
}
285-
regression {
286-
script {
287-
if (env.BRANCH_NAME.contains('master') || env.BRANCH_NAME.contains('develop')) {
288-
slackNotifier "#ci", currentBuild.currentResult, "${env.BRANCH_NAME} - First failure"
289-
}
290-
}
291-
}
292-
}
293-
294-
}
7+
automaticJavaBuild(repoName, dependencyRegex)

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
<parent>
66
<groupId>com.itextpdf</groupId>
77
<artifactId>root</artifactId>
8-
<version>7.1.12</version>
8+
<version>7.1.13</version>
99
<relativePath/>
1010
</parent>
1111

1212
<artifactId>html2pdf</artifactId>
13-
<version>3.0.1</version>
13+
<version>3.0.2</version>
1414

1515
<name>pdfHTML</name>
1616
<description>pdfHTML is an iText 7 add-on that lets you to parse (X)HTML snippets and the associated CSS and converts
@@ -116,4 +116,4 @@
116116
</plugin>
117117
</plugins>
118118
</build>
119-
</project>
119+
</project>

0 commit comments

Comments
 (0)