Thanks for the feedback!

Tilman

Am 26.03.2018 um 14:31 schrieb Matt Pryor:
Hi Tilman

Have tested the changes in the snapshot jar on OS/400 and seems to work
well!

Thank you!

Matt

On 24 March 2018 at 22:22, Matt Pryor <[email protected]>
wrote:

Excellent thanks Tilman & team.

~Matt

On 24 March 2018 at 21:55, Tilman Hausherr <[email protected]> wrote:

Am 24.03.2018 um 19:37 schrieb Matt Pryor:

Hi Tillman

Okay, sure I'd be happy to help test.

Below is what I've written for a new class OS400FontDirFinder, although I
haven't had a chance to test it on our AS400 to double check if the files
out of /QIBM can be read like normal files or if I need to use the JT400
toolkit to access the files (as is the case with some folders), which
might
complicate things. Hopefully I'll test on Monday and get back to you.

Issue created:
https://issues.apache.org/jira/browse/PDFBOX-4165

Snapshot available:
https://repository.apache.org/content/groups/snapshots/org/a
pache/pdfbox/pdfbox-app/2.0.10-SNAPSHOT/

Tilman




package org.apache.fontbox.util.autodetect;

public class OS400FontDirFinder extends NativeFontDirFinder {

public OS400FontDirFinder() {
// TODO Auto-generated constructor stub
}

@Override
protected String[] getSearchableDirectories() {
            return new String[] { System.getProperty("user.home") +
"/.fonts", // user
                  "/QIBM/ProdData/OS400/Fonts"
            };
}

}

And this was my change to determineDirFinder() in FontFileFinder:

      private FontDirFinder determineDirFinder()
      {
          final String osName = System.getProperty("os.name");
          if (osName.startsWith("Windows"))
          {
              return new WindowsFontDirFinder();
          }
          else
          {
              if (osName.startsWith("Mac"))
              {
                  return new MacFontDirFinder();
              }
              else if (osName.startsWith("OS/400")) {
              return new OS400FontDirFinder();
              } else
              {
                  return new UnixFontDirFinder();
              }
          }
      }

On 23 March 2018 at 19:35, Tilman Hausherr <[email protected]>
wrote:

Am 23.03.2018 um 18:07 schrieb Matt Pryor:
Hi again Tillman
Believe I sorted this by copying the AS400 fonts folder into
System.getProperty("user.home")/.fonts

If I wanted to provide an OS400 implementation of NativeFontDirFinder
to
look in the right place, and modify FontFileFinder to use it, what's
the
best way of doing it?

Either modify directly by creating an OS400FontDirFinder that is
assigned
in FontFileFinder, or assign your own fontmapper to FontMappers.set().
(this is somewhat complicated, so I suggest you use the workaround you
mentioned, and let us implement something for OS/400 for version 2.0.10
and
higher).

If you're willing to test, I'll create an issue.

Tilman






Thanks for your help
Matt




On 23 March 2018 at 16:11, Matt Pryor <pryor@international-presence.
com>
wrote:

Thanks Tillman, none of those folders exist, and after a little
research

it seems that there are supposed to be true-type fonts in this folder:

/QIBM/ProdData/OS400/Fonts/TTFonts/

Although we don't have any, possibly because it's an optional extra
which
we haven't installed yet.

Are truetype fonts what you look for?

The os.name system property is "OS/400".

Unable to find the .pdfbox.cache file at present, not sure where it's
being written to.

Thanks again for your help, much appreciated.

Matt






On 22 March 2018 at 20:24, Tilman Hausherr <[email protected]>
wrote:

Hello Matt,

Your attachments don't go through. But what I can tell you is that
1.8
had many errors in rendering, so the many differences are usually
not a
bug, but an improvement.

The case you describe ("but it looks nothing like Courier") could be
because of missing fonts on your system so the "Liberation Sans"
fallback
is used. Try to have Courier, Arial/Helvetica, Times, Symbol and Zapf
Dingats in your font directory.
Another possibility is that fonts are not found. Please post the
.pdfbox.cache from the user directory. Does this file have all the
fonts on
your system? If not, please tell what directories to search.

To find out more, have a look at
\fontbox\src\main\java\org\apache\fontbox\util\autodetect\
UnixFontDirFinder.java
and the other "finders" in the package.

It has

           return new String[] { System.getProperty("user.home") +
"/.fonts", // user
                   "/usr/local/fonts", // local
                   "/usr/local/share/fonts", // local shared
                   "/usr/share/fonts", // system
                   "/usr/X11R6/lib/X11/fonts" // X
           };

If that one isn't enough, please tell where the fonts are, and tell
also
what System.getProperty("os.name") returns.

Tilman


Am 22.03.2018 um 20:24 schrieb Matt Pryor:

Hello

I'm resending this from the address I'm subscribed with, so hope it
doesn't appear twice.

We use PDFBox in our software which runs on IBM system i / AS400s to
convert PDF files to TIFFs. We have many users who are on older
JVMs,
such
as 1.5, so have to maintain code for them as well as people on newer
JVMs.

We recently swapped over to PDFBox 2.0.8 for users who are on JRE
1.6
or
above and have had complaints from customers about the fonts
changing.
The
issue does not occur when I test in a Windows environment but does
on
the
iSeries JVM.

I have attached two sample TIFF files, the first is generated with
PDFBox 1.8 and the second with PDFBox 2.0.8 (named accordingly)

I put logging output in the SetFontAndSize class and confirm that
it's
using "Courier-Bold" in 2.0.8, but it looks nothing like Courier.

This is the code to create a BufferedImage from the PDF pages, which
then gets inserted into the TIFF file

PDFBox 1.8 code:
==============

       int imageType = BufferedImage.TYPE_INT_RGB;

int resolution = (int) PRINTER_RESOLUTION;

PDDocument document = PDDocument.load( pdf );

List<PDPage> pages =

(List <PDPage>) document.getDocumentCatalog().getAllPages();

       int pagesSize = pages.size();

       for (int i = 1 - 1; i < pagesSize; i++) {

PDPage page = pages.get(i);

BufferedImage image = page.convertToImage(imageType, resolution);

….

       }



PDFBox 2.0.8 code:
================

       PDDocument document = PDDocument.load( pdf );
       PDPageTree pagetree = document.getDocumentCatalog().
getPages();
       int pagesSize = pagetree.getCount();
       PDFRenderer pdfRenderer = new PDFRenderer(document);
       for (int i = 1 - 1; i < pagesSize; i++) {
           PDPage page = pagetree.get(i);
BufferedImage image = pdfRenderer.renderImageWithDPI(i, 200,
ImageType.RGB);
           ...
       }

I'm hoping someone might be able to point me in the direction of
what's
going wrong or perhaps give me a better idea about how PDFBox
generates or
gets fonts. I realise the platform that I'm running on is rather
obscure!

Many thanks in advance
--
Matt Pryor

The International Presence Group of Companies

EMAIL:[email protected] <mailto:[email protected]>

URL:www.International-presence.com <http://www.international-pres
ence.com/>


------------------------------------------------------------
---------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



--
Matt Pryor

The International Presence Group of Companies

EMAIL: [email protected]

URL: www.International-presence.com




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



--
Matt Pryor

The International Presence Group of Companies

EMAIL: [email protected]

URL: www.International-presence.com






---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to