3-Heights™ PDF Toolbox – composant développement pour le traitement des PDF

3-Heights™ PDF Toolbox est un composant hautement performant et indépendant de la plate-forme pour créer et assembler des documents PDF/A conformes.

Assembler

 Assembler des documents PDF à partir de sources diverses

Enrichir

 Enrichir des documents PDF avec des informations supplémentaires, comme estampillage

Créer

 Créer de nouvelles pages avec n’importe quel contenu et assembler avec vos fichier PDF

PDF Toolbox - Manipulation PDF avancée - Modifiez et composez vos documents PDF

PDF toolbox - fonctions

Assemblage de documents

  • Copie de pages de documents PDF existants
  • Copie d’annotations / de commentaires, de champs de formulaire, de liens, d’informations relatives à la structure, de signets, d’étiquettes, de marqueurs de saut
  • Dissolution d’annotations, de champs de formulaire, de signatures
  • Optimisation des ressources
  • Découpe et rotation des pages
  • Libre composition de contenus, superpositions, sous-couches, cachets, transformations
  • Cryptage: Mot de passe utilisateur, Mot de passe propriétaire, Permissions
  • Copier et modifier les métadonnées d'un document
  • Copier et modifier les métadonnées de page

Génération de contenu

  • Création de nouveaux contenus PDF en partant de zéro
  • Ajout de contenu à des pages existantes

Coleurs

  • RGB, CMYK ou nuances de gris
  • Profils de couleurs ICC
  • Transparence: Mode Alpha et Blend 

Paths

  • Lignes simples et multi-segments
  • Rectangle, Cercle, Courbes de Bézier, Ellipse, Arc, Tarte
  • Remplissage, dessin, découpage et combinaisons de ceux-ci
  • Largeur de ligne, fin de ligne (capuchon), raccord de ligne (jonction), tableau de bord (tableau de bord, phase du tableau de bord) et limite d'onglet (avec limite)
  • Règles interne : Nonzero winding rule, Even/odd rule

Texte

  • Taille de police caractères, espacement des caractères, espacement des mots
  • Mise à l'échelle horizontale, en tête, leading, en exposant
  • Permet une mise en page simple du texte
  • Polices caractères PDF standard, polices caractères installées
  • Paramètres de police : Italic angle, Ascent, Descent, Cap height, Character width
  • Caractères Unicode
  • Course du texte: Largeur de ligne, jointure de ligne et tirets
  • Remplir et recadrer du texte, texte invisible
  • Utiliser le texte comme chemin de détourage

Images

  • Bi-level: CCITT G3, G3 2D et G4, Flate, LZW, Packbits, non compressé
  • 4 bits et 8 nuances de gris: Flat, LZW, Packbits, JPEG et JPEG-6 (8 bits seulement), non compressé
  • RGB: Flate, JPEG et JPEG-6, LZW, Packbits, non compressé

Transformations

  • Traduction
  • Mise à l'échelle
  • Déformer (horizontale, verticale)
  • Rotation

Modification du contenu

  • Copier sélectivement des éléments de contenu (sans markup)
  • Transformation géométrique d'éléments de contenu

Extraction

  • Document et pages
    • Saisie d'information de pièce : Titre, Auteur, Auteur, Sujet, Mots-clés, Créateur, Producteur, Date de création, Date de modification
    • Métadonnées du document XMP
    • Boîtes de délimitation des pages : Media box, Crop box, Bleed box, Trim box, Art box
    • Page Métadonnées XMP
  • Contenu
    • Éléments de contenu des pages et éléments de groupe, y compris les attributs suivants
      • Boîte de délimitation (Bounding box)
      • Transformation affine
    • Types d'éléments extraits :
      • Élément de groupe
      • Élément figuratif
        • Largeur et hauteur en pixels
        • Bits par composante de couleur
        • Espace des couleurs
    • Elément de masque d'image
      • Largeur et hauteur en pixels
      • Couleur pour remplir le masque
    • Élément de chemin
      • Boîte d'alignement
      • Paramètres de remplissage, y compris peinture et règle de remplissage
      • Paramètres de ligne, y compris la couleur et le style de la ligne
    • Élément d'ombrage
    • Élément de texte
      • Fragments de texte
        • Boîte de délimitation (Bounding box)
        • Transformation affine
        • Unicode String
        • Paramètres de remplissage, y compris peinture et règle de remplissage
        • Paramètres de ligne, y compris la couleur et le style de la ligne
  • Annotations
    • Champs de signature: Nom, Lieu, Motif, Coordonnées, Date, Visibilité

Conformité

  • ISO 32000-1 (PDF 1.7)
  • ISO 32000-2 (PDF 2.0)
  • ISO 19005-1 (PDF/A-1)
  • ISO 19005-2 (PDF/A-2)
  • ISO 19005-3 (PDF/A-3)

