Hi Ahmed,

not a problem, answer inline..
Am 15.04.2014 12:57, schrieb Ahmed I Ibrahim:
> Hi Svante,
>
> Thank you for your time again.
>
> I tried to see how can I do merge documents using OpenOffice, but I didn't 
> see how. The only thing that I found from the help is Edit -> Changes -> 
> Merge Documents but this gave me an error saying "can not merge documents" 
> when I select different document. I think this is not its target.
>
> So if you can help me in two things:
> 1- How can I merge documents manually
In an OpenOffice descendant application it is Insert->Object->Ole Object
Than choose from file and insert your ODF text file.
> 2- When I see the different in the context.xml , how would I found the 
> needed API convent to do it. You see I am still new with ODF so I may need 
> more detailed guidance (sorry)
A frame will be added for instance in my example it looked like:
<draw:frame draw:style-name="fr1" draw:name="Objekt1"
text:anchor-type="paragraph" svg:width="21.001cm" svg:height="13.386cm"
draw:z-index="0">
    <draw:object xlink:href="./Object 1" xlink:type="simple"
xlink:show="embed" xlink:actuate="onLoad"/>
    <draw:image xlink:href="./ObjectReplacements/Object 1"
xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
</draw:frame>

Where "Object 1" was the name of the directory of the embedded file (the
directory containing the content.xml, etc.)

NOTE: In ODF the surrounding frame element provides the view frame only.
The children are view options the application might chose.
For instance, above it is first an draw:object, but in case the ODF
application do not know about OLE objects, the second child the
draw:image will be shown.
[It is quite similar to the HTML 5 <video> tag, which includes multiple
<source> elements of the same video in different codecs.]
You may find the ODF 1.2 spec documentation here
http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#element-draw_frame

To know if there is any existing functionality in the ODF Toolkit, I
searched for DrawFrameElement, as <draw:frame> would be mapped to that
typed DOM class.

But charts are usually added as embedded document, therefore you might
look at the simple API and the chart test case, but what suited best was
searching for "DrawFrameElement" in the simple API tests (i.e.
odftoolkit20140415\simple\src\test\java\org\odftoolkit\simple) and take
a look at the DocumentCreationTest
especially at the addImageToDocument(..) function as draw:object is
quite similar to draw:image.

PS: A better API should hopefully be available later this year, when I
merge my change-tracking changes into the repository.. (do not wait!) ;)

Hope that helps!

Best regards,
Svante


