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 <hossein@libreoffice.org>
This commit is contained in:
parent
9ee8b3b8d9
commit
abf2f24e5b
4 changed files with 125 additions and 0 deletions
|
@ -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 \
|
||||
|
|
75
odk/examples/cpp/lokconvert/Makefile
Normal file
75
odk/examples/cpp/lokconvert/Makefile
Normal file
|
@ -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:
|
46
odk/examples/cpp/lokconvert/lokconvert.cxx
Normal file
46
odk/examples/cpp/lokconvert/lokconvert.cxx
Normal file
|
@ -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>\n";
|
||||
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\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
lok::Document* lodoc = llo->documentLoad(input, NULL /* options */);
|
||||
if (!lodoc)
|
||||
{
|
||||
std::cerr << "Error: could not load document: " << llo->getError() << "\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!lodoc->saveAs(output, "pdf", NULL /* options */))
|
||||
{
|
||||
std::cerr << "Error: could not export document: " << llo->getError() << "\n";
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << "Error: LibreOfficeKit exception: " << e.what() << "\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::cerr << "Success!\n";
|
||||
return 0;
|
||||
}
|
BIN
odk/examples/cpp/lokconvert/test.odt
Normal file
BIN
odk/examples/cpp/lokconvert/test.odt
Normal file
Binary file not shown.
Loading…
Reference in a new issue