Hi,

> However, it is my personal experience that you can easily parallelize
certain tasks calling pdfbox library methods using a miminal amount of care
and design in the way you invoke and synchronize the threads.


I have now changed my code that the font is stored in a ByteArrayInputStream (So he does not need to be loaded every time.).
Then a separate PDFont is created for each task.

   private static ByteArrayFileInputStream libertine_R = null;

public static PDFont getLibertine_R(final PDDocument document) throws IOException {
      if (libertine_R == null) {
         synchronized (FontLibertine.class) {
            if (libertine_R == null) {
               libertine_R = new ByteArrayFileInputStream(

FontLibertine.class.getResourceAsStream("ttf/LinLibertine_Rah.ttf"));
            }
         }
      }
      PDFont font;
      synchronized (libertine_R) {
         libertine_R.reset();
         font = PDTrueTypeFont.loadTTF(document, libertine_R);
      }
      return font;
   }

The creation of PDFs is now 40 percent faster.

    - Which framework do you use for your multi-threaded approach?

ThreadPoolExecutor and LinkedBlockingQueue<Runnable>

With the above solution I can work and create hundreds of PDFs in multi threads.

Thank you!
By
Michael


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

Reply via email to