>
>
>
> 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
>
>
>
> From:   Svante Schubert <[email protected]>
> To:     Ahmed I Ibrahim/Egypt/IBM@IBMEG, [email protected], 
> Date:   04/15/2014 12:37 PM
> Subject:        Re: How to insert a text document into another text 
> document?
>
>
>
> Hi Ahmed,
>
> we just missed each other by mail.
> If there are still questions after my last mail and perhaps references
> http://incubator.apache.org/odftoolkit/source.html
>
> Please do not hesitate to write again ;)
>
> Best regards,
> Svante
>
> Am 15.04.2014 12:29, schrieb Ahmed I Ibrahim:
>> Many thanks Svante for your input.
>>
>> In my debugging for this problem I went through this method and and it 
> was 
>> working just fine. Actually the files were inserted in the master file 
> and 
>> I can see them when I open the master file as zip file. But when I open 
> it 
>> from OpenOffice, only the original data coming from the template is 
> there 
>> and not the rest of the inserted documents.
>>
>> For running the below test, I can gladly do that, but I'm not sure how. 
> I 
>> tried before to get all the source code from Maven but it was a trouble 
>> mistake from my side and I don't think I can handle such experience 
> again 
>> :)
>>
>> If you can just guide me to download the source code of these tests, and 
>> how to run them,  I can do that. 
>>
>> I am using the following versions for libraries of the code. 
>>
>> dom4j-1.6.1.jar
>> odfdom-java-0.8.7.jar
>> poi-3.9-20121203.jar
>> poi-ooxml-3.9-20121203.jar
>> poi-ooxml-schemas-3.9-20121203.jar
>> simple-odf-0.6.6
>> stax-api-1.0.1.jar
>> xmlbeans-2.3.0.jar
>> xslt-runner-1.2.1-incubating.jar
>> Xslt-runner-task-1.2.1-incubating.jar
>>
>> I created a one eclipse project for most of the demos (one is having 
>> errors that I couldn't fix)  that I can share with you guys but it is 
> more 
>> than 6 MB (due to the libraries) and I don't think that attachment to 
> this 
>> mailing list will allow it. I wonder if there is some place to upload it 
>> to.
>>
>> 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
>>
>>
>>
>> From:   Svante Schubert <[email protected]>
>> To:     Robert Weir <[email protected]>, Ahmed I 
>> Ibrahim/Egypt/IBM@IBMEG, 
>> Cc:     [email protected]
>> Date:   04/15/2014 11:16 AM
>> Subject:        Re: How to insert a text document into another text 
>> document?
>>
>>
>>
>> Hi Rob,
>>
>> any idea, why the demos of the simple API (e.g.
>> http://incubator.apache.org/odftoolkit/simple/demo/demo7.html)
>> are not part of the source code repository?
>>
>> Wouldn't it be nice to have them as part of the regression tests?
>>
>> @Ahmed: Due to obstacle mentioned above, you need to debug yourself in
>> the ODFDOM class OdfPackageDocument the following function:
>>
>>     /**
>>      * 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);
>>     }
>>
>> The function is being called from the following tests:
>>
>>   * DocumentCreationTest.java
>>   * LoadSaveErrorTest.java
>>   * LoadSaveTest.java
>>
>> PS: A little history, the simple API was once an IBM "branch", in
>> general I focus on supporting the lower ODFDOM library.
>>
>> Hope this helps already,
>> Svante
>>
>>
>> Am 15.04.2014 10:49, schrieb Ahmed I Ibrahim:
>>> Dear all,
>>>
>>> Sorry for my previous mail, it had more details but my editor just get 
>> rid 
>>> of them. Any way it sent the important part which is the code.
>>>
>>> I still have the problem and actually the problem is simple. I need to 
>>> merge a set of text documents into one text document. To regenerate my 
>>> problem, I modified the demo7  available at
>>> http://incubator.apache.org/odftoolkit/simple/demo/demo7.html
>>>
>>> This demo is generating a set of documents and I modified it to also 
>> merge 
>>> these documents into one document. I used two methods to do so:
>>>
>>> One by using  org.odftoolkit.simple.TextDocument as following:
>>>
>>>         public static void generateAllOffersLetterTextDocument() throws 
>>> Exception {
>>>                 TextDocument templateDocument = 
>> TextDocument.loadDocument(
>>> fRootDirectory + "/"+ "OfferTemplate.odt");
>>>
>>>                 SpreadsheetDocument dataDocument = SpreadsheetDocument.
>>> loadDocument(fRootDirectory + "/"+ "Candidates.ods");
>>>                 Table table = dataDocument.getTableByName("Sheet1");
>>>                 int rowCount = table.getRowCount();
>>>
>>>                 TextDocument offerDoc = null;
>>>                 for(int i = 1; i<rowCount; i++){
>>>                         Row row = table.getRowByIndex(i);
>>>                         String name = 
>>> row.getCellByIndex(0).getDisplayText();
>>>
>>>                         offerDoc = 
>> TextDocument.loadDocument(fOutDirectory 
>>> + "/" + name+"'s offer letter.odt");
>>>                         templateDocument.insertDocument(offerDoc, "/" + 
>>> name);
>>>                 }
>>>
>>>                 templateDocument.save(fOutDirectory + 
>>> "/AllOffersTextDoc.odt");
>>>         }
>>>
>>> And the other way is by extending 
>>> org.odftoolkit.odfdom.doc.OdfTextDocument by a new class MyTextDocument 
>> to 
>>> do exactly the same thing as follows:
>>>
>>>         public static void generateAllOffersODFDocument () throws 
>>> Exception {
>>>                 MyTextDocument allDocTextDoc = MyTextDocument.
>>> newTextWorkProduct(fRootDirectory + "/"+ "OfferTemplate.ott");
>>>
>>>                 SpreadsheetDocument dataDocument = SpreadsheetDocument.
>>> loadDocument(fRootDirectory + "/"+ "Candidates.ods");
>>>                 Table table = dataDocument.getTableByName("Sheet1");
>>>                 int rowCount = table.getRowCount();
>>>
>>>                 for(int i = 1; i<rowCount; i++){
>>>                         Row row = table.getRowByIndex(i);
>>>                         String name = 
>>> row.getCellByIndex(0).getDisplayText();
>>>
>>>                         allDocTextDoc.includeFile(fOutDirectory + "/" + 
>>> name+"'s offer letter.odt", "/" + name);
>>>                 }
>>>
>>>
>>>                 allDocTextDoc.save (fOutDirectory + 
>> "/AllOffersODFDoc.odt"
>>> );
>>>         }
>>>
>>> While the includeFile is as follows:
>>>
>>>         public void includeFile (String filePath, String documentPath) 
>>> throws Exception{
>>>                 OdfPackageDocument newDocument;
>>>
>>>                 try {
>>>                         newDocument = OdfPackageDocument.loadDocument
>>> (filePath);
>>>                         insertDocument(newDocument, documentPath);
>>>                 } catch (Exception exception) {
>>>                         throw new Exception ("Failed to include the 
>> file: 
>>> " + filePath, exception);
>>>                 }
>>>         }
>>>
>>> The results were exactly the same, the generated files didn't show the 
>>> agregated documents, only the first contents of the document, however 
>> the 
>>> conetns of the documents are inserted in their coresponding folders in 
>> the 
>>> zip file. 
>>>
>>> In the attached zip file in the previous message, I included the source 
>>> code (FieldsDemo.java and MyTextDocument.java) as well as the source 
>> files 
>>> and the generated files. Sorry again for the previous messgae. I am 
>>> stucked here and I can not move forward, and I am looking for help.
>>>
>>>
>>> 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
>>>
>>>
>>>
>>> From:   Ahmed I Ibrahim/Egypt/IBM@IBMEG
>>> To:     [email protected], 
>>> Date:   04/15/2014 10:18 AM
>>> Subject:        Re: How to insert a text document into another text 
>>> document?
>>>
>>>
>>> [attachment "ODF_FileMerge.zip" deleted by Ahmed I Ibrahim/Egypt/IBM] 
>>>
>>
>
>

Reply via email to