UberPDF-SDK
We live by example! Need custom code? - Email the ÜberDude - Joe C. Hecht

ÜberPDF™ FAQ


What platforms do you build on?

The ÜberBuild™ system works on many platforms. Currently, we test on:
Linux ARM x32
Linux ARM x64
Linux Intel x32
Linux Intel x64
OSX Intel x32
OSX Intel x64
Windows ARM x32 (store apps)
Windows ARM x64 (store apps)
Windows Intel x32 (desktop and store apps)
Windows Intel x64 (desktop and store apps)

Unofficial support:
BSD
MIPS

Comming shortly:
Android
iOS


What compilers do you build with?

The ÜberBuild™ system currently supports a native build of the the system using:

GCC (on unix like systems)
CLANG (on unix like systems)
Microsoft Visual Studio 2010
Microsoft Visual Studio 2013
Microsoft Visual Studio 2015
Microsoft Visual Studio 2017

Comming shortly:

MinGW
C++Builder

We also provide link support for:

Delphi
Free Pascal
Lazarus


What library types does Über build™?

.a and .so (Linux)

.a, .so, and .bundle (OSX)

.lib and .dll (Windows)


What 3rd party open source does ÜberPDF use?

ZLib

LibPNG

LibJPEG

QPDF

FreeType (coming shortly)

Cairo (coming shortly)


Help! ÜberBuild does not!

Please let us know!

Best guess: Are you running Windows? Did you update Windows? DOT NET updates too?

ÜberBuild simply calls NMAKE (or MAKE on Unix like systems) via standard shell scripting. If it does not succeed, most likely, something is wrong (or out of date) with your development setup.

We successfully test building on 47 different combinations of Visual Studio on Windows (really - it is true).

We test using a clean copies of all operating systems, update them, and install the basic development tool package.

Windows: 7, 8, 10, both 32 and 64 bit versions with Visual Studio 2010, 2013, 2015, 2017 (and some testing using unsupported Windows XP and Vista versions with old SDK/DDK compilers).

OSX: 10.x with Xcode command line tools.

Linux: Ubuntu 14.04 and 16.04 (and others).

In short, we build here just fine on a clean, updated OS.

Know that we are very interested in good bug reports. If you receive an error that is not in English, please translate it and then send both the translated and un-translated error.

Also, please be reasonable in your development expectations. We cannot provide much assistance in helping to patch-up old unsupported development environments.


What are the known issues?

Windows 7: The ÜberBuild™ system may experience issues under Windows 7 (perhaps other older versions of Windows) using the some Microsoft Visual Studio versions if you have not updated Windows recently. Apparently, there are some old versions of the runtime libraries floating around with some flaws. In short, update your OS, and as a last resort, remove and re-install Visual Studio. We are not yet positive, however, we believe this may be remedied by applying somewhat recent DOT NET updates.

Windows XP: System build support (not link support) currently requires a Microsoft C/C++ compiler that can work with modern header files such as stdint.h. In addition, you may need the missing Windows choice.exe system file that Microsoft left out of XP (and Microsoft no longer allows customers to download after XP support ended). Our ChoiceCmd.zip contains a limited knockoff (with source) that works with the ÜberBuild™ system (add it to your system path). Our choice.exe will be included as a default to use in the next version of UberBuild™.


I do not want to build ÜberPDF™! Got any pre-compiled binaries?

We will be releasing a reference build shortly, containing complete binaries and build logs of the entire ÜberPDF™ system built for every platform we support.


This is too complex! Got a installer for Delphi and C++Builder?

We plan to release a version with drop in IDE components after we release Gx Math & Graphics™.


When will the FreeType and Cairo plug-ins, and native MinGW, C++Builder plug-ins be released?

Quickly. I am mostly waiting for the dust to settle from the initial release to see how that goes before adding these new layers.


When will the ÜberPDF-Utils™, and GX Math & Graphics™, be released?

ASAP. I am just one guy, and there is a mountain of code (over 1.5 million lines) to be released.


Can you hurry up and post more documention?

This a free open source project. I am getting there as fast as I can.

All the functions for the PDF-SDK objects work the same way, so if you understand one, you understand them all.

In the mean time, see the examples section (we are available for assistance as well).


How do I link ÜberPDF™ with my application?

1) Decide if you are going to static link to the ÜberPDF™ lib files, dynamically static link (using a shared library import), or runtime dynamic link to ÜberPDF™. If you are dynamic runtime linking, your application will need to supply the path to the ÜberPDF™ .dll, .so, or .bundle library file to laod at runtime.

2) Add the correct include path for the platform and compiler you wish to use.

Example: uber/uberbaselibs/uberpdfsdk/include/wintel32/msvc

3) Add the correct library path for the platform, compiler, and runtime library you wish to use.

Example: uber/uberbaselibs/uberpdfsdk/lib/wintel32/msvc/libmd

4) Make the proper DEFINE to let the UberPDF™ know what platform and compiler you are using.

This define is made in the following coded form:

UBER_NativeBuildPlatform_NativeCompiler_PlatformYouAreBuildingFor

Example 1:
You are building under Win32, using the MSVC compiler, building for Win32:
Define: UBER_WINTEL32_MSVC_WINTEL32

Example 2:
You are building under Win32, using the MSVC compiler, building for Win64:
Define: UBER_WINTEL32_MSVC_WINTEL64

Example 3:
You are building under OSX64, using the GCC compiler (yes, CLANG), building for OSX32:
Define: UBER_MACTEL64_GCC_MACTEL32

Currently, the following defines are supported:

UBER_LINARM32_GCC_LINARM32
UBER_LINARM64_GCC_LINARM64
UBER_LINTEL32_GCC_LINTEL32
UBER_LINTEL64_GCC_LINTEL64
UBER_MACTEL64_GCC_MACTEL64
UBER_MACTEL64_GCC_MACTEL32
UBER_WINTEL32_MSVC_WINTEL32
UBER_WINTEL64_MSVC_WINTEL64
UBER_WINTEL32_MSVC_WINTEL64
UBER_WINTEL32_MSVC_WINARMSTORE32
UBER_WINTEL32_MSVC_WINTELSTORE32
UBER_WINTEL32_MSVC_WINTELSTORE64


The UBER_NativeBuildPlatform_XXX defines seem goofy. Can you remove them?

Sorry, we need them for our internal builds (see UberBuild history FAQ).

It's open source! Please feel free to use search and replace (:


What is the test doing?

1) Constructs a new PDF document from scratch.

2) Constructs a fancy PDF page with text and graphics from scratch.

3) Loads the entire PDF Reference manual (756 pages) and imports 3 pages to the new document.

4) Loads the entire PostScript® Tutorial and Cookbook (BlueBook - 242 Pages) and imports 3 pages to the new document.

5) Loads the entire PostScript® Language Program Design (GreenBook - 228 Pages) and imports 3 pages to the new document.

6) Loads the entire PostScript® Language Reference Manual (RedBook - 912 Pages) and imports 3 pages to the new document.

7) Saves out the 13 pages to a new document (optimized).

8) Completely disassembles the 13 pages to the lowest possible level and dumps the complete debug information for each object (neatly formatted) producing an additional 546 pages of debug information all while providing complete error checking in the code.

9) Saves out the 559 pages (with debug info) to a second (optimized) PDF with AES Encryption (and PDF protections) with both user and owner rights and passwords (foo, and foobar)


What is the password for the "*-out-2.pdf" files that get created during the build test?

PDF user password: foo

PDF owner password: foobar


Why are the JPEG functions deprecated in the SDK and moving to PDF-Utils?

For the public release of the SDK, we want to keep the weight down, and not burden the SDK library with a ton of specific support functions.

Much code was moved to PDF-Utils before the initial public release of the SDK, however, removing the JPEG functions would have significantly delayed our launch.


Where are the Microsoft Store application examples?

Microsoft Store applications require code signing certs, and at release time, I was not fully convinced that the Visual Studio example project did not contain information that should not be distributed to the public, so I left it out at the last moment.

Our standard "C/C++" build test code is fully complaint with use in a Microsoft Store application (it is the exact code we drop in to the Visual Studio store project).

Stay tuned to our examples page for an update.


Is the ÜberPDF-SDK™ a wrapper around QPDF?

Indeed it is!

PDF object manipulation, security, and encryption should not be taken lightly. Do you really want to rely on un-vetted homegrown code?

Most all great PDF SDK's wrap QPDF. Take a look for yourself.

They all wrap something. But what do they wrap (and not)?

PDF SDK's fall into two flavors: "commerical grade" and "homegrown".

QPDF is a commercial grade library with a long solid history (it is included in the heart of most Linux distributions).

We are long time supporters of Jay Berkenbilt's most excellent QPDF project (and we are significant contributors as well).

We used to "roll our own", but we realized long ago, QPDF is simply the best way to go.

We invite you to examine the source code of the PDF libraries available, and make the same decision.

PDF is a highly exploitable format. We take this threat very seriously, and encourage you to do the same.


Good PDF SDK's sell for lot, and often demand royalties! Why did you open source ÜberPDF-SDK™?

Have you ever read the license agreement from your PDF SDK? My lawyer read one from a "Royalty Free" SDK, and the non compete clause basically stated you could not develop a retail product with it. Server use? oh my!

You bought the source, but can you build all the source? One popular SDK sells a pricey source code edition. It comes with pre-compiled 3rd party libs and objs (binary blobs) it links to. Pascal cannot compile the C source, and you may quickly get stuck with a SDK that links to old, out of date library code that gets flagged as exploitable.

What did they build those binary blobs with? Should you invest into that?

Sure, you can roll up your sleeves, go chase down the latest source, and try to piece together a total build. Good luck with that.

There is a lot to be said for "100% built from fresh source". If libPNG gets an exploit (for example), the fix can be quickly implemented.

PDF is a highly exploitable format that deals in security and encryption.

PDF is simply not an area to be trusting in "homegrown code and un-vetted binary blobs".

ÜberPDF-SDK™ was released as open source because I have lost faith in close source SDK's. It's a breath of fresh air (and the future).

If you agree, please support the effort via contribution of code, helping others, or financial contribution.


What is the history of ÜberBuild™, ÜberPDF™ and Gx Math & Graphics™?

Joe C. Hecht has been writing commercial graphic engines and drivers since 1985, with an emphasis on PostScript® and PDF. His works include many commercial products, animation engines (used by Disney and Warner Brothers), and print drivers.

ÜberPDF-SDK™, ÜberPDF-Utils™, and Gx Math & Graphics™ is a gathering of choice source code (over 1.5 million lines) from the past three decades to be released as open source libraries.

ÜberBuild™ is a very old, in-house script engine designed to gather, build, link, and test the code from a large number of libraries, for a large number of different projects, across a large number of platforms, using a large number of computers. ÜberBuild™ has been used for many years to do distributed builds and assembly. The open source version of ÜberBuild™ (used to build ÜberPDF™ et all) was sightly trimmed down and hacked for public consumption. Simply put, we realized that building and linking all the libraries we plan to use was probably beyond the means (or patience) of the average coder, so we hacked ÜberBuild™ in an attempt to provide that service.


"We live by example"? What does that mean?

We make our living by writing example code. Need some good custom code? Email the ÜberDude - Joe C. Hecht



Back to home...



Contact ÜberPDF™.org

DMCA (Digital Millennium Copyright Act) Contact Information

Valid HTML 4.0!

Copyright © 2018 by CODE4SALE, LLC - All rights reserved.

GX Math & Graphics™ is a trademark of Joe C. Hecht
ÜberBuild™, ÜberPDF™, ÜberPDF-SDK™, ÜberPDF-Utils™, and ÜberDude™ are trademarks of Code4Sale, LLC.
PostScript® and Display PostScript® are registered trademarks of Adobe Systems Incorporated
Other product names, trademarks, and servicemarks mentioned are owned by their respective owners.

Terms and Conditions - Use of this site, code, submissions, ideas, suggestions, products, downloads, and payments are expressly at your own risk.

Privacy - This is a cookie free, script free, pop over free, and hot link free site!
We collect no information other than web server logs, and will not share unless required by law.

Last Modified 2018-01-14 06:00 U.T.C.