1// Text.cpp
2//
3// This sample demonstrates the generation and saving of a text PDF
4// document, using external TTF font and UTF-8 encoding.
5//
6// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
7// and Contributors.
8//
9// SPDX-License-Identifier: BSL-1.0
10//
11
12#include "Poco/PDF/Document.h"
13#include "Poco/Path.h"
14#include "Poco/File.h"
15
16
17#if defined(POCO_OS_FAMILY_UNIX)
18const std::string fileName = "${POCO_BASE}/PDF/samples/Text/Text.pdf";
19#elif defined(POCO_OS_FAMILY_WINDOWS)
20const std::string fileName = "%POCO_BASE%/PDF/samples/Text/Text.pdf";
21#endif
22
23
24using Poco::PDF::Document;
25using Poco::PDF::Font;
26using Poco::PDF::Page;
27using Poco::Path;
28using Poco::File;
29
30
31int main(int argc, char** argv)
32{
33 File file(Path::expand(fileName));
34 if (file.exists()) file.remove();
35
36 Document document(file.path());
37
38 Font font = document.font(document.loadTTFont("DejaVuLGCSans.ttf", true), "UTF-8");
39 Page page = document[0];
40 page.setFont(font, 24);
41 std::string hello = "Hello PDF World from C++ Portable Components";
42 float tw = page.textWidth(hello);
43 page.writeOnce((page.getWidth() - tw) / 2, page.getHeight() - 50, hello);
44 page.setFont(font, 14);
45 hello = "~ Courtesy of G\xC3\xBCnter Obiltschnig & Aleksandar Fabijani\xC4\x87 ~";
46 tw = page.textWidth(hello);
47 page.writeOnce((page.getWidth() - tw) / 2, page.getHeight() - 100, hello);
48 document.save();
49 return 0;
50}
51