Skip to content

Commit a767356

Browse files
committed
upgrade to 1.16.15
1 parent 73bc764 commit a767356

File tree

13 files changed

+89
-66
lines changed

13 files changed

+89
-66
lines changed

PKG-INFO

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Metadata-Version: 1.1
22
Name: PyMuPDF
3-
Version: 1.16.14
3+
Version: 1.16.15
44
Author: Ruikai Liu
55
Author-email: [email protected]
66
Maintainer: Jorj X. McKie
@@ -9,7 +9,7 @@ Home-page: https://github.com/pymupdf/PyMuPDF
99
Download-url: https://github.com/pymupdf/PyMuPDF
1010
Summary: PyMuPDF is a Python binding for the PDF rendering library MuPDF
1111
Description:
12-
Release date: March 25, 2020
12+
Release date: March 27, 2020
1313

1414
Authors
1515
=======
@@ -20,7 +20,7 @@ Description:
2020
Introduction
2121
============
2222

23-
This is **version 1.16.14 of PyMuPDF**, a Python binding for `MuPDF <http://mupdf.com/>`_ - "a lightweight PDF and XPS viewer".
23+
This is **version 1.16.15 of PyMuPDF**, a Python binding for `MuPDF <http://mupdf.com/>`_ - "a lightweight PDF and XPS viewer".
2424

2525
MuPDF can access files in PDF, XPS, OpenXPS, epub, comic and fiction book formats, and it is known for both, its top performance and high rendering quality.
2626

README.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# PyMuPDF 1.16.14
1+
# PyMuPDF 1.16.15
22

