Commit Graph

10727 Commits

Author SHA1 Message Date
Marius Volkhart d1c9a07860 Add the ability to edit HSLFPictureData contents
Pictures can now be edited by calling HSLFPictureData#setData(byte[]). The byte[] should contain the image data as an image viewer might read it.

To enable this functionality, a tighter coupling between the EscherBSERecords of the slideshow and the HSLFPictureData was required. This ensures that changes in image data size are accurately recorded in the records.

In the course of coupling the records and the HSLFPictureData, various scenarios arose where a mapping of records to pictures was non-trivial. Accordingly, the HSLFSlideShowImpl#matchPicturesAndRecords(...) function was added to perform a more sophisticated matching pass. This function is heavily exercised by org.apache.poi.hslf.usermodel.TestBugs.testFile[5] and PPTX2PNG.render[2], as well as the new TestPictures#testSlideshowWithIncorrectOffsets().

Closes #225

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887017 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 23:16:14 +00:00
Marius Volkhart 77ec895ee0 Make picture loading in HWPF PicturesTable easier to understand
The recursion is no longer necessary due to the more defined structure of OfficeArtContent.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887016 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 21:06:05 +00:00
Marius Volkhart c08763fad0 Add documentation to PICFAndOfficeArtData
Adjust call sites based on defined behavior.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887015 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 20:44:39 +00:00
PJ Fanning 39ac99440e change gradle build to get unreleased xmlbeans jar from ci-builds (like ant build does)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887012 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 19:48:22 +00:00
Marius Volkhart 5350121bfe Simplify OfficeArtContent#getBStoreContainer method
Due to the new structure of the class, we can be more specific about how we load the BStore.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887011 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 19:40:23 +00:00
PJ Fanning b02866c2a7 change gradle build to get unreleased xmlbeans jar from ci-builds (like ant build does)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887010 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 19:28:39 +00:00
Marius Volkhart e7b9a5af13 Rename EscherRecordHolder to OfficeArtContent
While the class does indeed hold EscherRecords, due to recent refactoring it is much more structured now than it was before. The contents of the class now closely resemble the OfficeArtContent structure referenced in the MS-DOC spec. Naming the class after the specification structure makes it easier to find and understand.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887009 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 19:18:13 +00:00
Marius Volkhart 9c88bb2201 Rework EscherRecordHolder parsing
Modify the parsing done by EscherRecordHolder to be more deterministic. The format of the OfficeArtContent structure, which the EscherRecordHolder represents, is well defined in the MS-DOC spec. A clear class structure makes it easier to reason about the availability of data.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887008 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 18:49:42 +00:00
Marius Volkhart fab0ec3e08 Add documentation to EscherRecordTypes#DG_CONTAINER
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887007 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 18:39:51 +00:00
Marius Volkhart b7038df14d Simplify initialization of HWPF EscherRecordHolder
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886999 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 16:47:43 +00:00
Marius Volkhart 12857e68ac Add documentation for HWPF FileInformationBlock DggInfo methods
This documentation comes from [MS-DOC] - v20191119.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886998 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 15:08:39 +00:00
Marius Volkhart cfee75c9b6 Revert "Replace magic constant with reference" changes
Reverts r1886986, r1886987 and r1886988. Incorrect conversion between int and shorts led to incorrect logic.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886989 13f79535-47bb-0310-9956-ffa450edef68
2021-02-27 19:08:49 +00:00
Marius Volkhart 66e08f08d3 Replace magic constant use of Escher Blip End type ID with reference
Instead of referring to the magic constant 0xF117, reference the value in the EscherRecordTypes enum.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886988 13f79535-47bb-0310-9956-ffa450edef68
2021-02-27 18:33:56 +00:00
Marius Volkhart b9bbac0005 Replace magic constant use of Escher Blip Start type ID with reference
Instead of referring to the magic constant 0xF018, reference the value in the EscherRecordTypes enum.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886987 13f79535-47bb-0310-9956-ffa450edef68
2021-02-27 18:26:36 +00:00
Marius Volkhart d543e89185 Replace magic constant use of EscherBSERecord type ID with reference
Instead of referring to the magic constant 0xF007, reference the value in the EscherRecordTypes enum.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886986 13f79535-47bb-0310-9956-ffa450edef68
2021-02-27 18:22:33 +00:00
PJ Fanning 16561e85c7 add missing license
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886965 13f79535-47bb-0310-9956-ffa450edef68
2021-02-27 01:29:21 +00:00
Marius Volkhart 50757bca8e Fix bug with record indexes for HSSF Workbooks
We have encountered workbooks that do not have a TabIdRecord (see 55982.xls). However, the WorkbookRecordList#updateRecordPos() method would still increment the position of the TabIdRecord for such workbooks. Changing the default position of the record from 0 to -1 indicates that the record position has now been set.

