EPrints Technical Mailing List Archive
Message: #08256
< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First
Re: [EP-tech] .docx Export
- To: John Salter <J.Salter@leeds.ac.uk>, "eprints-tech@ecs.soton.ac.uk" <eprints-tech@ecs.soton.ac.uk>
- Subject: Re: [EP-tech] .docx Export
- From: Dennis Müller <dennis.mueller@bib.uni-mannheim.de>
- Date: Fri, 17 Jul 2020 16:08:07 +0200
Hi John, > I think what's getting returned currently isn't any form of OODoc - > it's a text file with an odt extension - which when opened defaults to > OpenOffice and looks like an ODF document. You're right, I saw this when removing plugin's suffix and mimetype for testing earlier on. What the user receives is basically just plain text of whatever is returned in output_list - but being interpreted as an OODoc by the browser/OS because of the mimetype. This exported document however has nothing to do with the one I create on the server. > Possibly something like: > my $tmp; > open(my $TMP,'>',\$tmp); > $container->save( $TMP ); > return $tmp; > > would work? Variations on your proposal (which is similar to what I tried from reading the multiline csv export you linked to) unfortunately didn't work either. The container could not be created from neither $TMP nor $tmp ("bad file descriptor" or "no such file or directory"). Creating the container from $output (a copy of template.odt), saving to $TMP and returning $tmp resulted in an empty output (wrapped in an ODT-file, of course :D). Now, for the sake of isolating the return value problem from any OODoc specialties, I've come to first create and save the doc like this: # persistent path for debugging my $output = "/data/madoc/test.odt"; # create new container from template # (eliminates the need to copy template.odt) my $container = odfContainer( $output, # create in specified path create => "text", # create text doc template_path => "/data/madoc/", # template.odt lives here work_dir => "/data/madoc/" # specify work dir for writing ); die("Unable to create container: $!") unless defined $container; # get content and tamper with it my $content = odfDocument( container => $container, part => 'content' ); $content->selectElementsByContent("Title", "Citation List"); # save container to $output $container->save(); Everything works fine until here: test.odt lies in the specified path and looks exactly how we want. So, if I'm not mistaken, the remaining question generally speaking is: How do I return an existing file on the server via the "output_list" sub in an export plugin? >From what I understand, the return value should be a (reading?) file handle, but that does not seem to work. I suspect to have a basic misunderstanding of how it is supposed to work from here on. I'd be very glad for further help with this. Cheers (and don't waste your weekend on this!) Dennis Am 16.07.20 um 18:25 schrieb John Salter: > Hi Dennis, > I think what's getting returned currently isn't any form of OODoc - it's a text file with an odt extension - which when opened defaults to OpenOffice and looks like an ODF document. > Changing the filename at the end of the exportview URL supports this e.g.: > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmadoc-dev.bib.uni-mannheim.de%2Fcgi%2Fexportview%2Fyear%2F2019%2FOffice%2Ftest.txt&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=Tw02TEZg7yEm0xu2YL6MLYRUgefQ1lnw3LRX2Nyeuno%3D&reserved=0 > > > Looking at the OODoc->save method: > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmetacpan.org%2Fsource%2FJMGDOC%2FOpenOffice-OODoc-2.125%2FOODoc%2FFile.pm%23L679-704&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=Pc1%2BbEK83TYxdPvlEwFc9k72%2BWdd6tzhZN6P61PvWoU%3D&reserved=0 > there is some logic to handle a few different situations. > > Possibly something like: > my $tmp; > open(my $TMP,'>',\$tmp); > $container->save( $TMP ); > return $tmp; > > would work? > I don't have a way to test this right now - if that doesn't help, I'll take a look over the weekend! > > Cheers, > John > > > -----Original Message----- > From: Dennis Müller [mailto:dennis.mueller@bib.uni-mannheim.de] > Sent: 16 July 2020 10:38 > To: John Salter <J.Salter@leeds.ac.uk>; eprints-tech@ecs.soton.ac.uk > Subject: Re: [EP-tech] .docx Export > > Dear John, > > thanks again for assisting. I played around with ideas from the links > you provided and the ooffice documentation, but it seems I misunderstood > something fundamentally. Please see my simplified testing code attached. > > As previously mentioned, the file saved on the server under $output > looks correct; I just can't get it handed over to the browser. > > The export is called via the cgi/exportview url: > <form method="get" accept-charset="utf-8" > action="https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmadoc-dev.bib.uni-mannheim.de%2Fcgi%2Fexportview&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=HLbP%2BILKjtjEGWRm2Awtknl1uOJ9IhKM%2FXVXrNry1EU%3D&reserved=0"> > > These are the called urls I see in the Firefox console: > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmadoc-dev.bib.uni-mannheim.de%2Fcgi%2Fexportview%3Fformat%3DOffice%26_action_export_redir%3DExportieren%26view%3Dpeople%26values%3DMueller%253D3ADennis%253D3A%253D3A&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=J%2BbI4g%2BDDYhM0Dyox1Rj5YC3JmGRr6SQ%2Bs3qpD2DX2w%3D&reserved=0 > https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmadoc-dev.bib.uni-mannheim.de%2Fcgi%2Fexportview%2Fpeople%2FMueller%3D3ADennis%3D3A%3D3A%2FOffice%2FMueller%3D3ADennis%3D3A%3D3A.odt&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=IO7f0FnpytkMG1zR4fa752Noom7aNfgzP9JXBGNoqFg%3D&reserved=0 > > Many thanks and best regards > Dennis > > Am 14.07.20 um 18:50 schrieb John Salter: >> Hi Dennis, >> Glad you made this work - hopefully the last part isn't too difficult to sort out! >> >> How are you calling the Export? Is it via the normal /cgi/export url, or another means? >> >> Have you got a 'mimetype' and a 'suffix' parameter set in your export plugin? >> >> Does the 'MultilineExcel' export plugin provide a useful example? >> - Setting up either the supplied filehandle, or a filehandle to a variable: >> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprintsug%2Fmultiline_excel%2Fblob%2Fmaster%2Flib%2Fplugins%2FEPrints%2FPlugin%2FExport%2FMultilineExcel.pm%23L44-L58&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=JuAlETJASGNAO7xFYuVYPXWWa5IiM3ttBx6IRiAwGJI%3D&reserved=0 >> - returning - either undef (if a filehandle was supplied) - or the variable: >> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprintsug%2Fmultiline_excel%2Fblob%2Fmaster%2Flib%2Fplugins%2FEPrints%2FPlugin%2FExport%2FMultilineExcel.pm%23L93-L98&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=IMxcNrFd58PWktTEuJcFSgF2aIRAacLTz%2BAWLzOROCw%3D&reserved=0 >> >> If that doesn't help, let me know and I'll do some more thinking! >> >> Cheers, >> John >> >> -----Original Message----- >> From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Dennis Müller via Eprints-tech >> Sent: 14 July 2020 16:49 >> To: John Salter <J.Salter@leeds.ac.uk>; eprints-tech@ecs.soton.ac.uk >> Subject: Re: [EP-tech] .docx Export >> >> Hi John, >> >> thanks for your quick answer. With your help, I could more or less do >> what I want with the document saving it to some path on the server. >> >> However, I'm struggling to find out how to return the actual document in >> my export plugin's "output_list" subroutine. Returning $oodoc or the >> file path doesn't work, obviously. Can you help me out once more, please? >> >> Cheers, >> Dennis >> >> Am 10.07.20 um 15:33 schrieb John Salter: >>> Hi Dennis, >>> I think you should be able to achieve this. >>> It's similar to the way the OpenOffice / Coversheets works. >>> That's normally configured to export as a PDF, but it first takes an OpenOffice document (your branded template), and replaces tags (like '##TITLE##') with rendered content. >>> >>> These are the tags: >>> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprintsug%2Fcoversheets%2Fblob%2Fmaster%2Fcfg%2Fcfg.d%2Fz_coversheet_tags.pl&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=W3Q0AlpxVb3ZSlQR3OK4FLfwbiHWYP8Ga%2F3FXM%2FOd%2Bs%3D&reserved=0 >>> and this adds them to the OpenOffice document: >>> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Feprintsug%2Fcoversheets%2Fblob%2Fmaster%2Flib%2Fplugins%2FEPrints%2FPlugin%2FConvert%2FAddCoversheet.pm%23L114-L127&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=iSNqgI1XPInNDQ63Fr5G%2Blg%2FyVes2RQTIqby64DddHY%3D&reserved=0 >>> >>> Does that help? >>> >>> There are probably other ways - possibly other perl modules that would allow a more direct approach - but the above stuff seems to work OK. >>> I'm using it with LibreOffice rather than OpenOffice if that's useful to know too. >>> >>> Cheers, >>> John >>> >>> -----Original Message----- >>> From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Dennis Müller via Eprints-tech >>> Sent: 10 July 2020 14:15 >>> To: eprints-tech@ecs.soton.ac.uk >>> Subject: [EP-tech] .docx Export >>> >>> Hi everyone, >>> >>> we've had a user request for exporting views/searches as a .docx file >>> styled in our corporate design. Has anyone ever done something similar? >>> >>> Just for the file format, it might work to "wrap" a simple text export >>> in an exporter that has a >>> "application/vnd.openxmlformats-officedocument.wordprocessingml.document" mimetype, >>> but I don't see where I could slip in the design template along the way. >>> >>> I'd be glad to hear from your experiences. :) >>> >>> Best regards >>> Dennis >>> >> > -- Dennis Müller, B.A. Universität Mannheim Universitätsbibliothek Digitale Bibliotheksdienste | Schloss Schneckenhof West | 68131 Mannheim Tel: +49 621 181-3023 E-Mail: dennis.mueller@bib.uni-mannheim.de Web: https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.bib.uni-mannheim.de%2F&data=01%7C01%7Ceprints-tech%40ecs.soton.ac.uk%7C36ab784946b44c5a3e9008d82a5ad559%7C4a5378f929f44d3ebe89669d03ada9d8%7C0&sdata=lo8relTtUBbfcFoNhU1mLqXIJ3AWCnPZLBTK7sm39rQ%3D&reserved=0
- Follow-Ups:
- Re: [EP-tech] .docx Export
- From: Dennis Müller <dennis.mueller@bib.uni-mannheim.de>
- Re: [EP-tech] .docx Export
- References:
- [EP-tech] .docx Export
- From: Dennis Müller <dennis.mueller@bib.uni-mannheim.de>
- Re: [EP-tech] .docx Export
- From: John Salter <J.Salter@leeds.ac.uk>
- Re: [EP-tech] .docx Export
- From: Dennis Müller <dennis.mueller@bib.uni-mannheim.de>
- Re: [EP-tech] .docx Export
- From: John Salter <J.Salter@leeds.ac.uk>
- Re: [EP-tech] .docx Export
- From: Dennis Müller <dennis.mueller@bib.uni-mannheim.de>
- Re: [EP-tech] .docx Export
- From: John Salter <J.Salter@leeds.ac.uk>
- Re: [EP-tech] .docx Export
- From: Dennis Müller <dennis.mueller@bib.uni-mannheim.de>
- [EP-tech] .docx Export
- Prev by Date: Re: [EP-tech] .docx Export
- Next by Date: [EP-tech] Error installing IRStats2 from eprints bazaar admin menu
- Previous by thread: [EP-tech] Sort view with creators_name and corp_creators
- Index(es):