From 5cff65d847cf869caab8ce1a4b5c8063fae1a43f Mon Sep 17 00:00:00 2001 From: Yoshiyuki Hirano Date: Thu, 13 Apr 2023 12:27:44 +0900 Subject: [PATCH] Extract target_extname to allow 'html:HTML:EmbedImages' fix #27 When the target format was 'html:HTML:EmbededImages', the current implementation of the extension extraction logic generated an incorrect file extension of 'html:HTML'. To address this issue, we have revised the extension extraction logic to correctly identify and generate the appropriate file extension for the target format. --- lib/libreconv.rb | 7 ++++++- spec/fixtures/docx_with_image.docx | Bin 0 -> 11184 bytes spec/libreconv/converter_convert_spec.rb | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100755 spec/fixtures/docx_with_image.docx diff --git a/lib/libreconv.rb b/lib/libreconv.rb index da81a97..ca589a9 100644 --- a/lib/libreconv.rb +++ b/lib/libreconv.rb @@ -113,7 +113,12 @@ def escaped_source_path # @return [String] def target_filename - File.basename(escaped_source_path, '.*') + '.' + File.basename(@convert_to, ':*') + File.basename(escaped_source_path, '.*') + '.' + target_extname + end + + # @return [String] + def target_extname + @convert_to.split(':')[0] end # @raise [IOError] If soffice headless command line tool not found. diff --git a/spec/fixtures/docx_with_image.docx b/spec/fixtures/docx_with_image.docx new file mode 100755 index 0000000000000000000000000000000000000000..589b5a2656bf226b169ea1fb910f009b7e55668c GIT binary patch literal 11184 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 0 + expect(converted_file).to include('data:image/png;base64') + end + end + Helpers::FILE_TYPES.each do |type| it "converts a #{type} to pdf" do Dir.mktmpdir do |target_path|