jeremias    2003/03/15 08:54:26

  Modified:    src/java/org/apache/fop/pdf PDFDocument.java
  Log:
  Make PDFDocument as top-level class of the PDF library LogEnabled. (Reason: It 
accesses TTFFile which is LogEnabled, so there must be some way to pass a logger. This 
will be revisited when Avalonization is underway.)
  Proper resolving of LazyFonts.
  Add helper method to apply encryption if it's enabled.
  
  Revision  Changes    Path
  1.3       +37 -10    xml-fop/src/java/org/apache/fop/pdf/PDFDocument.java
  
  Index: PDFDocument.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/pdf/PDFDocument.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PDFDocument.java  13 Mar 2003 16:46:05 -0000      1.2
  +++ PDFDocument.java  15 Mar 2003 16:54:26 -0000      1.3
  @@ -52,8 +52,10 @@
   
   import org.apache.fop.util.StreamUtilities;
   
  +import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.fop.fonts.CIDFont;
   import org.apache.fop.fonts.CustomFont;
  +import org.apache.fop.fonts.Font;
   import org.apache.fop.fonts.FontDescriptor;
   import org.apache.fop.fonts.FontMetrics;
   import org.apache.fop.fonts.FontType;
  @@ -97,7 +99,8 @@
    * the object list; enhanced trailer output; cleanups.
    *
    */
  -public class PDFDocument {
  +public class PDFDocument extends AbstractLogEnabled {
  +    
       private static final Integer LOCATION_PLACEHOLDER = new Integer(0);
       /**
        * the version of PDF supported which is 1.4
  @@ -304,6 +307,16 @@
       }
   
       /**
  +     * Apply the encryption filter to a PDFStream if encryption is enabled.
  +     * @param stream PDFStream to encrypt
  +     */
  +    public void applyEncryption(PDFStream stream) {
  +        if (isEncryptionActive()) {
  +            this.encryption.applyFilter(stream);
  +        }
  +    }
  +
  +    /**
        * Enables PDF encryption.
        * @param params The encryption parameters for the pdf file
        */
  @@ -313,7 +326,7 @@
               /[EMAIL PROTECTED] this cast is ugly. PDFObject should be transformed 
to an interface. */
               addTrailerObject((PDFObject)this.encryption);
           } else {
  -            System.out.println("PDF encryption is unavailable. PDF will be "
  +            getLogger().warn("PDF encryption is unavailable. PDF will be "
                   + "generated without encryption.");
           }
       }
  @@ -1308,13 +1321,19 @@
               throw new IllegalArgumentException("Trying to embed unsupported font 
type: "
                                                   + desc.getFontType());
           } 
  -        if (!(desc instanceof CustomFont)) {
  +        
  +        Font tempFont;
  +        if (desc instanceof LazyFont) {
  +            tempFont = ((LazyFont)desc).getRealFont();
  +        } else {
  +            tempFont = (Font)desc;
  +        }
  +        if (!(tempFont instanceof CustomFont)) {
               throw new IllegalArgumentException(
                         "FontDescriptor must be instance of CustomFont, but is a "
                          + desc.getClass().getName());
           }
  -        
  -        CustomFont font = (CustomFont)desc;
  +        CustomFont font = (CustomFont)tempFont;
           
           InputStream in = null;
           try {
  @@ -1323,8 +1342,9 @@
                   try {
                       in = resolveURI(font.getEmbedFileName());
                   } catch (Exception e) {
  -                    System.out.println("Failed to embed fontfile: "
  -                                       + font.getEmbedFileName());
  +                    getLogger().error("Failed to embed fontfile: "
  +                                       + font.getEmbedFileName() 
  +                                       + "(" + e.getMessage() + ")");
                   }
               }
       
  @@ -1334,8 +1354,9 @@
                       in = new java.io.BufferedInputStream(
                               
this.getClass().getResourceAsStream(font.getEmbedResourceName()));
                   } catch (Exception e) {
  -                    System.out.println("Failed to embed fontresource: "
  -                                       + font.getEmbedResourceName());
  +                    getLogger().error("Failed to embed fontresource: "
  +                                       + font.getEmbedResourceName()
  +                                       + "(" + e.getMessage() + ")");
                   }
               }
       
  @@ -1349,6 +1370,7 @@
                           FontFileReader reader = new FontFileReader(in);
   
                           TTFSubSetFile subset = new TTFSubSetFile();
  +                        setupLogger(subset);
           
                           byte[] subsetFont = subset.readFont(reader,
                                                mbfont.getTTCName(), 
mbfont.getUsedGlyphs());
  @@ -1367,7 +1389,12 @@
                           ((PDFTTFStream)embeddedFont).setData(file, file.length);
                       }
                       embeddedFont.addFilter("flate");
  -                    embeddedFont.addFilter("ascii-85");
  +                    if (isEncryptionActive()) {
  +                        this.encryption.applyFilter(embeddedFont);
  +                    } else {
  +                        embeddedFont.addFilter("ascii-85");
  +                    }
  +                    
                       return embeddedFont;
                   } finally {
                       in.close();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to