commit
632a9a1529
36
README.en.md
36
README.en.md
@ -1,36 +0,0 @@
|
|||||||
# qpdf
|
|
||||||
|
|
||||||
#### Description
|
|
||||||
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
|
|
||||||
|
|
||||||
#### Software Architecture
|
|
||||||
Software architecture description
|
|
||||||
|
|
||||||
#### Installation
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### Instructions
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### Contribution
|
|
||||||
|
|
||||||
1. Fork the repository
|
|
||||||
2. Create Feat_xxx branch
|
|
||||||
3. Commit your code
|
|
||||||
4. Create Pull Request
|
|
||||||
|
|
||||||
|
|
||||||
#### Gitee Feature
|
|
||||||
|
|
||||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
|
||||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
|
||||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
|
||||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
|
||||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
|
||||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
|
||||||
39
README.md
39
README.md
@ -1,39 +0,0 @@
|
|||||||
# qpdf
|
|
||||||
|
|
||||||
#### 介绍
|
|
||||||
{**以下是码云平台说明,您可以替换此简介**
|
|
||||||
码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
|
|
||||||
无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
|
|
||||||
|
|
||||||
#### 软件架构
|
|
||||||
软件架构说明
|
|
||||||
|
|
||||||
|
|
||||||
#### 安装教程
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### 使用说明
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### 参与贡献
|
|
||||||
|
|
||||||
1. Fork 本仓库
|
|
||||||
2. 新建 Feat_xxx 分支
|
|
||||||
3. 提交代码
|
|
||||||
4. 新建 Pull Request
|
|
||||||
|
|
||||||
|
|
||||||
#### 码云特技
|
|
||||||
|
|
||||||
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
|
|
||||||
2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
|
|
||||||
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
|
|
||||||
4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
|
|
||||||
5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
|
|
||||||
6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
|
||||||
BIN
qpdf-8.4.2.tar.gz
Normal file
BIN
qpdf-8.4.2.tar.gz
Normal file
Binary file not shown.
30
qpdf-doc.patch
Normal file
30
qpdf-doc.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
diff -up qpdf-8.2.1/manual/fix-qdf.1.in.doc qpdf-8.2.1/manual/fix-qdf.1.in
|
||||||
|
--- qpdf-8.2.1/manual/fix-qdf.1.in.doc 2018-08-18 16:56:19.000000000 +0200
|
||||||
|
+++ qpdf-8.2.1/manual/fix-qdf.1.in 2018-09-24 14:24:26.340341484 +0200
|
||||||
|
@@ -14,5 +14,4 @@ the same file with stream lengths, cross
|
||||||
|
object stream offset tables regenerated.
|
||||||
|
.PP
|
||||||
|
For details about fix-qdf and about PDF files in QDF mode, please see
|
||||||
|
-the qpdf manual, which can be found in @docdir@/qpdf-manual.html or
|
||||||
|
-@docdir@/qpdf-manual.pdf.
|
||||||
|
+the qpdf manual, which can be found in qpdf-doc package.
|
||||||
|
diff -up qpdf-8.2.1/manual/qpdf.1.in.doc qpdf-8.2.1/manual/qpdf.1.in
|
||||||
|
--- qpdf-8.2.1/manual/qpdf.1.in.doc 2018-09-24 14:24:26.340341484 +0200
|
||||||
|
+++ qpdf-8.2.1/manual/qpdf.1.in 2018-09-24 14:26:18.171462618 +0200
|
||||||
|
@@ -16,4 +16,4 @@ useful primarily to PDF developers.
|
||||||
|
.PP
|
||||||
|
For a summary of qpdf's options, please run
|
||||||
|
\fBqpdf \-\-help\fR. A complete manual can be found in
|
||||||
|
-@docdir@/qpdf-manual.html or @docdir@/qpdf-manual.pdf.
|
||||||
|
+qpdf-doc package.
|
||||||
|
diff -up qpdf-8.2.1/manual/zlib-flate.1.in.doc qpdf-8.2.1/manual/zlib-flate.1.in
|
||||||
|
--- qpdf-8.2.1/manual/zlib-flate.1.in.doc 2018-08-18 16:56:19.000000000 +0200
|
||||||
|
+++ qpdf-8.2.1/manual/zlib-flate.1.in 2018-09-24 14:24:26.340341484 +0200
|
||||||
|
@@ -21,6 +21,6 @@ This program should not be used as a gen
|
||||||
|
tool. Use something like gzip(1) instead.
|
||||||
|
.PP
|
||||||
|
For details about qpdf, please see the qpdf manual, which can be found
|
||||||
|
-in @docdir@/qpdf-manual.html or @docdir@/qpdf-manual.pdf.
|
||||||
|
+in qpdf-doc package.
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
qpdf(1), gzip(1)
|
||||||
142
qpdf-erase-tests-with-generated-object-stream.patch
Normal file
142
qpdf-erase-tests-with-generated-object-stream.patch
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
diff -up qpdf-8.1.0/examples/qtest/filter-tokens.test.erase-tests-with-generated-object-stream qpdf-8.1.0/examples/qtest/filter-tokens.test
|
||||||
|
--- qpdf-8.1.0/examples/qtest/filter-tokens.test.erase-tests-with-generated-object-stream 2018-06-26 16:25:29.028242814 +0200
|
||||||
|
+++ qpdf-8.1.0/examples/qtest/filter-tokens.test 2018-06-26 16:27:17.456366872 +0200
|
||||||
|
@@ -13,8 +13,4 @@ $td->runtest("filter tokens",
|
||||||
|
{$td->COMMAND => "pdf-filter-tokens in.pdf a.pdf"},
|
||||||
|
{$td->STRING => "", $td->EXIT_STATUS => 0});
|
||||||
|
|
||||||
|
-$td->runtest("check output",
|
||||||
|
- {$td->FILE => "a.pdf"},
|
||||||
|
- {$td->FILE => "out.pdf"});
|
||||||
|
-
|
||||||
|
-$td->report(2);
|
||||||
|
+$td->report(1);
|
||||||
|
diff -up qpdf-8.1.0/examples/qtest/invert-images.test.erase-tests-with-generated-object-stream qpdf-8.1.0/examples/qtest/invert-images.test
|
||||||
|
--- qpdf-8.1.0/examples/qtest/invert-images.test.erase-tests-with-generated-object-stream 2018-06-23 13:50:11.000000000 +0200
|
||||||
|
+++ qpdf-8.1.0/examples/qtest/invert-images.test 2018-06-26 16:25:15.832347910 +0200
|
||||||
|
@@ -19,13 +19,13 @@ $td->runtest("double page size",
|
||||||
|
$td->EXIT_STATUS => 0},
|
||||||
|
$td->NORMALIZE_NEWLINES);
|
||||||
|
|
||||||
|
-$td->runtest("check output",
|
||||||
|
- {$td->FILE => "a.pdf"},
|
||||||
|
- {$td->FILE => "out.pdf"});
|
||||||
|
+#$td->runtest("check output",
|
||||||
|
+# {$td->FILE => "a.pdf"},
|
||||||
|
+# {$td->FILE => "out.pdf"});
|
||||||
|
|
||||||
|
cleanup();
|
||||||
|
|
||||||
|
-$td->report(2);
|
||||||
|
+$td->report(1);
|
||||||
|
|
||||||
|
sub cleanup
|
||||||
|
{
|
||||||
|
diff -up qpdf-8.1.0/examples/qtest/set-form-values.test.erase-tests-with-generated-object-stream qpdf-8.1.0/examples/qtest/set-form-values.test
|
||||||
|
--- qpdf-8.1.0/examples/qtest/set-form-values.test.erase-tests-with-generated-object-stream 2018-06-26 16:25:24.971275053 +0200
|
||||||
|
+++ qpdf-8.1.0/examples/qtest/set-form-values.test 2018-06-26 16:27:26.641291590 +0200
|
||||||
|
@@ -14,13 +14,10 @@ cleanup();
|
||||||
|
$td->runtest("set form values",
|
||||||
|
{$td->COMMAND => "pdf-set-form-values form-in.pdf a.pdf soup"},
|
||||||
|
{$td->STRING => "", $td->EXIT_STATUS => 0});
|
||||||
|
-$td->runtest("compare files",
|
||||||
|
- {$td->FILE => "a.pdf"},
|
||||||
|
- {$td->FILE => "form-out.pdf"});
|
||||||
|
|
||||||
|
cleanup();
|
||||||
|
|
||||||
|
-$td->report(2);
|
||||||
|
+$td->report(1);
|
||||||
|
|
||||||
|
sub cleanup
|
||||||
|
{
|
||||||
|
diff -up qpdf-8.1.0/libqpdf/qpdf-c.cc.erase-tests-with-generated-object-stream qpdf-8.1.0/libqpdf/qpdf-c.cc
|
||||||
|
--- qpdf-8.1.0/libqpdf/qpdf-c.cc.erase-tests-with-generated-object-stream 2018-06-23 13:50:11.000000000 +0200
|
||||||
|
+++ qpdf-8.1.0/libqpdf/qpdf-c.cc 2018-06-26 16:25:15.832347910 +0200
|
||||||
|
@@ -302,7 +302,6 @@ QPDF_ERROR_CODE qpdf_read_memory(qpdf_da
|
||||||
|
qpdf->size = size;
|
||||||
|
qpdf->password = password;
|
||||||
|
status = trap_errors(qpdf, &call_read_memory);
|
||||||
|
- QTC::TC("qpdf", "qpdf-c called qpdf_read_memory", status);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -515,7 +514,6 @@ unsigned char const* qpdf_get_buffer(qpd
|
||||||
|
|
||||||
|
void qpdf_set_object_stream_mode(qpdf_data qpdf, qpdf_object_stream_e mode)
|
||||||
|
{
|
||||||
|
- QTC::TC("qpdf", "qpdf-c called qpdf_set_object_stream_mode");
|
||||||
|
qpdf->qpdf_writer->setObjectStreamMode(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -up qpdf-8.1.0/libqpdf/QPDFWriter.cc.erase-tests-with-generated-object-stream qpdf-8.1.0/libqpdf/QPDFWriter.cc
|
||||||
|
--- qpdf-8.1.0/libqpdf/QPDFWriter.cc.erase-tests-with-generated-object-stream 2018-06-23 13:50:11.000000000 +0200
|
||||||
|
+++ qpdf-8.1.0/libqpdf/QPDFWriter.cc 2018-06-26 16:25:15.833347901 +0200
|
||||||
|
@@ -3221,8 +3221,6 @@ QPDFWriter::writeLinearized()
|
||||||
|
{
|
||||||
|
if (this->m->deterministic_id)
|
||||||
|
{
|
||||||
|
- QTC::TC("qpdf", "QPDFWriter linearized deterministic ID",
|
||||||
|
- need_xref_stream ? 0 : 1);
|
||||||
|
computeDeterministicIDData();
|
||||||
|
popPipelineStack();
|
||||||
|
assert(this->m->md5_pipeline == 0);
|
||||||
|
@@ -3426,8 +3424,6 @@ QPDFWriter::writeStandard()
|
||||||
|
|
||||||
|
if (this->m->deterministic_id)
|
||||||
|
{
|
||||||
|
- QTC::TC("qpdf", "QPDFWriter standard deterministic ID",
|
||||||
|
- this->m->object_stream_to_objects.empty() ? 0 : 1);
|
||||||
|
popPipelineStack();
|
||||||
|
assert(this->m->md5_pipeline == 0);
|
||||||
|
}
|
||||||
|
diff -up qpdf-8.1.0/qpdf/qpdf.testcov.erase-tests-with-generated-object-stream qpdf-8.1.0/qpdf/qpdf.testcov
|
||||||
|
--- qpdf-8.1.0/qpdf/qpdf.testcov.erase-tests-with-generated-object-stream 2018-06-23 13:50:11.000000000 +0200
|
||||||
|
+++ qpdf-8.1.0/qpdf/qpdf.testcov 2018-06-26 16:25:15.833347901 +0200
|
||||||
|
@@ -126,7 +126,6 @@ qpdf-c called qpdf_get_user_password 0
|
||||||
|
qpdf-c called qpdf_is_linearized 0
|
||||||
|
qpdf-c called qpdf_is_encrypted 0
|
||||||
|
qpdf-c called qpdf_init_write 3
|
||||||
|
-qpdf-c called qpdf_set_object_stream_mode 0
|
||||||
|
qpdf-c called qpdf_set_stream_data_mode 0
|
||||||
|
qpdf-c called qpdf_set_content_normalization 0
|
||||||
|
qpdf-c called qpdf_set_qdf_mode 0
|
||||||
|
@@ -180,7 +179,6 @@ QPDFObjectHandle append page contents 0
|
||||||
|
QPDF_Stream getRawStreamData 0
|
||||||
|
QPDF_Stream getStreamData 0
|
||||||
|
QPDF_Stream expand filter abbreviation 0
|
||||||
|
-qpdf-c called qpdf_read_memory 0
|
||||||
|
QPDF stream without newline 0
|
||||||
|
QPDF stream with CR only 0
|
||||||
|
QPDF stream with CRNL 0
|
||||||
|
@@ -264,8 +262,6 @@ qpdf pages range omitted at end 0
|
||||||
|
qpdf pages range omitted in middle 0
|
||||||
|
qpdf npages 0
|
||||||
|
QPDF already reserved object 0
|
||||||
|
-QPDFWriter standard deterministic ID 1
|
||||||
|
-QPDFWriter linearized deterministic ID 1
|
||||||
|
QPDFWriter deterministic with no data 0
|
||||||
|
qpdf-c called qpdf_set_deterministic_ID 0
|
||||||
|
QPDFObjectHandle indirect with 0 objid 0
|
||||||
|
diff -up qpdf-8.1.0/qpdf/qtest/qpdf.test.erase-tests-with-generated-object-stream qpdf-8.1.0/qpdf/qtest/qpdf.test
|
||||||
|
--- qpdf-8.1.0/qpdf/qtest/qpdf.test.erase-tests-with-generated-object-stream 2018-06-23 13:50:11.000000000 +0200
|
||||||
|
+++ qpdf-8.1.0/qpdf/qtest/qpdf.test 2018-06-26 16:25:15.834347893 +0200
|
||||||
|
@@ -1713,7 +1713,6 @@ my @capi = (
|
||||||
|
[3, 'normalized content'],
|
||||||
|
[4, 'ignore xref streams'],
|
||||||
|
[5, 'linearized'],
|
||||||
|
- [6, 'object streams'],
|
||||||
|
[7, 'qdf'],
|
||||||
|
[8, 'no original object ids'],
|
||||||
|
[9, 'uncompressed streams'],
|
||||||
|
@@ -1757,8 +1756,8 @@ $td->runtest("write damaged",
|
||||||
|
show_ntests();
|
||||||
|
# ----------
|
||||||
|
$td->notify("--- Deterministic ID Tests ---");
|
||||||
|
-$n_tests += 11;
|
||||||
|
-foreach my $d ('nn', 'ny', 'yn', 'yy')
|
||||||
|
+$n_tests += 7;
|
||||||
|
+foreach my $d ('nn', 'yn')
|
||||||
|
{
|
||||||
|
my $linearize = ($d =~ m/^y/);
|
||||||
|
my $ostream = ($d =~ m/y$/);
|
||||||
85
qpdf.spec
Normal file
85
qpdf.spec
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
Name: qpdf
|
||||||
|
Version: 8.2.1
|
||||||
|
Release: 2
|
||||||
|
Summary: A command-line program to transform PDF files
|
||||||
|
License: (Artistic 2.0 or ASL 2.0) and MIT
|
||||||
|
URL: http://qpdf.sourceforge.net/
|
||||||
|
Source0: http://downloads.sourceforge.net/sourceforge/qpdf/qpdf-%{version}.tar.gz
|
||||||
|
|
||||||
|
Patch0000: qpdf-doc.patch
|
||||||
|
%ifarch aarch64
|
||||||
|
Patch0001: qpdf-erase-tests-with-generated-object-stream.patch
|
||||||
|
%endif
|
||||||
|
|
||||||
|
BuildRequires: gcc gcc-c++ zlib-devel libjpeg-turbo-devel pcre-devel
|
||||||
|
BuildRequires: perl-interpreter perl-generators perl(Digest::MD5)
|
||||||
|
BuildRequires: autoconf automake libtool
|
||||||
|
|
||||||
|
Provides: %{name}-libs = %{version}-%{release}
|
||||||
|
Obsoletes: %{name}-libs < %{version}-%{release}
|
||||||
|
|
||||||
|
%description
|
||||||
|
QPDF is a command-line program that does structural, content-preserving transformations
|
||||||
|
on PDF files. It could have been called something like pdf-to-pdf. It also provides many
|
||||||
|
useful capabilities to developers of PDF-producing software or for people who just want
|
||||||
|
to look at the innards of a PDF file to learn more about how they work.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Development package for %{name}
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
This package contains some header and library files for the development of %{name}.
|
||||||
|
|
||||||
|
%package help
|
||||||
|
Summary: Help package for %{name}
|
||||||
|
BuildArch: noarch
|
||||||
|
Provides: %{name}-doc = %{version}-%{release}
|
||||||
|
Obsoletes: %{name}-doc < %{version}-%{release}
|
||||||
|
|
||||||
|
%description help
|
||||||
|
This package contains some man help and other files for %{name}.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1
|
||||||
|
|
||||||
|
sed -i '1c#!/usr/bin/perl' qpdf/fix-qdf
|
||||||
|
|
||||||
|
%build
|
||||||
|
autoreconf --verbose --force --install
|
||||||
|
|
||||||
|
%configure --disable-static --enable-show-failed-test-output
|
||||||
|
|
||||||
|
%make_build
|
||||||
|
|
||||||
|
%install
|
||||||
|
%make_install
|
||||||
|
|
||||||
|
%delete_la
|
||||||
|
|
||||||
|
%check
|
||||||
|
make check
|
||||||
|
|
||||||
|
%post -p /usr/sbin/ldconfig
|
||||||
|
|
||||||
|
%postun -p /usr/sbin/ldconfig
|
||||||
|
|
||||||
|
%files
|
||||||
|
%doc README.md TODO ChangeLog
|
||||||
|
%license Artistic-2.0
|
||||||
|
%{_bindir}/*
|
||||||
|
%{_libdir}/libqpdf.so.*
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%doc examples/*.cc examples/*.c
|
||||||
|
%{_includedir}/qpdf/
|
||||||
|
%{_libdir}/libqpdf.so
|
||||||
|
%{_libdir}/pkgconfig/libqpdf.pc
|
||||||
|
|
||||||
|
%files help
|
||||||
|
%{_pkgdocdir}
|
||||||
|
%{_mandir}/man1/*
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Wed Dec 11 2019 catastrowings <jianghuhao1994@163.com> - 8.2.1-2
|
||||||
|
- openEuler init
|
||||||
Loading…
x
Reference in New Issue
Block a user