This bug was discovered while adding support for editing pictures in HSSF documents.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886963 13f79535-47bb-0310-9956-ffa450edef68
2021-02-27 00:43:56 +00:00
Marius Volkhart 451684aa91 Enable running more integration tests from Gradle.
This is particularly relevant for developers who import the Gradle project into their IDE and run tests using the Gradle test runner. Those developers were previously unable to debug integration tests.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886962 13f79535-47bb-0310-9956-ffa450edef68
2021-02-26 22:14:17 +00:00
Marius Volkhart 0fbf8f2e58 Remove the integrationTest task from the Gradle integrationtest project
This task adds no additional configuration over the regular test task.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886961 13f79535-47bb-0310-9956-ffa450edef68
2021-02-26 22:07:14 +00:00
Marius Volkhart a49347e8d0 Remove the test exclusion for RecordStresser and RecordsStresser from Gradle integration tests
These classes don't exist.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886960 13f79535-47bb-0310-9956-ffa450edef68
2021-02-26 22:05:16 +00:00
Marius Volkhart 6fe733c92a Enable parallel tests from Gradle
Parallel tests are already enabled from Ant. This does the same for Gradle users.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886959 13f79535-47bb-0310-9956-ffa450edef68
2021-02-26 21:15:12 +00:00
PJ Fanning 7a10b863f6 xmlsec version
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886893 13f79535-47bb-0310-9956-ffa450edef68
2021-02-24 21:42:01 +00:00
PJ Fanning bba9aa2b66 missing ooxml-schemas-lite classes
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886892 13f79535-47bb-0310-9956-ffa450edef68
2021-02-24 21:26:33 +00:00
Andreas Beeker 72ad5857f4 include batik in poi-bin artifact
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886863 13f79535-47bb-0310-9956-ffa450edef68
2021-02-23 22:29:51 +00:00
Andreas Beeker 6470765bbe add batik to forbidden-apis-check classpath
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886862 13f79535-47bb-0310-9956-ffa450edef68
2021-02-23 21:59:56 +00:00
Marius Volkhart 3c9f29a8c2 [bug-63046] Fix Java 16 build
org.apache.santuario:xmlsec:2.2.0 has a dependency on SLF4J. We use this in SignatureInfo.java.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886811 13f79535-47bb-0310-9956-ffa450edef68
2021-02-22 18:27:14 +00:00
Andreas Beeker eb30f2e1c8 Use upcoming XmlBeans 5.0.0 (working version 4.0.1)
Make batik optional as it doesn't work on the module-path
Use sub-components of batik as batik-all references them all again resulting in duplicated entries (maven poms haven't been migrated yet ...)
Remove SLF4j dependency

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886777 13f79535-47bb-0310-9956-ffa450edef68
2021-02-22 00:18:37 +00:00
Marius Volkhart 259c9967ef [bug-63046] Use Log4j 2 for logging
This removes the POILogger and POILogFactory mechanism for logging. This mechanism was created at a time when the Java landscape looked very different than it does today.

Log4j 2 is an Apache Foundation project that is well maintained and is widely regarded as having good performance and capabilities. We use only the Log4j API artifact. This lets application developers choose how they want to capture logging events if at all. Integrations with Log4j 2 Core and Logback are available from the Log4j project.

Closes #224

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886770 13f79535-47bb-0310-9956-ffa450edef68
2021-02-21 20:57:25 +00:00
Andreas Beeker 6d10f26718 Use UTF-8 when writing SVG files
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886768 13f79535-47bb-0310-9956-ffa450edef68
2021-02-21 18:52:23 +00:00
PJ Fanning 62bfbd3c90 try re-eanbling xml entity config
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886766 13f79535-47bb-0310-9956-ffa450edef68
2021-02-21 18:31:49 +00:00
Dominik Stadler 297c16f1f0 FinanceLib: Simplify code and add a few more tests
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886658 13f79535-47bb-0310-9956-ffa450edef68
2021-02-18 10:00:13 +00:00
Alain Béarez b20ca985b8 Manipulate individual data point properties
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886642 13f79535-47bb-0310-9956-ffa450edef68
2021-02-17 22:05:18 +00:00
Marius Volkhart 36277f9e54 Code cleanup AbstractEscherHolderRecord
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886623 13f79535-47bb-0310-9956-ffa450edef68
2021-02-17 15:41:22 +00:00
Marius Volkhart 26f3db7e14 Documentation for some EscherRecordTypes
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886620 13f79535-47bb-0310-9956-ffa450edef68
2021-02-17 15:10:17 +00:00
Marius Volkhart 5d9dcdf3df Add documentation for DrawingGroupRecord
Documentation adapted from [MS-XLS].pdf v20190618.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886619 13f79535-47bb-0310-9956-ffa450edef68
2021-02-17 14:48:30 +00:00
Alain Béarez bcf413f68a [bug-63902] reference cloned sheet in cloned chart data series
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886605 13f79535-47bb-0310-9956-ffa450edef68
2021-02-16 23:39:19 +00:00
PJ Fanning 0df893124a allow subclassing of code to gen comments table
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886547 13f79535-47bb-0310-9956-ffa450edef68
2021-02-15 21:48:26 +00:00
PJ Fanning 0ce6ceb3ea add method to test for strict ooxml format
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886545 13f79535-47bb-0310-9956-ffa450edef68
2021-02-15 21:05:57 +00:00
Dominik Stadler 37d2d474dc Do not fail test which compares two documents if the timestamp in the ZIP header field is different
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886532 13f79535-47bb-0310-9956-ffa450edef68
2021-02-15 15:23:49 +00:00
Dominik Stadler 7a8f21b989 Do not require NullPointerException to have a null-message on JDK < 16
It seems depending on the exact JDK some Exceptions have failure messages populated

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886527 13f79535-47bb-0310-9956-ffa450edef68
2021-02-15 13:17:18 +00:00
PJ Fanning 92134f34b1 add test for reading core properties from ooxml strict file
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886514 13f79535-47bb-0310-9956-ffa450edef68
2021-02-15 00:34:12 +00:00
PJ Fanning 1f50c10ab0 add missing CTPhoneticRun
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886511 13f79535-47bb-0310-9956-ffa450edef68
2021-02-14 20:25:59 +00:00
PJ Fanning c23381076e fix typo
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886497 13f79535-47bb-0310-9956-ffa450edef68
2021-02-14 00:05:02 +00:00
PJ Fanning e47a48283b small refactor
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886495 13f79535-47bb-0310-9956-ffa450edef68
2021-02-13 23:33:24 +00:00
PJ Fanning 49fe3ba330 allo XSSFReader to be sublclassed with implementation that allows OOXMl Strict files
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886493 13f79535-47bb-0310-9956-ffa450edef68
2021-02-13 19:43:07 +00:00
PJ Fanning 79a9cf3692 batik 1.14
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886491 13f79535-47bb-0310-9956-ffa450edef68
2021-02-13 14:49:40 +00:00
Marius Volkhart 25dc09b041 Fix GitHub Action yaml for Gradle build
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886449 13f79535-47bb-0310-9956-ffa450edef68
2021-02-11 22:27:46 +00:00
Alain Béarez 4cf6b5b071 Import slide notes when importing slide content
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886338 13f79535-47bb-0310-9956-ffa450edef68
2021-02-08 20:34:14 +00:00
Marius Volkhart db962309b9 [github-219] Add GitHub Action to verify Gradle wrapper
Thanks to Valery Yatsynovich. This closes #219

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886276 13f79535-47bb-0310-9956-ffa450edef68
2021-02-07 11:03:01 +00:00
Marius Volkhart 7e32be6895 Cache Gradle wrapper & caches during GitHub Actions
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886266 13f79535-47bb-0310-9956-ffa450edef68
2021-02-07 00:30:41 +00:00