Aktuelle Zeit: 22.03.2019 16:19

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [Module] pbPDF-Module
BeitragVerfasst: 03.01.2019 18:07 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Für ein Projekt benötige ich eine plattformübergreifende und etwas "handlichere" Version von PurePDF.
Somit habe ich auf der Basis von PurePDF ein neues PDF-Modul entwickelt.
Nachdem ich viele Befehle (hoffentlich) etwas intuitiver gestaltet habe, ist pbPDF leider nicht mehr mit PurePDF kompatibel.

pbPDF - Module

  • Erstellen von Formularen (AcroForms)
  • Verschlüsselung (Passwortschutz & Zugriffsberechtigungen)
  • Nutzung der PB Packer Library anstatt externer Komprimierungs-Prozeduren
  • Auslesen von Font- und Image-Headern nur mit PB-Befehlen anstatt mit Windows-API
  • Unterstützung des JPEG2000-Bildformates
  • Unterstützung von Unicode-Zeichensätzen
  • 64-Bit kompatibel
  • Entfernung von "Altlasten" (ASCII85 / WMF) und Verzicht auf Assembler

Code:
  ; ----- Basic Commands -----

  ; ----- Basic Commands -----

  ; PDF::Create()                      - Create PDF document.
  ; PDF::AddPage()                     - Adds a (new) page to the document.
  ; PDF::BookMark()                    - Add bookmark
  ; PDF::Cell()                        - Prints a cell (rectangular area) with optional borders, background color and character string.
  ; PDF::DividingLine()                - Draws a line with the specified width.
  ; PDF::GetFontSize()                 - Get current fontsize (#Point/#Unit)
  ; PDF::GetMargin()                   - Get left, top, right or cell margin.
  ; PDF::GetMultiCellLines()           - Get the last value of newlines for pdf_MultiCell()
  ; PDF::GetPageHeight()               - Get current height of page.
  ; PDF::GetPageNumber()               - Returns the current page number.
  ; PDF::GetPageWidth()                - Get current width of page.
  ; PDF::GetPosX()                     - Returns the abscissa of the current position.
  ; PDF::GetPosY()                     - Returns the ordinate of the current position.
  ; PDF::GetStringWidth()              - Get width of a string in the current font.
  ; PDF::Image()                       - Puts an image in the page.
  ; PDF::Ln()                          - Performs a line break.
  ; PDF::MultiCell()                   - This method allows printing text with line breaks.
  ; PDF::MultiCellList()               - Add multicell with list elements
  ; PDF::PlaceText()                   - Place text at x, y position. 
  ; PDF::Rotate()                      - Perform a rotation around a given center.
  ; PDF::Save()                        - Save PDF under file name
  ; PDF::SetAutoPageBreak()            - Set auto page break mode and triggering margin.
  ; PDF::SetColorRGB()                 - Set RGB color for text, draw and fill  (#TextColor / #DrawColor / #FillColor).
  ; PDF::SetDashedLine()               - Set a dash pattern and draw dashed lines or rectangles.
  ; PDF::SetFont()                     - Sets the font used to print character strings.
  ; PDF::SetFontSize()                 - Defines the size of the current font.
  ; PDF::SetPageNumbering()            - Set page numbering in footer #True/#False.
  ; PDF::SetInfo()                     - Defines author, titel, subject, creator and associated keywords ('keyword1 keyword2 ...') of the document
  ; PDF::SetLineThickness()            - Defines the line thickness.
  ; PDF::SetMargin()                   - Set left, top, right or cell margin.
  ; PDF::SetPageMargins()              - Set left, top and right page margins.
  ; PDF::SetPosXY()                    - Defines the abscissa and ordinate of the current position.
  ; PDF::SetPosX()                     - Defines the abscissa of the current position.
  ; PDF::SetPosY()                     - Moves the current abscissa back to the left margin and sets the ordinate.
  ; PDF::SubWrite()                    - Write superscripted or supscripted
  ; PDF::TruncateCell()                - Prints a Cell, if text is too large it will be truncated
  ; PDF::Write()                       - This method prints text from the current position.
 
  ; ----- Advanced Commands -----
 
  ; PDF::EmbedFile()                   - Embeds a file into the pdf.
  ; PDF::EmbedFont()                   - Embeds a font into the pdf and returns the font name.
  ; PDF::EmbedJavaScript()             - Add JavaScript
  ; PDF::EmbedJavaScriptFile()         - Include JavaScript file
  ; PDF::EnableFooter()                - Enable/disable Footer (procedure)
  ; PDF::EnableHeader()                - Enable/disable Header (procedure)
  ; PDF::EnableTOCNums()               - Enable/disable adding page numbers to table of contents
  ; PDF::AddEntryTOC()                 - Add TOC entry
  ; PDF::EscapeText()                  - Format a text string (=> masked string).
  ; PDF::GetErrorCode()                - Return the error code.
  ; PDF::GetErrorMessage()             - Return the error message.   
  ; PDF::GetNumbering()                - Return if numbering is #True/#False. Usefull for TOC functions
  ; PDF::GetObjectNum()                - Get object number
  ; PDF::GetScaleFactor()              - Get scale factor for used unit.
  ; PDF::GetWordSpacing()              - Get word spacing. 
  ; PDF::ImageMemory()                 - Puts an image (Memory) in the page.
  ; PDF::InsertTOC()                   - Insert table of contents.
  ; PDF::Link()                        - Puts a link on a rectangular area of the page.
  ; PDF::SetAliasTotalPages()          - Defines an alias for the total number of pages.
  ; PDF::SetColorCMYK()                - Set CMYK color for text, draw and fill (#TextColor / #DrawColor / #FillColor).
  ; PDF::SetEncryption()               - Enable encryption and set passworts and permission
  ; PDF::SetFooterProcedure()          - Set footer procedure.
  ; PDF::SetHeaderProcedure()          - Set header procedure.
  ; PDF::SetOpenAction()               - Set page and zoom for opening the document
  ; PDF::SetPageCompression()          - Enable/disable compression for pages
  ; PDF::SetPageLayout()               - Define display mode for pages in the viewer
  ; PDF::SetPageMode()                 - Define mode and appearance of the viewer (e.g. fullscreen mode)
  ; PDF::SetViewerPreferences()        - Set viewer preferences
  ; PDF::SetWordSpacing()              - Set word spacing.
 
  ; ----- AcroForms [#Enable_AcroFormCommands] ------
 
  ; PDF::ButtonField()                 - Button field (PushButton / CheckBox / RadioButton)
  ; PDF::ChoiceField()                 - Choice field (Scrolling List / ComboBox / editable ComboBox)
  ; PDF::TextField()                   - Text field   (single line/ multiline)
 
  ; ----- Annotations & Actions [#Enable_Annotations] -----
 
  ; PDF::AddFileLink()                 - Defines the page and position for embedded file annotations. (#GraphIcon/#PaperClipIcon/#PushPinIcon/#TagIcon)
  ; PDF::AddGotoAction()               - Goto page and position in the document
  ; PDF::AddGotoLabel()                - Set Label to be able to jump to this position
  ; PDF::AddLaunchAction()             - Defines the page and position for a launch action. (#OpenAction/#PrintAction)
  ; PDF::AddLinkURL)                   - Defines the page and position a link points to and returns its identifier.
  ; PDF::AddTextNote()                 - Defines the page and position for text annotations. ( #CommentIcon/#KeyIcon/#NoteIcon/#HelpIcon/#NewParagraphIcon/#ParagraphIcon/#InsertIcon )
 
  ; ----- Drawing Commands [#Enable_DrawingCommands] -----
 
  ; PDF::DrawCircle()                  - Draws a circle
  ; PDF::DrawEllipse()                 - Draws a ellipse
  ; PDF::DrawGrid()                    - Draws a light blue grid on the page for testing purposes
  ; PDF::DrawLine()                    - Draws a single line between two points.
  ; PDF::DrawRectangle()               - Draws a rectangle.
  ; PDF::DrawRoundedRectangle()        - Draws a rounded rectangle.
  ; PDF::DrawSector()                  - Draws the sector of a circle.
  ; PDF::DrawTriangle()                - Draws a triangle
 
  ; PDF::SetLineCap()                  - Sets the line cap style
  ; PDF::SetLineCorner()               - Sets the line join style.
 
  ; PDF::PathArc()                     - Draws a cubic Bezier curve to the current path.
  ; PDF::PathBegin()                   - Begins a new path at the coordinates (x, y).
  ; PDF::PathEnd()                     - Closes the current path and draws a line from the current point to the starting point.
  ; PDF::PathLine()                    - Draws a line from the current point to (x, y).
  ; PDF::PathRect()                    - Draws a rectangle to the current path with upper-left corner (x, y) and dimensions (w, h).
 
  ; ----- Transformation [#Enable_TransformCommands] -----
 
  ; PDF::StartTransform()              - Use this before calling any transformation. (Scale, Skew, Mirror, Translate)
  ; PDF::StopTransform()               - Restore the normal painting And placing behaviour As it was before calling pdf_StartTransform().
  ; PDF::MirrorHorizontal()            - Alias for scaling -100% in x direction. (Transform)
  ; PDF::MirrorVertical()              - Alias For scaling -100% in y direction. (Transform)
  ; PDF::ScaleHorizontal()             - Scaling horizontal        (Transform)
  ; PDF::ScaleVertical()               - Scaling vertical          (Transform)
  ; PDF::Scale()                       - Scaling                   (Transform)
  ; PDF::SkewHorizontal()              - Skewing -> angle x        (Transform)
  ; PDF::SkewVertical()                - Skewing -> angle y        (Transform)
  ; PDF::Translate()                   - Translate -> right/bottom (Transform)
  ; PDF::TranslateHorizontal()         - Translate -> right        (Transform)
  ; PDF::TranslateVertical()           - Translate -> bottom       (Transform)


Download: pbPDFModule.pbi

_________________
Meine PureBasic-Projekte:
EasySetup - Setups für eigene Programme erstellen
___________________________________________
[Windows 10 x64] | [PB V5.7x]
Bild


Zuletzt geändert von Thorsten1867 am 21.02.2019 16:29, insgesamt 6-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module (Beta)
BeitragVerfasst: 04.01.2019 12:02 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
Cool, danke für deinen Code. :allright:

_________________
BildBildBildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module (Beta)
BeitragVerfasst: 06.01.2019 15:27 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Hinzugefügt: Kleine Dokumentation der Befehle in Deutsch hinzugefügt. ( pbPDF-Doku_DE.pdf )

_________________
Meine PureBasic-Projekte:
EasySetup - Setups für eigene Programme erstellen
___________________________________________
[Windows 10 x64] | [PB V5.7x]
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module (Beta)
BeitragVerfasst: 07.01.2019 15:15 
Offline
Moderator
Benutzeravatar

Registriert: 15.06.2008 18:22
Wohnort: Dresden
Danke, schau ich mir zu gegebener Zeit mal genauer an!

_________________
Win10 x64 | PB 5.70 (x86 und x64)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module (Beta)
BeitragVerfasst: 18.01.2019 18:47 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Hinzugefügt:
  • Passwortschutz & Verschlüsselung
  • Zugriffsberechtigungen für PDF-Dokumente

Code:
#NoPrintAccess
#ModifyAccess
#CopyAccess
#AddAccess
#FormAccess
#Extract
#Assemble
#DigitalCopy

_________________
Meine PureBasic-Projekte:
EasySetup - Setups für eigene Programme erstellen
___________________________________________
[Windows 10 x64] | [PB V5.7x]
Bild


Zuletzt geändert von Thorsten1867 am 20.01.2019 12:50, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 20.01.2019 12:32 
Offline
PureBasic Team
Benutzeravatar

Registriert: 11.09.2004 16:35
Wohnort: Saxony / Deutscheinsiedel
Toll, danke für die Weiterentwicklung :allright:

Die Beispiele und die Doku sind vielversprechend, zur konkreten eigenen Anwendung bin ich leider noch nicht gekommen...

_________________
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 23.01.2019 09:55 
Offline
Benutzeravatar

Registriert: 22.10.2004 07:20
Wohnort: Erfurt
Hey,

erstmal vielen Dank für die Arbeit und das Projekt. Ich habe aber leider das gleiche Problem, wie jetzt auch im englischen Forum berichtet wurde. Alle Beispiele erstellen zwar eine PDF, diese lässt sich aber mit dem Acrobat Reader nicht öffnen. Fehler 14.

Das ist übrigens auch der Fall bei den PDFs, die Du mit den Beispielen auslieferst (im ZIP Ordner). Diese lassen sich auch schon nicht öffnen.

Das einzige was mir auffällt, aber ich weiß nicht ob das relevant ist, ist der Fakt, dass die PDFs nach der Fehlermeldung leer angezeigt werden, aber mit einer Skalierung von mehreren tausend Prozent.

System: Win 7 - 64 Bit - aber 32 Bit PB
PB: Ausprobiert mit der 5.40 LTS

Gruß,
Morty

_________________
KeItSi - kostenlose CRM Software auf www.keitsi.de

Meine Musik auf YouTube

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 23.01.2019 10:14 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Kann mir das nicht erklären, wo das herkam.

Habe eine neue ZIP-Datei zum Download erstellt.

_________________
Meine PureBasic-Projekte:
EasySetup - Setups für eigene Programme erstellen
___________________________________________
[Windows 10 x64] | [PB V5.7x]
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 23.01.2019 10:54 
Offline
Benutzeravatar

Registriert: 22.10.2004 07:20
Wohnort: Erfurt
Super, jetzt funktioniert es. Auch die PDFs, die Du mitlieferst.

Top :allright: und vielen Dank,

Morty

_________________
KeItSi - kostenlose CRM Software auf www.keitsi.de

Meine Musik auf YouTube

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Module] pbPDF-Module
BeitragVerfasst: 21.02.2019 16:39 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Version 2.0

Ich habe die interne Struktur des Moduls komplett geändert und an die Struktur von PDF-Dokumenten (einzelne Objekte) angepasst. Anstatt den Umweg über unzählige LinkedList zu nehmen, werden die (meisten) Daten nun direkt in die Objekte geschrieben.
Der Sourcecode ist dadurch nicht nur logischer, verständlicher und übersichtlicher geworden, sondern kann nun auch deutlich einfacher erweitert werden.

Neu:
  • Unterstützung von Formularfeldern (z.B. Textfeld, Checkbox, Radiobutton & Combobox)
  • AddGotoLabel() für die Navigation im PDF-Dokument. (z.B. von der Befehlsübersicht mittels Link zu der entsprechenden Seite springen)

_________________
Meine PureBasic-Projekte:
EasySetup - Setups für eigene Programme erstellen
___________________________________________
[Windows 10 x64] | [PB V5.7x]
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye