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