Skip to content

Commit d4d5ca6

Browse files
committed
[RELEASE] iText 7 pdfSweep - 2.0.5
https://github.com/itext/i7n-pdfsweep/releases/tag/2.0.5 * release/2.0.5: [RELEASE] 2.0.5-SNAPSHOT -> 2.0.5 Update .nuspec to list git repo information Update copyright year Use a version placeholder in doxyfile Update port-hash Add missing copyright headers Preserve image cs while cleaning it up and processing fixes. Update autoported files Preparing for autoport Change Jenkinsfile to retry clearing the workspace and compiling when anything fails Change Jenkinsfile so that the build is blocked when there is an itextcore build running Update Bouncy Castle version Update port-hash Update port-hash after release [RELEASE] Update dependency versions Fix annotation position and add corresponding ticket to ignore description Exclude internal classes from public documentation. Add inheritance ExtendedITextTest for test classes. DEVSIX-3362 Update autoported files Fix GetCustomAttribute extension method by making it work with this assembly Remove documented exceptions from manual files. Update autoported files Update License.md for all AGPL products Improve javadocs. Update autoported files Change csproj file to correct copy VeraPdf jar and license file Update port-hash Update autoported files Remove 7.0 related branches from Jenkinsfile Add cleanUp colorspace test Update port-hash after release [RELEASE] 2.0.4-SNAPSHOT -> 2.0.5-SNAPSHOT Remove redundant try in PdfCleanUpFilter Update port-hash Update port-hash Update autoported files Improve string comparison in PdfCleanupTool Add configuration file for doxygen tool Add autogenerated configuration file for doxygen tool Add test Replace http links in Nuspec file with https ones Update port-hash Add new tests which demonstrate redaction of some rotated page's content. Update port-hash Add a Jenkinsfile Update port-hash Update port-hash [RELEASE] Update dependency versions Update port-hash Add .mailmap file Update schema version and add license to nuspec Update port-hash Update cmp-s Add additional file types to .gitattributes Update port-hash after release [RELEASE] 2.0.4-SNAPSHOT -> 2.0.5-SNAPSHOT
2 parents a7d3d7f + 6d59c8d commit d4d5ca6

File tree

71 files changed

+3575
-509
lines changed

Some content is hidden

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

71 files changed

+3575
-509
lines changed

.gitattributes

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,20 @@
55
# to LF line endings on checkout.
66
*.afm text eol=lf
77
*.cmap text eol=lf
8-
*.crt text eol=lf
98
*.cs text eol=lf ident
9+
*.css text eol=lf
10+
*.htm text eol=lf
1011
*.html text eol=lf
1112
*.java text eol=lf ident
1213
*.lng text eol=lf
1314
*.md text eol=lf
1415
*.pom text eol=lf
1516
*.properties text eol=lf
17+
*.svg text eol=lf
1618
*.txt text eol=lf
1719
*.xfdf text eol=lf
20+
*.xht text eol=lf
21+
*.xhtml text eol=lf
1822
*.xml text eol=lf
1923
port-hash text eol=lf
2024

@@ -24,21 +28,34 @@ port-hash text eol=lf
2428
*.sln text eol=crlf
2529

2630
# Denote all files that are truly binary and should not be modified.
31+
*.aif binary
32+
*.aiff binary
2733
*.bmp binary
34+
*.cer binary
2835
*.cmp binary
36+
*.crt binary
2937
*.dib binary
3038
*.gif binary
39+
*.icc binary
3140
*.j2k binary
3241
*.jb2 binary
3342
*.jp2 binary
43+
*.jpc binary
3444
*.jpg binary
3545
*.key binary
3646
*.otf binary
47+
*.p12 binary
3748
*.pdf binary
3849
*.pfb binary
50+
*.pfm binary
3951
*.png binary
52+
*.snd binary
4053
*.tif binary
4154
*.tiff binary
4255
*.ttc binary
4356
*.ttf binary
57+
*.u3d binary
58+
*.wav binary
4459
*.wmf binary
60+
*.woff binary
61+
*.woff2 binary

