PB.Ex PDF (Windows)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

PB.Ex PDF (Windows)

Beitrag von RSBasic »

Hallo,

mit dieser Bibliothek kann man PDF-Dokumente erstellen und öffnen. Außerdem sind weitere Funktionen vorhanden, wie z.B.: Passwortschutz
Zukünftig werden weitere Funktionen hinzugefügt, wie z.B.: Wasserzeichen, Trennen und Zusammenführen von mehreren PDF-Dokumenten, Erstellen von Lesezeichen, Einbinden von Grafiken, Erstellen von Tabellen, Links, Formular-Felder, Anmerkungen, Inkludieren eigener/fremder Schriftarten

Funktionen:
  • CreatePDF()
    • Syntax:

      Code: Alles auswählen

      Result = CreatePDF(ID, @ErrorOutput$)
    • Beschreibung: Erstellt ein leeres PDF-Dokument mit einer leeren Seite im Arbeitsspeicher.
    • Parameter:
      1. ID: Eine eindeutige Nummer für das Dokument. #PB_Any kann verwendet werden, um die Nummer automatisch zu generieren.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich. Falls #PB_Any verwendet wird, dann wird die ID zurückgegeben.
    • Beispielcode:

      Code: Alles auswählen

      EnableExplicit
      
      Global PBEx_PDF
      
      #PBEx_PDF_PageOrientation_Portrait = 0
      #PBEx_PDF_PageOrientation_Landscape = 1
      #PBEx_PDF_PageSize_A0 = 1
      #PBEx_PDF_PageSize_A1 = 2
      #PBEx_PDF_PageSize_A2 = 3
      #PBEx_PDF_PageSize_A3 = 4
      #PBEx_PDF_PageSize_A4 = 5
      #PBEx_PDF_PageSize_A5 = 6
      #PBEx_PDF_PageSize_B0 = 7
      #PBEx_PDF_PageSize_B1 = 8
      #PBEx_PDF_PageSize_B2 = 9
      #PBEx_PDF_PageSize_B3 = 10
      #PBEx_PDF_PageSize_B4 = 11
      #PBEx_PDF_PageSize_B5 = 12
      #PBEx_PDF_PageSize_RA0 = 13
      #PBEx_PDF_PageSize_RA1 = 14
      #PBEx_PDF_PageSize_RA2 = 15
      #PBEx_PDF_PageSize_RA3 = 16
      #PBEx_PDF_PageSize_RA4 = 17
      #PBEx_PDF_PageSize_RA5 = 18
      
      CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
        PBEx_PDF = OpenLibrary(#PB_Any, "PB.Ex_PDF_x86.dll")
      CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64
        PBEx_PDF = OpenLibrary(#PB_Any, "PB.Ex_PDF_x64.dll")
      CompilerEndIf
      
      If PBEx_PDF
        Prototype CreatePDF(ID, ErrorOutput)
        Global CreatePDF.CreatePDF = GetFunction(PBEx_PDF, "CreatePDF")
        Prototype SetPDFTitle(ID, Title.p-Unicode, ErrorOutput)
        Global SetPDFTitle.SetPDFTitle = GetFunction(PBEx_PDF, "SetPDFTitle")
        Prototype SetPDFAuthor(ID, Author.p-Unicode, ErrorOutput)
        Global SetPDFAuthor.SetPDFAuthor = GetFunction(PBEx_PDF, "SetPDFAuthor")
        Prototype SetPDFSubject(ID, Subject.p-Unicode, ErrorOutput)
        Global SetPDFSubject.SetPDFSubject = GetFunction(PBEx_PDF, "SetPDFSubject")
        Prototype SetPDFKeywords(ID, Keywords.p-Unicode, ErrorOutput)
        Global SetPDFKeywords.SetPDFKeywords = GetFunction(PBEx_PDF, "SetPDFKeywords")
        Prototype SetPDFCreator(ID, Creator.p-Unicode, ErrorOutput)
        Global SetPDFCreator.SetPDFCreator = GetFunction(PBEx_PDF, "SetPDFCreator")
        Prototype GetPDFTitle(ID, Output, ErrorOutput)
        Global GetPDFTitle.GetPDFTitle = GetFunction(PBEx_PDF, "GetPDFTitle")
        Prototype GetPDFAuthor(ID, Output, ErrorOutput)
        Global GetPDFAuthor.GetPDFAuthor = GetFunction(PBEx_PDF, "GetPDFAuthor")
        Prototype GetPDFSubject(ID, Output, ErrorOutput)
        Global GetPDFSubject.GetPDFSubject = GetFunction(PBEx_PDF, "GetPDFSubject")
        Prototype GetPDFKeywords(ID, Output, ErrorOutput)
        Global GetPDFKeywords.GetPDFKeywords = GetFunction(PBEx_PDF, "GetPDFKeywords")
        Prototype GetPDFCreator(ID, Output, ErrorOutput)
        Global GetPDFCreator.GetPDFCreator = GetFunction(PBEx_PDF, "GetPDFCreator")
        Prototype AddPDFText(ID, Text.p-Unicode, ErrorOutput)
        Global AddPDFText.AddPDFText = GetFunction(PBEx_PDF, "AddPDFText")
        Prototype SavePDF(ID, Path.p-Unicode, ErrorOutput)
        Global SavePDF.SavePDF = GetFunction(PBEx_PDF, "SavePDF")
        Prototype AddPDFPage(ID, ErrorOutput)
        Global AddPDFPage.AddPDFPage = GetFunction(PBEx_PDF, "AddPDFPage")
        Prototype ClosePDF(ID, ErrorOutput)
        Global ClosePDF.ClosePDF = GetFunction(PBEx_PDF, "ClosePDF")
        Prototype IsPDF(ID, ErrorOutput)
        Global IsPDF.IsPDF = GetFunction(PBEx_PDF, "IsPDF")
        Prototype SetPDFFont(ID, FontName.p-Unicode, FontSize, FontStyle, ErrorOutput)
        Global SetPDFFont.SetPDFFont = GetFunction(PBEx_PDF, "SetPDFFont")
        Prototype ProtectPDF(ID, UserPassword.p-Unicode, OwnerPassword.p-Unicode, PermissionForExtract, PermissionForModification, PermissionForFormFill, PermissionForAnnotation, PermissionForPrint, PermissionForPrintFullQuality, ErrorOutput)
        Global ProtectPDF.ProtectPDF = GetFunction(PBEx_PDF, "ProtectPDF")
        Prototype OpenPDF(ID, Path.p-Unicode, Password.p-Unicode, ErrorOutput)
        Global OpenPDF.OpenPDF = GetFunction(PBEx_PDF, "OpenPDF")
        Prototype GetPDFPageTotal(ID, ErrorOutput)
        Global GetPDFPageTotal.GetPDFPageTotal = GetFunction(PBEx_PDF, "GetPDFPageTotal")
        Prototype SetPDFPageSize(ID, Size, Orientation, ErrorOutput)
        Global SetPDFPageSize.SetPDFPageSize = GetFunction(PBEx_PDF, "SetPDFPageSize")
        Prototype GetPDFPageSize(ID, ErrorOutput)
        Global GetPDFPageSize.GetPDFPageSize = GetFunction(PBEx_PDF, "GetPDFPageSize")
        Prototype GetPDFPageOrientation(ID, ErrorOutput)
        Global GetPDFPageOrientation.GetPDFPageOrientation = GetFunction(PBEx_PDF, "GetPDFPageOrientation")
        Prototype SetPDFPageMargin(ID, Top, Right, Bottom, Left, ErrorOutput)
        Global SetPDFPageMargin.SetPDFPageMargin = GetFunction(PBEx_PDF, "SetPDFPageMargin")
        Prototype SetPDFTextColor(ID, Color, ErrorOutput)
        Global SetPDFTextColor.SetPDFTextColor = GetFunction(PBEx_PDF, "SetPDFTextColor")
        Prototype AddPDFImage(ID, Path.p-Unicode, X, Y, Width, Height, ErrorOutput)
        Global AddPDFImage.AddPDFImage = GetFunction(PBEx_PDF, "AddPDFImage")
        
      EndIf
      
      Define Output$ = Space(1000000)
      Define ErrorOutput$ = ""
      Define MyText$ = ""
      
      MyText$ + "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor." + Chr(13)
      MyText$ + "Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." + Chr(13)
      MyText$ + "Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem." + Chr(13)
      MyText$ + Chr(13)
      MyText$ + "Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus." + Chr(13)
      MyText$ + Chr(13)
      MyText$ + "Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue."
      
      If CreatePDF(1, @ErrorOutput$)
        SetPDFTitle(1, "My title", @ErrorOutput$)
        SetPDFAuthor(1, "RSBasic", @ErrorOutput$)
        SetPDFSubject(1, "My title", @ErrorOutput$)
        SetPDFTitle(1, "My title", @ErrorOutput$)
        SetPDFKeywords(1, "pb, html, cpp, js, asm, vb", @ErrorOutput$)
        SetPDFCreator(1, "RSBasic", @ErrorOutput$)
        
        SetPDFPageSize(1, #PBEx_PDF_PageSize_A4, #PBEx_PDF_PageOrientation_Portrait, @ErrorOutput$)
        SetPDFPageMargin(1, 50, 50, 50, 50, @ErrorOutput$)
        SetPDFFont(1, "Arial", 16, 0, @ErrorOutput$)
        SetPDFTextColor(1, RGBA(0, 0, 0, 255), @ErrorOutput$)
        AddPDFText(1, MyText$, @ErrorOutput$)
        
        AddPDFPage(1, @ErrorOutput$)
        SetPDFPageSize(1, #PBEx_PDF_PageSize_A3, #PBEx_PDF_PageOrientation_Landscape, @ErrorOutput$)
        SetPDFFont(1, "Courier", 20, #PB_Font_Underline | #PB_Font_Italic, @ErrorOutput$)
        SetPDFTextColor(1, RGBA(255, 0, 0, 150), @ErrorOutput$)
        AddPDFText(1, "Hello PureBasic Friends. How are you?", @ErrorOutput$)
        
        SavePDF(1, GetCurrentDirectory() + "MyPDF.pdf", @ErrorOutput$)
        
        ClosePDF(1, @ErrorOutput$)
        
        RunProgram(GetCurrentDirectory() + "MyPDF.pdf")
        
      EndIf
      
      CloseLibrary(PBEx_PDF)
  • OpenPDF()
    • Syntax:

      Code: Alles auswählen

      Result = OpenPDF(ID, Path$, Password$, @ErrorOutput$)
    • Beschreibung: Öffnet ein vorhandenes PDF-Dokument.
    • Parameter:
      1. ID: Eine eindeutige Nummer für das Dokument. #PB_Any kann verwendet werden, um die Nummer automatisch zu generieren.
      2. Path$: Der vollständige Pfad zum PDF-Dokument, welches geöffnet werden soll.
      3. Password$: Wenn das PDF-Dokument geschützt ist, muss das Passwort hier angegeben werden.
      4. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetPDFTitle()
    • Syntax:

      Code: Alles auswählen

      Result = SetPDFTitle(ID, Title$, @ErrorOutput$)
    • Beschreibung: Legt den Titel (Meta-Eigenschaft) fest.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Title$: Titel
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetPDFAuthor()
    • Syntax:

      Code: Alles auswählen

      Result = SetPDFAuthor(ID, Author$, @ErrorOutput$)
    • Beschreibung: Legt den Autor-Namen (Meta-Eigenschaft) fest.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Author$: Name des Autors
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetPDFSubject()
    • Syntax:

      Code: Alles auswählen

      Result = SetPDFSubject(ID, Subject$, @ErrorOutput$)
    • Beschreibung: Legt den Betreff (Meta-Eigenschaft) fest.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Subject$: Betreff
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetPDFKeywords()
    • Syntax:

      Code: Alles auswählen

      Result = SetPDFKeywords(ID, Keywords$, @ErrorOutput$)
    • Beschreibung: Legt die Schlüsselwörter (Meta-Eigenschaft) fest.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Keywords$: Schlüsselwörter können mit Kommata hinzugefügt werden.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetPDFCreator()
    • Syntax:

      Code: Alles auswählen

      Result = SetPDFCreator(ID, Creator$, @ErrorOutput$)
    • Beschreibung: Legt den Ersteller (Meta-Eigenschaft) fest.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Creator$: Der Name des Erstellers dieses PDF-Dokuments.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetPDFTitle()
    • Syntax:

      Code: Alles auswählen

      Result = GetPDFTitle(ID, @Output$, @ErrorOutput$)
    • Beschreibung: Ermittelt den Titel. (Meta-Eigenschaft)
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. @Output$: Der Rückgabewert wird in diese Variable gespeichert.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetPDFAuthor()
    • Syntax:

      Code: Alles auswählen

      Result = GetPDFAuthor(ID, @Output$, @ErrorOutput$)
    • Beschreibung: Ermittelt den Autor. (Meta-Eigenschaft)
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. @Output$: Der Rückgabewert wird in diese Variable gespeichert.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetPDFSubject()
    • Syntax:

      Code: Alles auswählen

      Result = GetPDFSubject(ID, @Output$, @ErrorOutput$)
    • Beschreibung: Ermittelt den Betreff. (Meta-Eigenschaft)
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. @Output$: Der Rückgabewert wird in diese Variable gespeichert.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetPDFKeywords()
    • Syntax:

      Code: Alles auswählen

      Result = GetPDFKeywords(ID, @Output$, @ErrorOutput$)
    • Beschreibung: Ermittelt die Schlüsselwörter. (Meta-Eigenschaft)
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. @Output$: Der Rückgabewert wird in diese Variable gespeichert.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetPDFCreator()
    • Syntax:

      Code: Alles auswählen

      Result = GetPDFCreator(ID, @Output$, @ErrorOutput$)
    • Beschreibung: Ermittelt den Ersteller. (Meta-Eigenschaft)
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. @Output$: Der Rückgabewert wird in diese Variable gespeichert.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • AddPDFText()
    • Syntax:

      Code: Alles auswählen

      Result = AddPDFText(ID, Text$, @ErrorOutput$)
    • Beschreibung: Fügt einen Text auf der aktuellen Seite ein.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Text$: Der einzufügende Text. Zeilenumbrüche mit Chr(13) sind möglich.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • AddPDFImage()
    • Syntax:

      Code: Alles auswählen

      Result = AddPDFImage(ID, Path$, X, Y, Width, Height, @ErrorOutput$)
    • Beschreibung: Fügt ein Bild auf der aktuellen Seite ein.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Path$: Vollständiger Pfad zur Bilddatei.
      3. X: X-Position, in der das Bild eingefügt wird.
      4. Y: Y-Position, in der das Bild eingefügt wird.
      5. Width: Breite des Bildes. Wenn -1 angegeben wird, dann wird die Breite des Bildes proportional ermittelt. Wenn -1 bei Breite und Höhe angegeben wird, dann wird die Originalgröße ermittelt.
      6. Height: Höhe des Bildes. Wenn -1 angegeben wird, dann wird die Breite des Bildes proportional ermittelt. Wenn -1 bei Breite und Höhe angegeben wird, dann wird die Originalgröße ermittelt.
      7. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SavePDF()
    • Syntax:

      Code: Alles auswählen

      Result = SavePDF(ID, Path$, @ErrorOutput$)
    • Beschreibung: Speichert das erstellte oder geöffnete PDF-Dokument mit allen Änderungen.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Path$: Vollständiger Pfad inkl. Dateiname.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • AddPDFPage()
    • Syntax:

      Code: Alles auswählen

      Result = AddPDFPage(ID, @ErrorOutput$)
    • Beschreibung: Fügt eine neue leere Seite hinzu. Texte, die danach hinzugefügt werden, erscheinen nun auf der neuen Seite.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • ClosePDF()
    • Syntax:

      Code: Alles auswählen

      Result = ClosePDF(ID, @ErrorOutput$)
    • Beschreibung: Schließt das erstellte oder geöffnete PDF-Dokument. Ungespeicherte Änderungen gehen verloren und alle Objekte werden freigegeben.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • IsPDF()
    • Syntax:

      Code: Alles auswählen

      Result = IsPDF(ID, @ErrorOutput$)
    • Beschreibung: Überprüft, ob die ID des erstellten oder geöffneten PDF-Dokuments noch gültig ist.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetPDFFont()
    • Syntax:

      Code: Alles auswählen

      Result = SetPDFFont(ID, FontName$, FontSize, FontStyle, @ErrorOutput$)
    • Beschreibung: Legt die Schriftart, Schriftgröße und Schriftformatierung fest. Texte, die danach hinzugefügt werden, erhalten die neue Schrift.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. FontName$: Name der Schriftart
      3. FontSize: Größe der Schrift in Pixel
      4. FontStyle: Folgende Konstanten können verwendet werden:
        • #PB_Font_Bold: Fettschrift
        • #PB_Font_Italic: Kursiv
        • #PB_Font_Underline: Unterstrichen
        • #PB_Font_StrikeOut: Durchgestrichen
      5. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • ProtectPDF()
    • Syntax:

      Code: Alles auswählen

      Result = ProtectPDF(ID, UserPassword$, OwnerPassword$, PermissionForExtract, PermissionForModification, PermissionForFormFill, PermissionForAnnotation, PermissionForPrint, PermissionForPrintFullQuality, @ErrorOutput$)
    • Beschreibung: Damit kann das erstellte oder geöffnete PDF-Dokument mit einem Passwortschutz und mit weiteren Berechtigungen geschützt werden. Der Schutz kann auch wieder aufgehoben werden.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. UserPassword$: Das Password für Normalbenutzer, die auf dieses Dokument zugreifen dürfen.
      3. OwnerPassword$: Das Passwort für den Ersteller. Nur mit diesem Passwort ist das Ändern der Berechtigungen und das Aufheben des Passwortschutzes möglich.
      4. PermissionForExtract: Erlaubt dem Benutzer das Extrahieren der Inhalte aus dem Dokument.
      5. PermissionForModification: Erlaubt dem Benutzer das Ändern des PDF-Dokuments.
      6. PermissionForFormFill: Erlaubt dem Benutzer das Ausfüllen der Formular-Felder.
      7. PermissionForAnnotation: Erlaubt dem Benutzer das Hinzufügen von Anmerkungen innerhalb des Dokuments.
      8. PermissionForPrint: Erlaubt dem Benutzer das Drucken.
      9. PermissionForPrintFullQuality: Erlaubt dem Benutzer das Drucken in hoher Qualität.
      10. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetPDFPageTotal()
    • Syntax:

      Code: Alles auswählen

      Result = GetPDFPageTotal(ID, @ErrorOutput$)
    • Beschreibung: Ermittelt die Anzahl der Seiten.
    • Parameter:
      1. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert: Anzahl der Seiten
  • SetPDFPageSize()
    • Syntax:

      Code: Alles auswählen

      Result = SetPDFPageSize(ID, Size, Orientation, @ErrorOutput$)
    • Beschreibung: Legt die Seitengröße und die Orientierung fest.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Size: Folgende Papierformate können verwendet werden:
        • #PBEx_PDF_PageSize_A0
        • #PBEx_PDF_PageSize_A1
        • #PBEx_PDF_PageSize_A2
        • #PBEx_PDF_PageSize_A3
        • #PBEx_PDF_PageSize_A4
        • #PBEx_PDF_PageSize_A5
        • #PBEx_PDF_PageSize_B0
        • #PBEx_PDF_PageSize_B1
        • #PBEx_PDF_PageSize_B2
        • #PBEx_PDF_PageSize_B3
        • #PBEx_PDF_PageSize_B4
        • #PBEx_PDF_PageSize_B5
        • #PBEx_PDF_PageSize_RA0
        • #PBEx_PDF_PageSize_RA1
        • #PBEx_PDF_PageSize_RA2
        • #PBEx_PDF_PageSize_RA3
        • #PBEx_PDF_PageSize_RA4
        • #PBEx_PDF_PageSize_RA5
      3. Orientation: Folgende Orientierung können verwendet werden:
        • #PBEx_PDF_PageOrientation_Portrait: Hochformat
        • #PBEx_PDF_PageOrientation_Landscape: Querformat
      4. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • GetPDFPageSize()
    • Syntax:

      Code: Alles auswählen

      Result = GetPDFPageSize(ID, @ErrorOutput$)
    • Beschreibung: Ermittelt die Seitengröße.
    • Parameter:
      1. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert: Der Wert kann mit folgenden Konstanten ausgewertet werden:
      • #PBEx_PDF_PageSize_A0
      • #PBEx_PDF_PageSize_A1
      • #PBEx_PDF_PageSize_A2
      • #PBEx_PDF_PageSize_A3
      • #PBEx_PDF_PageSize_A4
      • #PBEx_PDF_PageSize_A5
      • #PBEx_PDF_PageSize_B0
      • #PBEx_PDF_PageSize_B1
      • #PBEx_PDF_PageSize_B2
      • #PBEx_PDF_PageSize_B3
      • #PBEx_PDF_PageSize_B4
      • #PBEx_PDF_PageSize_B5
      • #PBEx_PDF_PageSize_RA0
      • #PBEx_PDF_PageSize_RA1
      • #PBEx_PDF_PageSize_RA2
      • #PBEx_PDF_PageSize_RA3
      • #PBEx_PDF_PageSize_RA4
      • #PBEx_PDF_PageSize_RA5
  • GetPDFPageOrientation()
    • Syntax:

      Code: Alles auswählen

      Result = GetPDFPageOrientation(ID, @ErrorOutput$)
    • Beschreibung: Ermittelt die Orientation
    • Parameter:
      1. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert: Der Wert kann mit folgenden Konstanten ausgewertet werden:
      • #PBEx_PDF_PageOrientation_Portrait: Hochformat
      • #PBEx_PDF_PageOrientation_Landscape: Querformat
  • SetPDFPageMargin()
    • Syntax:

      Code: Alles auswählen

      Result = SetPDFPageMargin(ID, Top, Right, Bottom, Left, @ErrorOutput$)
    • Beschreibung: Legt die Außenabstände fest.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Top: Oberer Abstand
      3. Right: Rechter Abstand
      4. Bottom: Unterer Abstand
      5. Left: Linker Abstand
      6. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
  • SetPDFTextColor()
    • Syntax:

      Code: Alles auswählen

      Result = SetPDFTextColor(ID, Color, @ErrorOutput$)
    • Beschreibung: Legt die Schriftfarbe fest. Texte, die danach hinzugefügt werden, erhalten die neue Farbe.
    • Parameter:
      1. ID: Die Nummer des erstellten oder geöffneten Dokuments.
      2. Color: RGB() oder RGBA() kann für die Farbfestlegung verwendet werden.
      3. @ErrorOutput$: Falls ein Fehler auftritt, wird die Fehlermeldung in die String-Variable gespeichert.
    • Rückgabewert:
      • 1: Der Vorgang war erfolgreich.
Systemvoraussetzungen:
  • .NET Framework 4.7.2 oder höher
  • Unicode-Aktivierung (standardmäßig ab PB 5.50)
Lizenz: Diese DLL-Datei ist kostenlos und darf sowohl privat als auch kommerziell verwendet werden.
Folgende Copyright-Texte müssen mitgeliefert werden:
Copyright (c) 2005-2014 empira Software GmbH, Troisdorf (Germany)
Copyright © 2019 RSBasic.de
Download: https://www.rsbasic.de/downloads/downlo ... Ex_PDF.zip
Bild

Ich würde mich über Feedbacks, Verbesserungsvorschläge, Fehlermeldungen oder Wünsche sehr freuen. Wer mich unterstützen möchte, kann mir auch was kleines spenden. Danke :)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: PB.Ex PDF (Windows)

Beitrag von NicTheQuick »

Ich habe es mangels Windows noch nicht ausprobieren können, aber wie kann man beim Text denn angeben wohin er geschrieben werden soll?
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex PDF (Windows)

Beitrag von RSBasic »

Meinst du manuelle Position (X, Y)? Das kann ich hinzufügen, wenn du das meinst. Derzeit wird der Text immer oben links wie in einem Word-Dokument ausgerichtet geschrieben.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: PB.Ex PDF (Windows)

Beitrag von uweb »

Hey,

ich war die Nummer 42. Das sagt wohl alles. :D

Vielen Dank RSBasic!

Feedback:
Das sieht richtig richtig gut aus.

Verbesserungsvorschläge:
keine

Fehlermeldungen:
keine

Wünsche:
... weitere Funktionen ...
interne und externe Links, Bilder, Tabellen (mit Hintergrund-Farbe/Bild und Ausrichtung der Tabelle/Felder) ... da gibt es noch viel. Aber damit könnte man schon sehr viel machen.

Spende:
Wohin denn?
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: PB.Ex PDF (Windows)

Beitrag von dige »

Hallo RSBasic, habe dein erst jetzt entdeckt, weil ich nach einer Möglichkeit, ein bestehendes PDF zu schützen gesucht hat.
Das klappt mit Deinem Tool auch - vielen Dank dafür.

Leider werden aber bei der Anwendung der Permissions, die Farben vom Text verändert.

Hier mal die Beispiel Dokumente: https://u.pcloud.link/publink/show?code ... WcSYm9xezy

- Original_Word.docx | Die Datei, aus der das PDF mit Word -> Save as PDF erstellt wird
- Original_PDF_SaveAsPDF.pdf | Das original erstellte PDF mit korrekten Farben
- Bearbeitet_Pwd_XYZ.pdf | mit Pb.Ex PDF bearbeitet, mittels folgendem Code

Ich nutze folgenden Code:

Code: Alles auswählen

EnableExplicit

Define PBEx_PDF

#PBEx_PDF_PageOrientation_Portrait = 0
#PBEx_PDF_PageOrientation_Landscape = 1
#PBEx_PDF_PageSize_A0 = 1
#PBEx_PDF_PageSize_A1 = 2
#PBEx_PDF_PageSize_A2 = 3
#PBEx_PDF_PageSize_A3 = 4
#PBEx_PDF_PageSize_A4 = 5
#PBEx_PDF_PageSize_A5 = 6
#PBEx_PDF_PageSize_B0 = 7
#PBEx_PDF_PageSize_B1 = 8
#PBEx_PDF_PageSize_B2 = 9
#PBEx_PDF_PageSize_B3 = 10
#PBEx_PDF_PageSize_B4 = 11
#PBEx_PDF_PageSize_B5 = 12
#PBEx_PDF_PageSize_RA0 = 13
#PBEx_PDF_PageSize_RA1 = 14
#PBEx_PDF_PageSize_RA2 = 15
#PBEx_PDF_PageSize_RA3 = 16
#PBEx_PDF_PageSize_RA4 = 17
#PBEx_PDF_PageSize_RA5 = 18

CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
  PBEx_PDF = OpenLibrary(#PB_Any, "PB.Ex_PDF_x86.dll")
CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64
  PBEx_PDF = OpenLibrary(#PB_Any, "PB.Ex_PDF_x64.dll")
CompilerEndIf

If PBEx_PDF
  Prototype CreatePDF(ID, ErrorOutput)
  Define CreatePDF.CreatePDF = GetFunction(PBEx_PDF, "CreatePDF")
  Prototype SetPDFTitle(ID, Title.p-Unicode, ErrorOutput)
  Define SetPDFTitle.SetPDFTitle = GetFunction(PBEx_PDF, "SetPDFTitle")
  Prototype SetPDFAuthor(ID, Author.p-Unicode, ErrorOutput)
  Define SetPDFAuthor.SetPDFAuthor = GetFunction(PBEx_PDF, "SetPDFAuthor")
  Prototype SetPDFSubject(ID, Subject.p-Unicode, ErrorOutput)
  Define SetPDFSubject.SetPDFSubject = GetFunction(PBEx_PDF, "SetPDFSubject")
  Prototype SetPDFKeywords(ID, Keywords.p-Unicode, ErrorOutput)
  Define SetPDFKeywords.SetPDFKeywords = GetFunction(PBEx_PDF, "SetPDFKeywords")
  Prototype SetPDFCreator(ID, Creator.p-Unicode, ErrorOutput)
  Define SetPDFCreator.SetPDFCreator = GetFunction(PBEx_PDF, "SetPDFCreator")
  Prototype GetPDFTitle(ID, Output, ErrorOutput)
  Define GetPDFTitle.GetPDFTitle = GetFunction(PBEx_PDF, "GetPDFTitle")
  Prototype GetPDFAuthor(ID, Output, ErrorOutput)
  Define GetPDFAuthor.GetPDFAuthor = GetFunction(PBEx_PDF, "GetPDFAuthor")
  Prototype GetPDFSubject(ID, Output, ErrorOutput)
  Define GetPDFSubject.GetPDFSubject = GetFunction(PBEx_PDF, "GetPDFSubject")
  Prototype GetPDFKeywords(ID, Output, ErrorOutput)
  Define GetPDFKeywords.GetPDFKeywords = GetFunction(PBEx_PDF, "GetPDFKeywords")
  Prototype GetPDFCreator(ID, Output, ErrorOutput)
  Define GetPDFCreator.GetPDFCreator = GetFunction(PBEx_PDF, "GetPDFCreator")
  Prototype AddPDFText(ID, Text.p-Unicode, ErrorOutput)
  Define AddPDFText.AddPDFText = GetFunction(PBEx_PDF, "AddPDFText")
  Prototype SavePDF(ID, Path.p-Unicode, ErrorOutput)
  Define SavePDF.SavePDF = GetFunction(PBEx_PDF, "SavePDF")
  Prototype AddPDFPage(ID, ErrorOutput)
  Define AddPDFPage.AddPDFPage = GetFunction(PBEx_PDF, "AddPDFPage")
  Prototype ClosePDF(ID, ErrorOutput)
  Define ClosePDF.ClosePDF = GetFunction(PBEx_PDF, "ClosePDF")
  Prototype IsPDF(ID, ErrorOutput)
  Define IsPDF.IsPDF = GetFunction(PBEx_PDF, "IsPDF")
  Prototype SetPDFFont(ID, FontName.p-Unicode, FontSize, FontStyle, ErrorOutput)
  Define SetPDFFont.SetPDFFont = GetFunction(PBEx_PDF, "SetPDFFont")
  Prototype ProtectPDF(ID, UserPassword.p-Unicode, OwnerPassword.p-Unicode, PermissionForExtract, PermissionForModification, PermissionForFormFill, PermissionForAnnotation, PermissionForPrint, PermissionForPrintFullQuality, ErrorOutput)
  Define ProtectPDF.ProtectPDF = GetFunction(PBEx_PDF, "ProtectPDF")
  Prototype OpenPDF(ID, Path.p-Unicode, Password.p-Unicode, ErrorOutput)
  Define OpenPDF.OpenPDF = GetFunction(PBEx_PDF, "OpenPDF")
  Prototype GetPDFPageTotal(ID, ErrorOutput)
  Define GetPDFPageTotal.GetPDFPageTotal = GetFunction(PBEx_PDF, "GetPDFPageTotal")
  Prototype SetPDFPageSize(ID, Size, Orientation, ErrorOutput)
  Define SetPDFPageSize.SetPDFPageSize = GetFunction(PBEx_PDF, "SetPDFPageSize")
  Prototype GetPDFPageSize(ID, ErrorOutput)
  Define GetPDFPageSize.GetPDFPageSize = GetFunction(PBEx_PDF, "GetPDFPageSize")
  Prototype GetPDFPageOrientation(ID, ErrorOutput)
  Define GetPDFPageOrientation.GetPDFPageOrientation = GetFunction(PBEx_PDF, "GetPDFPageOrientation")
  Prototype SetPDFPageMargin(ID, Top, Right, Bottom, Left, ErrorOutput)
  Define SetPDFPageMargin.SetPDFPageMargin = GetFunction(PBEx_PDF, "SetPDFPageMargin")
  Prototype SetPDFTextColor(ID, Color, ErrorOutput)
  Define SetPDFTextColor.SetPDFTextColor = GetFunction(PBEx_PDF, "SetPDFTextColor")
  
EndIf

Define Output$ = Space(1000000)
Define ErrorOutput$ = ""
Define file.s = ""

file.s = OpenFileRequester("PDF wählen", "test.pdf", "*.pdf", 0)
OpenPDF(1, file, "", @ErrorOutput$)
ProtectPDF(1, "XYZ", "ZYX", 0, 0, 0, 0, 0, 0, @ErrorOutput$)
SavePDF(1, file + ".new.pdf", @ErrorOutput$)
ClosePDF(1, @ErrorOutput$)

Vielen Dank schon mal, wenn Du da gern mal drüber schauen könntest.

Ciao Dige
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex PDF (Windows)

Beitrag von RSBasic »

Hallo dige,

den Link zum Beispiel-Dokument funktioniert bei mir leider nicht. Kannst du mir einen anderen Link bereitstellen?
Ich habe stattdessen mit anderen Dokumenten getestet, aber leider konnte ich das Problem nicht nachstellen.

Danke im Voraus :)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: PB.Ex PDF (Windows)

Beitrag von dige »

Geht der Link direkt zum PDF :“ https://u.pcloud.link/publink/show?code ... bWD8FtY6sX“ ?

Das wäre dann das aus dem Word erstellte PDF, welches dann beim ändern der Security Attribute die Farben ändert.
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex PDF (Windows)

Beitrag von RSBasic »

Ich habe gerade herausgefunden, dass die TLD bei mir von meiner Pi-hole geblockt wurde. Ich konnte es jetzt doch herunterladen und werde es gleich testen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex PDF (Windows)

Beitrag von RSBasic »

Das ist merkwürdig, dass es bei diesem PDF-Dokument zu unterschiedlichen Farben kommt. Wenn ich ProtectPDF() nicht nutze, dann wird auch nichts verändert.
Wenn ich allerdings dein originales Word-Dokument in PDF exportiere und danach nochmal mit PB.Ex PDF schützen lasse, dann tritt das Problem nicht auf.
Mein exportiertes PDF-Dokument: https://www.rsbasic.de/temp/Original_PD ... DFbyRS.pdf
Geschütztes PDF-Dokument: https://www.rsbasic.de/temp/Original_PD ... df.new.pdf

Was ist da anders zwischen unseren PDF-Dokumenten? :roll:
Der einzige Unterschied, den ich feststellen konnte ist, dass die Schriftart "Futura Std Book" bei mir nicht installiert ist. Hat das vielleicht was mit dieser Schriftart zu tun?

\\Edit:
Ich habe die fehlende Schriftart heruntergeladen und installiert. Die Schriftart wird bei mir erkannt und ich habe das Dokument neu exportiert und neu schützen lassen.
Mein exportiertes PDF-Dokument: https://www.rsbasic.de/temp/Original_PD ... byRS_2.pdf
Geschütztes PDF-Dokument: https://www.rsbasic.de/temp/Original_PD ... df.new.pdf

Immer noch keine Probleme. Hm, wo ist dann der Unterschied?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: PB.Ex PDF (Windows)

Beitrag von dige »

Laut PDFInfo hast Du "Print To PDF" verwendet, statt "Save as PDF". Dadurch wird die Datei auch deutlich kleiner.
Ich habe das PDF aus Word nochmal neu gespeichert und bei den Optionen PDF/A kompatibel gewählt, da sieht es dann nach dem schützen noch schlimmer aus.
Es scheint aber an der Schriftart zu liegen. Wenn ich den Text auf Arial formatiere, funktioniert alles. Leider ist die Schriftart aber vorgegeben.
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Antworten