odk/Package_examples.mk                    |    4 +
 odk/examples/cpp/lokconvert/Makefile       |   75 +++++++++++++++++++++++++++++
 odk/examples/cpp/lokconvert/lokconvert.cxx |   46 +++++++++++++++++
 odk/examples/cpp/lokconvert/test.odt       |binary
 4 files changed, 125 insertions(+)

New commits:
commit abf2f24e5b58608bc6526a2703ef68c66ab1df0f
Author:     Hossein <hoss...@libreoffice.org>
AuthorDate: Thu Jul 4 15:17:26 2024 +0200
Commit:     Hossein <hoss...@libreoffice.org>
CommitDate: Tue Jul 16 02:00:18 2024 +0200

    Add lokconvert odk example
    
    This exmaple converts a file to PDF using LibreOfficeKit library.
    
    Change-Id: Idc4afafc9541986617f0cc4d46cd89e25ae12051
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169998
    Tested-by: Jenkins
    Reviewed-by: Hossein <hoss...@libreoffice.org>

diff --git a/odk/Package_examples.mk b/odk/Package_examples.mk
index 5588b74d7ea0..28d60b329016 100644
--- a/odk/Package_examples.mk
+++ b/odk/Package_examples.mk
@@ -427,6 +427,10 @@ $(eval $(call 
gb_Package_add_files_with_dir,odk_examples,$(SDKDIRNAME)/examples,
     basic/text/modifying_text_automatically/using_regular_expressions.odt \
     cpp/Convertor/Convertor.cxx \
     cpp/Convertor/Makefile \
+    cpp/Convertor/test.odt \
+    cpp/lokconvert/lokconvert.cxx \
+    cpp/lokconvert/Makefile \
+    cpp/lokconvert/test.odt \
     cpp/Draw/Draw.cxx \
     cpp/Draw/Makefile \
     cpp/DocumentLoader/DocumentLoader.cxx \
diff --git a/odk/examples/cpp/lokconvert/Makefile 
b/odk/examples/cpp/lokconvert/Makefile
new file mode 100644
index 000000000000..fa72a5256ebf
--- /dev/null
+++ b/odk/examples/cpp/lokconvert/Makefile
@@ -0,0 +1,75 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 
100 -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+# Builds the C++ lokconvert example of the SDK.
+
+PRJ=../../..
+SETTINGS=$(PRJ)/settings
+
+include $(SETTINGS)/settings.mk
+include $(SETTINGS)/std.mk
+
+# Define non-platform/compiler specific settings
+COMPONENT_NAME=lokconvert
+
+OUT_COMP_INC = $(OUT_INC)/$(COMPONENT_NAME)
+OUT_COMP_GEN = $(OUT_MISC)/$(COMPONENT_NAME)
+OUT_COMP_OBJ=$(OUT_OBJ)/$(COMPONENT_NAME)
+
+CXXFILES = lokconvert.cxx
+
+OBJFILES = $(patsubst %.cxx,$(OUT_SLO_COMP)/%.$(OBJ_EXT),$(CXXFILES))
+
+# Targets
+.PHONY: ALL
+ALL : \
+       CpplokconvertExample
+
+include $(SETTINGS)/stdtarget.mk
+
+$(OUT_COMP_OBJ)/%.$(OBJ_EXT) : %.cxx $(SDKTYPEFLAG)
+       -$(MKDIR) $(subst /,$(PS),$(@D))
+       $(CC) $(CC_FLAGS) $(CC_INCLUDES) -I$(OUT_COMP_INC) $(CC_DEFINES) 
$(CC_OUTPUT_SWITCH)$(subst /,$(PS),$@) $<
+
+$(OUT_BIN)/lokconvert$(EXE_EXT) : $(OUT_COMP_OBJ)/lokconvert.$(OBJ_EXT)
+       -$(MKDIR) $(subst /,$(PS),$(@D))
+       -$(MKDIR) $(subst /,$(PS),$(OUT_COMP_GEN))
+ifeq "$(OS)" "WIN"
+       $(LINK) $(EXE_LINK_FLAGS) /OUT:$@ /MAP:$(OUT_COMP_GEN)/$(basename 
$(@F)).map \
+         $< $(CPPUHELPERLIB) $(CPPULIB) $(SALHELPERLIB) $(SALLIB)
+else
+       $(LINK) $(EXE_LINK_FLAGS) $(LINK_LIBS) -o $@ $< \
+         $(CPPUHELPERLIB) $(CPPULIB) $(SALHELPERLIB) $(SALLIB) $(STDC++LIB)
+ifeq "$(OS)" "MACOSX"
+       $(INSTALL_NAME_URELIBS_BIN)  $@
+endif
+endif
+
+CpplokconvertExample : $(OUT_BIN)/lokconvert$(EXE_EXT)
+       @echo 
--------------------------------------------------------------------------------
+       @echo The example loads the "$(QM)test.odt$(QM)" document in the 
lokconvert example directory
+       @echo   and convert it to PDF
+       @echo -
+       @echo Use the following command to execute the example!
+       @echo -
+       @echo $(MAKE) lokconvert.run
+       @echo -
+       @echo 
--------------------------------------------------------------------------------
+
+%.run: $(OUT_BIN)/lokconvert$(EXE_EXT)
+       cd $(subst /,$(PS),$(OUT_BIN)) && $(basename $@) $(subst \,/,$(subst 
/,$(PS),"$(OO_SDK_HOME)/examples/cpp/lokconvert/test.odt" "$(PWD)/test.pdf"))
+
+.PHONY: clean
+clean :
+       -$(DELRECURSIVE) $(subst /,$(PS),$(OUT_COMP_INC))
+       -$(DELRECURSIVE) $(subst /,$(PS),$(OUT_COMP_GEN))
+       -$(DELRECURSIVE) $(subst /,$(PS),$(OUT_COMP_OBJ))
+       -$(DEL) $(subst \,\,$(subst /,$(PS),$(OUT_BIN)/lokconvert*))
+
+# vim: set noet sw=4 ts=4:
diff --git a/odk/examples/cpp/lokconvert/lokconvert.cxx 
b/odk/examples/cpp/lokconvert/lokconvert.cxx
new file mode 100644
index 000000000000..123d1190e040
--- /dev/null
+++ b/odk/examples/cpp/lokconvert/lokconvert.cxx
@@ -0,0 +1,46 @@
+#include <iostream>
+#include "LibreOfficeKit/LibreOfficeKit.hxx"
+
+int main(int argc, char* argv[])
+{
+    if (argc < 3)
+    {
+        std::cout << "Usage: lokconvert <input_file_path> <output_file_path>
";
+        return 1;
+    }
+    const char* input = argv[1];
+    const char* output = argv[2];
+
+    lok::Office* llo = NULL;
+    try
+    {
+        const char* lo_bin_dir = std::getenv("OO_SDK_URE_BIN_DIR");
+        llo = lok::lok_cpp_init(lo_bin_dir);
+        if (!llo)
+        {
+            std::cerr << "Error: could not initialise LibreOfficeKit
";
+            return 1;
+        }
+
+        lok::Document* lodoc = llo->documentLoad(input, NULL /* options */);
+        if (!lodoc)
+        {
+            std::cerr << "Error: could not load document: " << llo->getError() 
<< "
";
+            return 1;
+        }
+
+        if (!lodoc->saveAs(output, "pdf", NULL /* options */))
+        {
+            std::cerr << "Error: could not export document: " << 
llo->getError() << "
";
+            return 1;
+        }
+    }
+    catch (const std::exception& e)
+    {
+        std::cerr << "Error: LibreOfficeKit exception: " << e.what() << "
";
+        return 1;
+    }
+
+    std::cerr << "Success!
";
+    return 0;
+}
diff --git a/odk/examples/cpp/lokconvert/test.odt 
b/odk/examples/cpp/lokconvert/test.odt
new file mode 100644
index 000000000000..dc4efecac071
Binary files /dev/null and b/odk/examples/cpp/lokconvert/test.odt differ

Reply via email to