Formats supportée

Formats PDF supportés

  • PDF 1.0 à 1.7
  • PDF 2.0
  • PDF/A-1, PDF/A-2, PDF/A-3

Formats d'images supportés

  • BMP
  • DIB
  • JPEG
  • JPEG2000
  • JBIG2
  • PNG
  • GIF
  • TIFF

Formats de polices supportés

  • Type1
  • TrueType
  • OpenType
  • OpenType (CFF)

Domaines d’application - éditer et composer des documents PDF

Création d’un PDF

Création programmatique de n’importe quels documents PDF/A, dont les contenus peuvent provenir de sources quelconques, comme par exemple une banque de données ou un formulaire de site Web.

Personnalisation

Les documents PDF sont utilisés pour la distribution de livres numériques, pour la réalisation de factures, contrats et conditions notamment dans les propositions d’assurance. Ils présentent tous point commun: le destinataire doit compléter le document avec des informations spécifiques.

Etablissement automatisé de rapports

De grandes quantités d’informations sont stockées dans les banques de données et systèmes DMS. Moyennant la PDF Prep Tool Suite, il est possible de recevoir ces informations et d’en faire des documents PDF distribuables et standardisés, ce qui permet leur distribution dans des infrastructures dotées de technologies et de systèmes d’exploitation les plus divers.

Autres domaines d’application

  • Création de documents personnalisés tels que citations, politiques, publipostage, etc.
  • Production de masse des factures, rapports, etc.
  • Création de fichiers PDF « on-the-fly » dans les applications de serveur Web
  • "Enregistrer au format PDF/A" fonction dans les programmes d'application
  • Importer des images et du texte dans documents PDF/A

Add stamp to PDF

Add a transparent stamp text onto each page of a PDF document. Optionally specify the color and the opacity of the stamp.

l'exemple C# :
// Open input document
using (Stream inStream = new FileStream(inPath, FileMode.Open, FileAccess.Read))
using (Document inDoc = Document.Open(inStream, null))

// Create output document
using (Stream outStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite))
using (Document outDoc = Document.Create(outStream, Conformance.Unknown, null))
using (Font font = outDoc.CreateSystemFont("Arial", "Italic", true))
{
    // Set output intent
    if (inDoc.OutputIntent != null)
        using (ColorSpace outputIntent = outDoc.CopyColorSpace(inDoc.OutputIntent))
            outDoc.OutputIntent = outputIntent;

    // Copy metadata
    using (Metadata metadata = outDoc.CopyMetadata(inDoc.Metadata))
        outDoc.Metadata = metadata;

    // Set copy options
    CopyOption copyOptions = CopyOption.CopyLinks | CopyOption.CopyAnnotations | 
        CopyOption.CopyFormFields | CopyOption.CopyOutlines | CopyOption.CopyLogicalStructure;

    // Get the device color space
    using (ColorSpace colorspace = outDoc.CreateDeviceColorSpace(DeviceColorSpaceType.RGB))
    // Create paint object with the choosen RGB color
    using (paint = outDoc.CreateAlphaPaint(colorspace, alpha, 1.0, 0.0, 0.0))
    {
        // Loop through all pages of input
        foreach (Page inPage in inDoc.Pages)
        {
            // Copy page from input to output
            using (Page outPage = outDoc.CopyPage(inPage, copyOptions))
            {
                // Add text to page
                AddStamp(outDoc, outPage, stampString, font, 50);

                // Add page to document
                outDoc.Pages.Add(outPage);
            }
        }
    }
}
private static void AddStamp(Document outputDoc, Page outPage, string stampString, 
    Font font, double fontSize)
{
    // Create content generator and text object
    using (ContentGenerator gen = new ContentGenerator(outPage.Content, false))
    using (Text text = outputDoc.CreateText())
    {
        // Create text generator
        using (TextGenerator textgenerator = new TextGenerator(text, font, fontSize, null))
        {
            // Calculate point and angle of rotation
            Point rotationCenter = new Point
            {
                X = outPage.Size.Width / 2.0,
                Y = outPage.Size.Height / 2.0
            };
            double rotationAngle = Math.Atan2(outPage.Size.Height,
                outPage.Size.Width) / Math.PI * 180.0;

            // Rotate textinput around the calculated position
            Transformation trans = new Transformation();
            trans.RotateAround(rotationAngle, rotationCenter);
            gen.Transform(trans);

            // Calculate position
            Point position = new Point
            {
                X = (outPage.Size.Width - textgenerator.GetWidth(stampString)) / 2.0,
                Y = (outPage.Size.Height - font.Ascent * fontSize) / 2.0
            };

            // Move to position
            textgenerator.MoveTo(position);
            // Set text rendering 
            textgenerator.SetRendering(paint, null, false);
            // Add given stamp string
            textgenerator.ShowLine(stampString);
        }
        // Paint the positioned text
        gen.PaintText(text);
    }
}
l'exemple Java :
// Open input document
inStream = new FileStream(inPath, "r");
inDoc = Document.open(inStream, null);