.mailmap

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
2+
Alexander Chingarev <[email protected]> <[email protected]>
3+
Alexander Chingarev <[email protected]> <[email protected]>
4+
Alexander Chingarev <[email protected]> <[email protected]>
5+
6+
7+
8+
9+
10+
11+
Benoît Lagae <[email protected]> <benoit@iText-blagae>
12+
13+
14+
15+
16+
Bruno Lowagie <[email protected]> <iText@Catullus>
17+
18+
Dimitry Alexandrov <[email protected]> <[email protected]>
19+
20+
Dmitry Trusevich <dmitry.trusevich@duallab> <dmitry.trusevich@duallab>
21+
22+
23+
Ilya Idamkin <[email protected]> <ilya.idamkin@TeamCity>
24+
25+
26+
27+
28+
29+
iText Software <[email protected]> <teamcity.bot@TeamCity>
30+
31+
32+
33+
34+
35+
36+
37+
38+
39+
40+
41+
42+
43+
Michaël Demey <[email protected]> michael.demey <>
44+
45+
Michaël Demey <[email protected]> <michael.demey@TeamCity>
46+
47+
48+
49+
50+
Nadia Ivaniukovich <[email protected]> <[email protected]>
51+
Nadia Ivaniukovich <[email protected]> <[email protected]>
52+
53+
54+
55+
56+
57+
58+
Pavel Alay <[email protected]> pavel.alay <>
59+
60+
Pavel Alay <[email protected]> <pavel.alay@TeamCity>
61+
62+
63+
64+
65+
66+
67+
68+
69+
70+
71+
72+
73+
74+
75+
Veronika Lisovskaya <[email protected]> <veronika.lisovskaya@TeamCity>
76+
77+
Yanina Cheremisina <[email protected]> <[email protected]>
78+
Yulian Gaponenko <[email protected]> <duallab@DESKTOP-PG4L5J1>
79+
Yulian Gaponenko <[email protected]> <yulian.gaponenko@TeamCity>