33
![logo](https://github.com/pymupdf/PyMuPDF/blob/master/demo/pymupdf.jpg)
44

5-
Release date: March 25, 2020
5+
Release date: March 27, 2020
66

77
**Travis-CI:** [![Build Status](https://travis-ci.org/JorjMcKie/py-mupdf.svg?branch=master)](https://travis-ci.org/JorjMcKie/py-mupdf)
88

@@ -14,7 +14,7 @@ On **[PyPI](https://pypi.org/project/PyMuPDF)** since August 2016: [![](https://
1414

1515
# Introduction
1616

17-
This is **version 1.16.14 of PyMuPDF (formerly python-fitz)**, a Python binding with support for [MuPDF 1.16.*](http://mupdf.com/) - "a lightweight PDF, XPS, and E-book viewer".
17+
This is **version 1.16.15 of PyMuPDF (formerly python-fitz)**, a Python binding with support for [MuPDF 1.16.*](http://mupdf.com/) - "a lightweight PDF, XPS, and E-book viewer".
1818

1919
MuPDF can access files in PDF, XPS, OpenXPS, CBZ, EPUB and FB2 (e-books) formats, and it is known for its top performance and high rendering quality.
2020

@@ -107,5 +107,4 @@ Earlier versions are available in the [releases](https://github.com/pymupdf/PyMu
107107
PyMuPDF is distributed under GNU GPL V3. Because you will implicitely also be using MuPDF, its license GNU AFFERO GPL V3 applies as well. Copies of both are included in this repository.
108108

109109
# Contact
110-
111110
Please submit questions, comments or issues [here](https://github.com/pymupdf/PyMuPDF/issues), or directly contact the authors via their e-mail addresses.

docs/annot.rst

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,19 +105,29 @@ There is a parent-child relationship between an annotation and its page. If the
105105
:rtype: str
106106
:returns: the blend mode or *None*.
107107

108+
>>> annot=page.firstAnnot
109+
>>> annot.blendMode()
110+
'Multiply'
111+
112+
108113
.. method:: setBlendMode(blend_mode)
109114

110115
*(New in v1.16.14)* Set the annotation's blend mode. See :ref:`AdobeManual`, page 520 for explanations. The blend mode can also be set in :meth:`Annot.update`.
111116

112-
:arg str blend_mode: set the blend mode. Use :meth:`Annot.update` to reflect this in the visual appearance. For predefined values see :ref:`BlendModes`.
117+
:arg str blend_mode: set the blend mode. Use :meth:`Annot.update` to reflect this in the visual appearance. For predefined values see :ref:`BlendModes`. The best way to **remove** a special blend mode is choosing ``PDF_BM_Normal``.
118+
119+
>>> annot.setBlendMode(fitz.PDF_BM_Multiply)
120+
>>> annot.update()
121+
>>> # or in one statement:
122+
>>> annot.update(blend_mode=fitz.PDF_BM_Multiply, ...)
113123

114124
.. method:: setName(name)
115125

116126
*(New in version 1.16.0)* Change the name field of any annotation type. For 'FileAttachment' and 'Text' annotations, this is the icon name, for 'Stamp' annotations the text in the stamp. The visual result (if any) depends on your PDF viewer. See also :ref:`mupdficons`.
117127

118128
:arg str name: the new name.
119129

120-
.. caution:: If you set the name of a 'Stamp' annotation, then this will **not change** the rectangle, nor will the text be layouted in any way. If you choose a standard text from :ref:`StampIcons` (the **exact** name piece after ``STAMP_``!), you should receive the original layout. An **arbitrary text** will not be changed to upper case, but be written as is, horizontally centered in **one line**. If its length exceeds the available width, it will be accordingly shortened. To ensure your own text will **not be shortened**, ensure that ``fitz.getTextLength(text, fontname="tiro", fontsize=20) / annot.rect.width <= 0.85``.
130+
.. caution:: If you set the name of a 'Stamp' annotation, then this will **not change** the rectangle, nor will the text be layouted in any way. If you choose a standard text from :ref:`StampIcons` (the **exact** name piece after "STAMP_"), you should receive the original layout. An **arbitrary text** will not be changed to upper case, but be written as is, horizontally centered in **one line** and be shortened to fit. To avoid this make sure the following inequality is true: ``fitz.getTextlength(text, fontname="tiro", fontsize=20) / annot.rect.width <= 0.85``.
121131

122132
.. method:: setRect(rect)
123133

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
# built documents.
4747
#
4848
# The full version, including alpha/beta/rc tags.
49-
release = "1.16.14"
49+
release = "1.16.15"
5050

5151
# The short X.Y version
5252
version = release

docs/tools.rst

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ This class is a collection of utility methods and attributes, mainly around memo
1313
:meth:`Tools.mupdf_warnings` return the accumulated MuPDF warnings
1414
:meth:`Tools.mupdf_display_errors` return the accumulated MuPDF warnings
1515
:meth:`Tools.reset_mupdf_warnings` empty MuPDF messages on STDOUT
16+
:meth:`Tools.set_aa_level` set the anti-aliasing values
17+
:meth:`Tools.show_aa_level` return the anti-aliasing values
1618
:attr:`Tools.fitz_config` configuration settings of PyMuPDF
1719
:attr:`Tools.store_maxsize` maximum storables cache size
1820
:attr:`Tools.store_size` current storables cache size
@@ -43,6 +45,21 @@ This class is a collection of utility methods and attributes, mainly around memo
4345
:rtype: int
4446
:returns: the new current store size. Depending on the situation, the size reduction may be larger than the requested percentage.
4547

48+
.. method:: show_aa_level()
49+
50+
*(New in version 1.16.14)* Return the current anti-aliasing values. These values control the rendering quality of graphics and text elements.
51+
52+
:rtype: dict
53+
:returns: A dictionary with the following initial content: ``{'graphics': 8, 'text': 8, 'graphics_min_line_width': 0.0}``.
54+
55+
56+
.. method:: set_aa_level(level)
57+
58+
*(New in version 1.16.14)* Set the new number of bits to use for anti-aliasing. The same value is taken currently for graphics and text rendering. This might change in a future MuPDF release.
59+
60+
:arg int level: an integer ranging between 0 and 8. Value outside this range will be silently changed to valid values. The value will remain in effect throughout the current session or until changed again.
61+
62+
4663
.. method:: reset_mupdf_warnings()
4764

4865
*(New in version 1.16.0)*

docs/version.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Covered Version
22
--------------------
33

4-
This documentation covers PyMuPDF v1.16.14 features as of **2020-03-25 11:44:22**.
4+
This documentation covers PyMuPDF v1.16.15 features as of **2020-03-26 15:15:15**.
55

66
.. note:: The major and minor versions of **PyMuPDF** and **MuPDF** will always be the same. Only the third qualifier (patch level) may be different from that of MuPDF.

fitz/fitz.i

Lines changed: 23 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ from __future__ import division, print_function
101101
#define FLT_EPSILON 1e-5
102102
#endif
103103

104-
#define return_none return Py_BuildValue("s", NULL)
104+
#define return_none Py_RETURN_NONE
105105
#define SWIG_FILE_WITH_INIT
106106
#define SWIG_PYTHON_2_UNICODE
107107

@@ -128,7 +128,6 @@ from __future__ import division, print_function
128128
#define MIN(a, b) ((a) < (b)) ? (a) : (b)
129129

130130
#define JM_PyErr_Clear if (PyErr_Occurred()) PyErr_Clear()
131-
#define JM_UNICODE(data) JM_EscapeStrFromStr(data)
132131

133132
// binary output depends on Python major
134133
# if PY_VERSION_HEX >= 0x03000000
@@ -501,7 +500,7 @@ struct fz_document_s
501500
int i, n = pdf_array_len(gctx, names);
502501
for (i=0; i < n; i+=2)
503502
{
504-
val = JM_UNICODE(pdf_to_text_string(gctx,
503+
val = JM_EscapeStrFromStr(pdf_to_text_string(gctx,
505504
pdf_array_get(gctx, names, i)));
506505
LIST_APPEND_DROP(namelist, val);
507506
}
@@ -548,15 +547,15 @@ struct fz_document_s
548547
549548
name = (char *) pdf_to_text_string(gctx,
550549
pdf_dict_get(gctx, o, PDF_NAME(F)));
551-
DICT_SETITEM_DROP(infodict, dictkey_filename, JM_UNICODE(name));
550+
DICT_SETITEM_DROP(infodict, dictkey_filename, JM_EscapeStrFromStr(name));
552551
553552
name = (char *) pdf_to_text_string(gctx,
554553
pdf_dict_get(gctx, o, PDF_NAME(UF)));
555-
DICT_SETITEM_DROP(infodict, dictkey_ufilename, JM_UNICODE(name));
554+
DICT_SETITEM_DROP(infodict, dictkey_ufilename, JM_EscapeStrFromStr(name));
556555
557556
name = (char *) pdf_to_text_string(gctx,
558557
pdf_dict_get(gctx, o, PDF_NAME(Desc)));
559-
DICT_SETITEM_DROP(infodict, dictkey_desc, JM_UNICODE(name));
558+
DICT_SETITEM_DROP(infodict, dictkey_desc, JM_UnicodeFromStr(name));
560559
561560
int len = -1, DL = -1;
562561
pdf_obj *ef = pdf_dict_get(gctx, o, PDF_NAME(EF));
@@ -1555,7 +1554,7 @@ if len(pyliste) == 0 or min(pyliste) not in range(len(self)) or max(pyliste) not
15551554
fz_drop_buffer(gctx, buffer);
15561555
}
15571556
tuple = PyTuple_New(4);
1558-
PyTuple_SET_ITEM(tuple, 0, JM_UNICODE(pdf_to_name(gctx, bname)));
1557+
PyTuple_SET_ITEM(tuple, 0, JM_EscapeStrFromStr(pdf_to_name(gctx, bname)));
15591558
PyTuple_SET_ITEM(tuple, 1, PyUnicode_FromString(ext));
15601559
PyTuple_SET_ITEM(tuple, 2, PyUnicode_FromString(pdf_to_name(gctx, subtype)));
15611560
PyTuple_SET_ITEM(tuple, 3, bytes);
@@ -4284,7 +4283,7 @@ def insertFont(self, fontname="helv", fontfile=None, fontbuffer=None,
42844283
weiter: ;
42854284
ixref = pdf_to_num(gctx, font_obj);
42864285
4287-
PyObject *name = JM_UNICODE(pdf_to_name(gctx,
4286+
PyObject *name = JM_EscapeStrFromStr(pdf_to_name(gctx,
42884287
pdf_dict_get(gctx, font_obj, PDF_NAME(BaseFont))));
42894288
42904289
PyObject *subt = PyUnicode_FromString(pdf_to_name(gctx,
@@ -5383,16 +5382,9 @@ struct fz_outline_s {
53835382
*/
53845383
%extend {
53855384
%pythoncode %{@property%}
5386-
%pythonappend uri %{
5387-
if val:
5388-
nval = "".join([c for c in val if 32 <= ord(c) <= 127])
5389-
val = nval
5390-
else:
5391-
val = ""
5392-
%}
53935385
PyObject *uri()
53945386
{
5395-
return JM_UNICODE($self->uri);
5387+
return JM_UnicodeFromStr($self->uri);
53965388
}
53975389
53985390
%pythoncode %{@property%}
@@ -5468,7 +5460,7 @@ struct pdf_annot_s
54685460
obj = pdf_dict_get(gctx, $self->obj, PDF_NAME(BM));
54695461
if (obj) // check the annot object for /BM
54705462
{
5471-
blend_mode = Py_BuildValue("s", pdf_to_name(gctx, obj));
5463+
blend_mode = JM_UnicodeFromStr(pdf_to_name(gctx, obj));
54725464
goto fertig;
54735465
}
54745466
// loop through the /AP/N/Resources/ExtGState objects
@@ -5492,7 +5484,7 @@ struct pdf_annot_s
54925484
obj2 = pdf_dict_get_key(gctx, obj1, j);
54935485
if (pdf_objcmp(gctx, obj2, PDF_NAME(BM)) == 0)
54945486
{
5495-
blend_mode = Py_BuildValue("s", pdf_to_name(gctx, pdf_dict_get_val(gctx, obj1, j)));
5487+
blend_mode = JM_UnicodeFromStr(pdf_to_name(gctx, pdf_dict_get_val(gctx, obj1, j)));
54965488
goto fertig;
54975489
}
54985490
}
@@ -5616,7 +5608,7 @@ struct pdf_annot_s
56165608
if (obj)
56175609
{
56185610
text = pdf_to_text_string(gctx, obj);
5619-
DICT_SETITEM_DROP(values, dictkey_text, Py_BuildValue("s", text));
5611+
DICT_SETITEM_DROP(values, dictkey_text, JM_UnicodeFromStr(text));
56205612
}
56215613
else
56225614
{
@@ -6225,8 +6217,8 @@ struct pdf_annot_s
62256217
PDF_NAME(Size), NULL);
62266218
if (o) size = pdf_to_int(gctx, o);
62276219
6228-
DICT_SETITEM_DROP(res, dictkey_filename, JM_UNICODE(filename));
6229-
DICT_SETITEM_DROP(res, dictkey_desc, JM_UNICODE(desc));
6220+
DICT_SETITEM_DROP(res, dictkey_filename, JM_EscapeStrFromStr(filename));
6221+
DICT_SETITEM_DROP(res, dictkey_desc, JM_UnicodeFromStr(desc));
62306222
DICT_SETITEM_DROP(res, dictkey_length, Py_BuildValue("i", length));
62316223
DICT_SETITEM_DROP(res, dictkey_size, Py_BuildValue("i", size));
62326224
return res;
@@ -6344,23 +6336,23 @@ CheckParent(self)
63446336
pdf_obj *o;
63456337
63466338
DICT_SETITEM_DROP(res, dictkey_content,
6347-
Py_BuildValue("s", pdf_annot_contents(gctx, $self)));
6339+
JM_UnicodeFromStr(pdf_annot_contents(gctx, $self)));
63486340
63496341
o = pdf_dict_get(gctx, $self->obj, PDF_NAME(Name));
6350-
DICT_SETITEM_DROP(res, dictkey_name, Py_BuildValue("s", pdf_to_name(gctx, o)));
6342+
DICT_SETITEM_DROP(res, dictkey_name, JM_UnicodeFromStr(pdf_to_name(gctx, o)));
63516343
63526344
// Title (= author)
63536345
o = pdf_dict_get(gctx, $self->obj, PDF_NAME(T));
6354-
DICT_SETITEM_DROP(res, dictkey_title, Py_BuildValue("s", pdf_to_text_string(gctx, o)));
6346+
DICT_SETITEM_DROP(res, dictkey_title, JM_UnicodeFromStr(pdf_to_text_string(gctx, o)));
63556347
63566348
// CreationDate
63576349
o = pdf_dict_gets(gctx, $self->obj, "CreationDate");
63586350
DICT_SETITEM_DROP(res, dictkey_creationDate,
6359-
Py_BuildValue("s", pdf_to_text_string(gctx, o)));
6351+
JM_UnicodeFromStr(pdf_to_text_string(gctx, o)));
63606352
63616353
// ModDate
63626354
o = pdf_dict_get(gctx, $self->obj, PDF_NAME(M));
6363-
DICT_SETITEM_DROP(res, dictkey_modDate, Py_BuildValue("s", pdf_to_text_string(gctx, o)));
6355+
DICT_SETITEM_DROP(res, dictkey_modDate, JM_UnicodeFromStr(pdf_to_text_string(gctx, o)));
63646356
63656357
// Subj
63666358
o = pdf_dict_gets(gctx, $self->obj, "Subj");
@@ -6370,7 +6362,7 @@ CheckParent(self)
63706362
// Identification (PDF key /NM)
63716363
o = pdf_dict_gets(gctx, $self->obj, "NM");
63726364
DICT_SETITEM_DROP(res, dictkey_id,
6373-
Py_BuildValue("s", pdf_to_text_string(gctx, o)));
6365+
JM_UnicodeFromStr(pdf_to_text_string(gctx, o)));
63746366
63756367
return res;
63766368
}
@@ -6700,16 +6692,9 @@ struct fz_link_s
67006692
%}
67016693
PARENTCHECK(uri)
67026694
%pythoncode %{@property%}
6703-
%pythonappend uri %{
6704-
if not val:
6705-
val = ""
6706-
else:
6707-
nval = "".join([c for c in val if 32 <= ord(c) <= 127])
6708-
val = nval
6709-
%}
67106695
PyObject *uri()
67116696
{
6712-
return JM_UNICODE($self->uri);
6697+
return JM_UnicodeFromStr($self->uri);
67136698
}
67146699
67156700
PARENTCHECK(isExternal)
@@ -7313,12 +7298,12 @@ struct Tools
73137298
}
73147299
73157300
7316-
%feature("autodoc","Show anti-aliasing values.") anti_aliasing_values;
7317-
%pythonappend anti_aliasing_values %{
7301+
%feature("autodoc","Show anti-aliasing values.") show_aa_level;
7302+
%pythonappend show_aa_level %{
73187303
d = {"graphics": val[0], "text": val[1], "graphics_min_line_width": val[2]}
73197304
val = d
73207305
%}
7321-
PyObject *anti_aliasing_values()
7306+
PyObject *show_aa_level()
73227307
{
73237308
return Py_BuildValue("iif",
73247309
fz_graphics_aa_level(gctx),

fitz/helper-annot.i

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,10 @@ PyObject *JM_annot_border(fz_context *ctx, pdf_obj *annot_obj)
145145
}
146146

147147
LIST_APPEND_DROP(effect_py, Py_BuildValue("i", effect1));
148-
LIST_APPEND_DROP(effect_py, PyUnicode_FromString(effect2));
148+
LIST_APPEND_DROP(effect_py, Py_BuildValue("s", effect2));
149149
DICT_SETITEM_DROP(res, dictkey_width, Py_BuildValue("f", width));
150150
DICT_SETITEM_DROP(res, dictkey_dashes, dash_py);
151-
DICT_SETITEM_DROP(res, dictkey_style, PyUnicode_FromString(style));
151+
DICT_SETITEM_DROP(res, dictkey_style, Py_BuildValue("s", style));
152152
if (effect1 > -1) PyDict_SetItem(res, dictkey_effect, effect_py);
153153
Py_CLEAR(effect_py);
154154
return res;
@@ -345,7 +345,7 @@ PyObject *JM_get_annot_id_list(fz_context *ctx, pdf_page *page)
345345
o = pdf_dict_gets(ctx, annot->obj, "NM");
346346
if (o)
347347
{
348-
LIST_APPEND_DROP(names, PyUnicode_FromString(pdf_to_text_string(gctx, o)));
348+
LIST_APPEND_DROP(names, Py_BuildValue("s", pdf_to_text_string(gctx, o)));
349349
}
350350
}
351351
//for (annotptr = &page->widgets; *annotptr; annotptr = &(*annotptr)->next)
@@ -354,7 +354,7 @@ PyObject *JM_get_annot_id_list(fz_context *ctx, pdf_page *page)
354354
// o = pdf_dict_gets(ctx, annot->obj, "NM");
355355
// if (o)
356356
// {
357-
// LIST_APPEND_DROP(names, PyUnicode_FromString(pdf_to_text_string(gctx, o)));
357+
// LIST_APPEND_DROP(names, Py_BuildValue("s", pdf_to_text_string(gctx, o)));
358358
// }
359359
//}
360360
}

fitz/helper-other.i

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ PyObject *JM_EscapeStrFromBuffer(fz_context *ctx, fz_buffer *buff)
3838
return val;
3939
}
4040

41+
PyObject *JM_UnicodeFromStr(const char *c)
42+
{
43+
if (!c) return PyUnicode_FromString("");
44+
PyObject *val = Py_BuildValue("s", c);
45+
if (!val)
46+
{
47+
val = PyUnicode_FromString("");
48+
PyErr_Clear();
49+
}
50+
return val;
51+
}
52+
4153
PyObject *JM_EscapeStrFromStr(const char *c)
4254
{
4355
if (!c) return PyUnicode_FromString("");

fitz/helper-pdfinfo.i

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ void JM_gather_fonts(fz_context *ctx, pdf_document *pdf, pdf_obj *dict,
3939
if (xref) ext = fontextension(ctx, pdf, xref);
4040
PyObject *entry = PyTuple_New(7);
4141
PyTuple_SET_ITEM(entry, 0, Py_BuildValue("i", xref));
42-
PyTuple_SET_ITEM(entry, 1, PyUnicode_FromString(ext));
43-
PyTuple_SET_ITEM(entry, 2, PyUnicode_FromString(pdf_to_name(ctx, subtype)));
44-
PyTuple_SET_ITEM(entry, 3, JM_UNICODE(pdf_to_name(ctx, name)));
45-
PyTuple_SET_ITEM(entry, 4, PyUnicode_FromString(pdf_to_name(ctx, refname)));
46-
PyTuple_SET_ITEM(entry, 5, PyUnicode_FromString(pdf_to_name(ctx, encoding)));
42+
PyTuple_SET_ITEM(entry, 1, Py_BuildValue("s", ext));
43+
PyTuple_SET_ITEM(entry, 2, Py_BuildValue("s", pdf_to_name(ctx, subtype)));
44+
PyTuple_SET_ITEM(entry, 3, JM_EscapeStrFromStr(pdf_to_name(ctx, name)));
45+
PyTuple_SET_ITEM(entry, 4, Py_BuildValue("s", pdf_to_name(ctx, refname)));
46+
PyTuple_SET_ITEM(entry, 5, Py_BuildValue("s", pdf_to_name(ctx, encoding)));
4747
PyTuple_SET_ITEM(entry, 6, Py_BuildValue("i", stream_xref));
4848
LIST_APPEND_DROP(fontlist, entry);
4949
}
@@ -176,7 +176,7 @@ void JM_gather_forms(fz_context *ctx, pdf_document *doc, pdf_obj *dict,
176176

177177
PyObject *entry = PyTuple_New(4);
178178
PyTuple_SET_ITEM(entry, 0, Py_BuildValue("i", xref));
179-
PyTuple_SET_ITEM(entry, 1, PyUnicode_FromString(pdf_to_name(ctx, refname)));
179+
PyTuple_SET_ITEM(entry, 1, Py_BuildValue("s", pdf_to_name(ctx, refname)));
180180
PyTuple_SET_ITEM(entry, 2, Py_BuildValue("i", stream_xref));
181181
PyTuple_SET_ITEM(entry, 3, Py_BuildValue("ffff",
182182
bbox.x0, bbox.y0, bbox.x1, bbox.y1));

0 commit comments

Comments
 (0)