// Create output document
outStream = new FileStream(outPath, "rw");
outStream.setLength(0); 
outDoc = Document.create(outStream, Conformance.UNKNOWN, null);

// Create embedded font in output document
Font font = outDoc.createSystemFont("Arial", "Italic", true);

// Set output intent
if (inDoc.getOutputIntent() != null) 
    outDoc.setOutputIntent(outDoc.copyColorSpace(inDoc.getOutputIntent()));

// Copy metadata
Metadata metadata =  outDoc.copyMetadata(inDoc.getMetadata());
outDoc.setMetadata(metadata);

// Set copy options
EnumSet<CopyOption> copyOptions = EnumSet.of(CopyOption.COPY_LINKS, CopyOption.COPY_ANNOTATIONS,
        CopyOption.COPY_FORM_FIELDS, CopyOption.COPY_OUTLINES, CopyOption.COPY_LOGIGAL_STRUCTURE);

// Get the device color space
ColorSpace colorSpace = outDoc.createDeviceColorSpace(DeviceColorSpaceType.RGB);

// Choose the RGB color value
double[] color = {1.0, 0.0, 0.0};

// Create paint object
paint = outDoc.createAlphaPaint(colorSpace, alpha, color);

// Loop throw all pages of input
for (Page inPage : inDoc.getPages())
{
    // Copy page from input to output
    Page outPage = outDoc.copyPage(inPage, copyOptions);

    // Add text to page 
    addStamp(outDoc, outPage, stampString, font, 50);

    // Add page to document
    outDoc.getPages().add(outPage);

    //Cleanup
    outPage.close();
    inPage.close();
}
private static void addStamp(Document outputDoc, Page outPage, String stampString, 
Font font, double fontSize) throws ErrorCodeException 
{

    ContentGenerator generator = null;

    try 
    {
        // Create content generator 
        generator = new ContentGenerator(outPage.getContent(), false);

        // Create text object
        Text text = outputDoc.createText();

        // Create text generator
        TextGenerator textgenerator = new TextGenerator(text, font, fontSize, null);

        // Calculate point and angle of rotation
        Point rotationCenter = new Point(
                outPage.getSize().width / 2.0,
                outPage.getSize().height / 2.0
                );

        // Calculate rotation angle
        double rotationAngle = Math.atan2(outPage.getSize().height, 
            outPage.getSize().width) / Math.PI * 180.0;

        // Rotate text input around the calculated position
        Transformation trans = new Transformation();
        trans.rotateAround(rotationAngle, rotationCenter);
        generator.transform(trans);

        // Calculate position 
        Point position = new Point(
                (outPage.getSize().width - textgenerator.getWidth(stampString)) / 2.0,
                (outPage.getSize().height - font.getAscent() * fontSize) / 2.0
                );

        // Move to position 
        textgenerator.moveTo(position);

        // Set text rendering 
        textgenerator.setRendering(paint, null, false);

        // Add given stamp string 
        textgenerator.showLine(stampString);
        textgenerator.close(); 

        // Paint the positioned text
        generator.paintText(text);
    } 
    finally
    {
        // Close content generator
        if (generator != null)
            generator.close();
    }
}

Gagner du temps grâce à des services PDF basés sur le cloud

De plus, au fur et à mesure que le nombre d’utilisateurs augmentait, de plus en plus de nouvelles fonctionnalités étaient demandées par la communauté, telles que la compression de fichiers PDF ou la conversion de documents Office en PDF.

Smallpdf est un grand de la compression

La taille d’un fichier en pièce jointe à un e-mail peut empêcher l’envoi ou la réception de l’e-mail en raison de limitations techniques. Pour résoudre ce problème, les fondateurs de Smallpdf ont cherché un moyen de réduire la taille de ces fichiers.

PDF Expert blog - the caveats of assembling PDF/A documents

The caveats of assembling PDF/A documents

Assembling PDF documents from various sources is a crucial part of an output management system. And, as the document needs to be archived in most cases, it should conform to the PDF/A standard. Is there a way to assemble a document and accomplish PDF/A conformance in one step?


PDF Expert Blog - embedded fonts and PDF mass printing application

The problem with embedded fonts in PDF mass printing applications

PDF is more and more finding its way into mass printing applications. However, PDF spool files often ask too much from a print engine resulting in aborts or, even worse, incomplete prints which may not be noticed. What is special about PDF mass printing...