Jenkinsfile

Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
#!/usr/bin/env groovy
2+
@Library('pipeline-library')_
3+
4+
def schedule = env.BRANCH_NAME.contains('master') ? '@monthly' : env.BRANCH_NAME == 'develop' ? '@midnight' : ''
5+
6+
pipeline {
7+
8+
agent { label 'windows' }
9+
10+
options {
11+
ansiColor('xterm')
12+
buildDiscarder(logRotator(artifactNumToKeepStr: '1'))
13+
parallelsAlwaysFailFast()
14+
skipStagesAfterUnstable()
15+
timeout(time: 60, unit: 'MINUTES')
16+
timestamps()
17+
}
18+
19+
triggers {
20+
cron(schedule)
21+
}
22+
23+
stages {
24+
stage('Wait for blocking jobs') {
25+
steps {
26+
script {
27+
properties([[$class: 'BuildBlockerProperty', blockLevel: 'GLOBAL', blockingJobs: ".*/itextcore/${env.JOB_BASE_NAME}", scanQueueFor: 'ALL', useBuildBlocker: true]])
28+
}
29+
}
30+
}
31+
stage('Build') {
32+
options {
33+
retry(2)
34+
}
35+
stages {
36+
stage('Clean workspace') {
37+
options {
38+
timeout(time: 5, unit: 'MINUTES')
39+
}
40+
steps {
41+
cleanWs deleteDirs: true, patterns: [
42+
[pattern: 'packages', type: 'INCLUDE'],
43+
[pattern: 'global-packages', type: 'INCLUDE'],
44+
[pattern: 'tmp/NuGetScratch', type: 'INCLUDE'],
45+
[pattern: 'http-cache', type: 'INCLUDE'],
46+
[pattern: 'plugins-cache', type: 'INCLUDE'],
47+
[pattern: '**/obj', type: 'INCLUDE'],
48+
[pattern: '**/bin', type: 'INCLUDE']
49+
]
50+
}
51+
}
52+
stage('Compile') {
53+
options {
54+
timeout(time: 20, unit: 'MINUTES')
55+
}
56+
steps {
57+
withEnv(["NUGET_PACKAGES=${env.WORKSPACE}/global-packages", "temp=${env.WORKSPACE}/tmp/NuGetScratch", "NUGET_HTTP_CACHE_PATH=${env.WORKSPACE}/http-cache", "NUGET_PLUGINS_CACHE_PATH=${env.WORKSPACE}/plugins-cache", "gsExec=${gsExec}", "compareExec=${compareExec}"]) {
58+
bat "\"${env.NuGet}\" restore itext.cleanup.sln"
59+
bat "dotnet restore itext.cleanup.sln"
60+
bat "dotnet build itext.cleanup.sln --configuration Release --source ${env.WORKSPACE}/packages"
61+
script {
62+
createPackAllFile(findFiles(glob: '**/*.nuspec'))
63+
load 'packAll.groovy'
64+
}
65+
}
66+
}
67+
}
68+
}
69+
post {
70+
failure {
71+
sleep time: 2, unit: 'MINUTES'
72+
}
73+
success {
74+
script { currentBuild.result = 'SUCCESS' }
75+
}
76+
}
77+
}
78+
stage('Run Tests') {
79+
options {
80+
timeout(time: 60, unit: 'MINUTES')
81+
}
82+
steps {
83+
withEnv(["NUGET_PACKAGES=${env.WORKSPACE}/global-packages", "temp=${env.WORKSPACE}/tmp/NuGetScratch", "NUGET_HTTP_CACHE_PATH=${env.WORKSPACE}/http-cache", "NUGET_PLUGINS_CACHE_PATH=${env.WORKSPACE}/plugins-cache", "gsExec=${gsExec}", "compareExec=${compareExec}"]) {
84+
script {
85+
createRunTestDllsFile(findFiles(glob: '**/itext.*.tests.dll'))
86+
load 'runTestDlls.groovy'
87+
createRunTestCsProjsFile(findFiles(glob: '**/itext.*.tests.netstandard.csproj'))
88+
load 'runTestCsProjs.groovy'
89+
}
90+
}
91+
}
92+
}
93+
stage('Artifactory Deploy') {
94+
options {
95+
timeout(time: 5, unit: 'MINUTES')
96+
}
97+
when {
98+
anyOf {
99+
branch "master"
100+
branch "develop"
101+
}
102+
}
103+
steps {
104+
script {
105+
getAndConfigureJFrogCLI()
106+
findFiles(glob: '*.nupkg').each { item ->
107+
upload(item)
108+
}
109+
}
110+
}
111+
}
112+
stage('Archive Artifacts') {
113+
options {
114+
timeout(time: 5, unit: 'MINUTES')
115+
}
116+
steps {
117+
archiveArtifacts allowEmptyArchive: true, artifacts: '*.nupkg'
118+
}
119+
}
120+
}
121+
122+
post {
123+
always {
124+
echo 'One way or another, I have finished \uD83E\uDD16'
125+
}
126+
success {
127+
echo 'I succeeeded! \u263A'
128+
cleanWs deleteDirs: true
129+
}
130+
unstable {
131+
echo 'I am unstable \uD83D\uDE2E'
132+
}
133+
failure {
134+
echo 'I failed \uD83D\uDCA9'
135+
}
136+
changed {
137+
echo 'Things were different before... \uD83E\uDD14'
138+
}
139+
fixed {
140+
script {
141+
if ((env.BRANCH_NAME == 'master') || (env.BRANCH_NAME == 'develop')) {
142+
slackNotifier("#ci", currentBuild.currentResult, "${env.BRANCH_NAME} - Back to normal")
143+
}
144+
}
145+
}
146+
regression {
147+
script {
148+
if ((env.BRANCH_NAME == 'master') || (env.BRANCH_NAME == 'develop')) {
149+
slackNotifier("#ci", currentBuild.currentResult, "${env.BRANCH_NAME} - First failure")
150+
}
151+
}
152+
}
153+
}
154+
155+
}
156+
157+
@NonCPS // has to be NonCPS or the build breaks on the call to .each
158+
def createPackAllFile(list) {
159+
// creates file because the bat command brakes the loop
160+
def cmd = ''
161+
list.each { item ->
162+
if (!item.path.contains("packages")) {
163+
cmd = cmd + "bat '\"${env.NuGet.replace('\\','\\\\')}\" pack \"${item.path.replace('\\','\\\\')}\"'\n"
164+
}
165+
}
166+
writeFile file: 'packAll.groovy', text: cmd
167+
}
168+
169+
@NonCPS // has to be NonCPS or the build breaks on the call to .each
170+
def createRunTestDllsFile(list) {
171+
// creates file because the bat command brakes the loop
172+
def ws = "${env.WORKSPACE.replace('\\','\\\\')}"
173+
def nunit = "${env.'Nunit3-console'.replace('\\','\\\\')}"
174+
def cmd = ''
175+
list.each { item ->
176+
if (!item.path.contains("netcoreapp1.0") && !item.path.contains("obj")) {
177+
cmd = cmd + "bat '\"${nunit}\" \"${ws}\\\\${item.path.replace('\\','\\\\')}\" --result=${item.name}-TestResult.xml'\n"
178+
}
179+
}
180+
writeFile file: 'runTestDlls.groovy', text: cmd
181+
}
182+
183+
@NonCPS // has to be NonCPS or the build breaks on the call to .each
184+
def createRunTestCsProjsFile(list) {
185+
// creates file because the bat command brakes the loop
186+
def ws = "${env.WORKSPACE.replace('\\','\\\\')}"
187+
def cmd = ''
188+
list.each { item ->
189+
cmd = cmd + "bat 'dotnet test ${ws}\\\\${item.path.replace('\\','\\\\')} --framework netcoreapp1.0 --configuration Release --no-build --logger \"trx;LogFileName=results.trx\"'\n"
190+
}
191+
writeFile file: 'runTestCsProjs.groovy', text: cmd
192+
}
193+
194+
@NonCPS
195+
def upload(item) {
196+
def itemArray = (item =~ /(.*?)(\.[0-9]*\.[0-9]*\.[0-9]*(-SNAPSHOT)?\.nupkg)/)
197+
def dir = itemArray[ 0 ][ 1 ]
198+
sh "./jfrog rt u \"${item.path}\" nuget/${dir}/ --flat=false --build-name="${env.BRANCH_NAME}" --build-number=${env.BUILD_NUMBER}"
199+
}
200+
201+

