Commit 9c00874e7786fa38e15e9a4ddf9767b63e88386d
1 parent
b04fb5cf
added QPDFObjectHandle::replaceStreamData(std::string data).
Showing
2 changed files
with
25 additions
and
4 deletions
include/qpdf/QPDFObjectHandle.hh
| ... | ... | @@ -363,6 +363,15 @@ class QPDFObjectHandle |
| 363 | 363 | QPDFObjectHandle const& filter, |
| 364 | 364 | QPDFObjectHandle const& decode_parms); |
| 365 | 365 | |
| 366 | + // Replace the stream's stream data with the given string. | |
| 367 | + // This method will create a copy of the data rather than using | |
| 368 | + // the user-provided buffer as in the PointerHolder<Buffer> version | |
| 369 | + // of replaceStreamData. | |
| 370 | + QPDF_DLL | |
| 371 | + void replaceStreamData(std::string const& data, | |
| 372 | + QPDFObjectHandle const& filter, | |
| 373 | + QPDFObjectHandle const& decode_parms); | |
| 374 | + | |
| 366 | 375 | // As above, replace this stream's stream data. Instead of |
| 367 | 376 | // directly providing a buffer with the stream data, call the |
| 368 | 377 | // given provider's provideStreamData method. See comments on the | ... | ... |
libqpdf/QPDFObjectHandle.cc
| ... | ... | @@ -442,6 +442,19 @@ QPDFObjectHandle::replaceStreamData(PointerHolder<Buffer> data, |
| 442 | 442 | } |
| 443 | 443 | |
| 444 | 444 | void |
| 445 | +QPDFObjectHandle::replaceStreamData(std::string const& data, | |
| 446 | + QPDFObjectHandle const& filter, | |
| 447 | + QPDFObjectHandle const& decode_parms) | |
| 448 | +{ | |
| 449 | + assertStream(); | |
| 450 | + PointerHolder<Buffer> b = new Buffer(data.length()); | |
| 451 | + unsigned char* bp = b->getBuffer(); | |
| 452 | + memcpy(bp, (char*)data.c_str(), data.length()); | |
| 453 | + dynamic_cast<QPDF_Stream*>(obj.getPointer())->replaceStreamData( | |
| 454 | + b, filter, decode_parms); | |
| 455 | +} | |
| 456 | + | |
| 457 | +void | |
| 445 | 458 | QPDFObjectHandle::replaceStreamData(PointerHolder<StreamDataProvider> provider, |
| 446 | 459 | QPDFObjectHandle const& filter, |
| 447 | 460 | QPDFObjectHandle const& decode_parms) |
| ... | ... | @@ -978,10 +991,9 @@ QPDFObjectHandle |
| 978 | 991 | QPDFObjectHandle::newStream(QPDF* qpdf, std::string const& data) |
| 979 | 992 | { |
| 980 | 993 | QTC::TC("qpdf", "QPDFObjectHandle newStream with string"); |
| 981 | - PointerHolder<Buffer> b = new Buffer(data.length()); | |
| 982 | - unsigned char* bp = b->getBuffer(); | |
| 983 | - memcpy(bp, (char*)data.c_str(), data.length()); | |
| 984 | - return QPDFObjectHandle::newStream(qpdf, b); | |
| 994 | + QPDFObjectHandle result = newStream(qpdf); | |
| 995 | + result.replaceStreamData(data, newNull(), newNull()); | |
| 996 | + return result; | |
| 985 | 997 | } |
| 986 | 998 | |
| 987 | 999 | QPDFObjectHandle | ... | ... |