Hi Ahmed,

The problem is the following call:
        insertDocument(newDocument, "");
 
You might want to try something like:
        insertDocument(newDocument, "/myNewDocument");
 
The reason is that a new document is nothing more than a file directory within 
the document ZIP.
If you do not provide a path, there is a problem due to a missing default.

If this is not solving your problem, please provide a regression test, for 
instance by altering an existing one and I (or some other volunteer), will 
debug into it.

Hope it helps,
Svante 


 
Am 13.04.2014 04:17, schrieb Ahmed I Ibrahim:
> Dear all,
>
> I am working in a tool that should be generating a OpenDocument Reports 
> and some custom documentation from templates.
>
> Currently I need insert (include) a document to be inserted in another 
> document.
>
> I wrote that below function, 
>
>         public void includeFile (String filePath) throws Exception {
>                 OdfPackageDocument newDocument;
>                 try {
>                         newDocument = 
> OdfPackageDocument.loadDocument(filePath);
>                         insertDocument(newDocument, "");
>                 } catch (Exception exception) {
>                         throw new Exception ("Failed to include the file: 
> " + filePath, exception);
>                 }
>         }
>
> When I executed it gives me the following exception:
>
> java.lang.IllegalArgumentException: The internalPath given by parameter is 
> an empty string!
>         at org.odftoolkit.odfdom.pkg.OdfPackage.normalizeFilePath(
> OdfPackage.java:1832)
>         at org.odftoolkit.odfdom.pkg.OdfPackage.insert(
> OdfPackage.java:1375)
>         at org.odftoolkit.odfdom.pkg.OdfPackage.insertDocument(
> OdfPackage.java:1095)
>         at org.odftoolkit.odfdom.pkg.OdfPackageDocument.insertDocument(
> OdfPackageDocument.java:269)
>         at com.ibm.docgen.odf.workproduct.TextWorkProduct.includeFile(
> TextWorkProduct.java:147)
>
> I don't know what path I should include for the insertDocument () call 
> what should be this path? The documentation of the insertDocument is as 
> following:
>
>  /**
>          * Embed an OdfPackageDocument to the current OdfPackageDocument. 
> All the
>          * file entries of child document will be embedded as well to the 
> current
>          * document package.
>          *
>          * @param newDocument the OdfPackageDocument to be embedded.
>          * @param documentPath to the directory the ODF document should be 
> inserted
>          * (relative to the root of this document).
>          */
>         public void insertDocument(OdfPackageDocument newDocument, String 
> documentPath) {
>                 newDocument.flushDoms();
>                 mPackage.insertDocument(newDocument, 
> mDocumentPathInPackage + documentPath);
>         }
>
> But I still didn't understand which directory I should include its path or 
> what should be the documentPaht value? Is it the full path of the 
> sourceFile, or is it the directory of the destination document.
>
> On the other hand, when I modified the call to this method to be 
>         insertDocument(newDocument, "Introduction");
> The document created but it didn't show the inserted contents of the 
> inserted document. When I opened the generated document using Zip tool, 
> there was a new folder created called (Introduction) and it includes its 
> contents. 
> So how should I make the contents inserted to appear? What am I missing?
>
> Thanks & Best Regards / السلام عليكم 
>
> Ahmed Ibrahim
> MBA ,Senior IT Architect, SWG Cairo Lab Services
> BPM Client Solution Manager, MEA 
> IT Architect Egypt Profession Lead
> Mobile: +20 100 1615 506

Reply via email to