LICENSE.md

Lines changed: 13 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,16 @@
1-
This program is free software; you can redistribute it and/or modify
2-
it under the terms of the GNU Affero General Public License version 3
3-
as published by the Free Software Foundation with the addition of the
4-
following permission added to Section 15 as permitted in Section 7(a):
5-
FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY
6-
ITEXT GROUP. ITEXT GROUP DISCLAIMS THE WARRANTY OF NON INFRINGEMENT
7-
OF THIRD PARTY RIGHTS
1+
This program is offered under a commercial and under the AGPL license.
2+
For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below.
83

9-
This program is distributed in the hope that it will be useful, but
10-
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11-
or FITNESS FOR A PARTICULAR PURPOSE.
12-
See the GNU Affero General Public License for more details.
13-
You should have received a copy of the GNU Affero General Public License
14-
along with this program; if not, see http://www.gnu.org/licenses or write to
15-
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16-
Boston, MA, 02110-1301 USA, or download the license from the following URL:
17-
http://itextpdf.com/terms-of-use/
18-
19-
The interactive user interfaces in modified source and object code versions
20-
of this program must display Appropriate Legal Notices, as required under
21-
Section 5 of the GNU Affero General Public License.
4+
AGPL licensing:
5+
This program is free software: you can redistribute it and/or modify
6+
it under the terms of the GNU Affero General Public License as published by
7+
the Free Software Foundation, either version 3 of the License, or
8+
(at your option) any later version.
229

23-
In accordance with Section 7(b) of the GNU Affero General Public License,
24-
a covered work must retain the producer line in every PDF that is created
25-
or manipulated using iText.
10+
This program is distributed in the hope that it will be useful,
11+
but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
GNU Affero General Public License for more details.
2614

27-
You can be released from the requirements of the license by purchasing
28-
a commercial license. Buying such a license is mandatory as soon as you
29-
develop commercial activities involving the iText software without
30-
disclosing the source code of your own applications.
31-
These activities include: offering paid services to customers as an ASP,
32-
serving PDFs on the fly in a web application, shipping iText with a closed
33-
source product.
34-
35-
For more information, please contact iText Software Corp. at this
36-
15+
You should have received a copy of the GNU Affero General Public License
16+
along with this program. If not, see <https://www.gnu.org/licenses/>.

0 commit comments

Comments
 (0)