Skip to content

Releases: orklann/PEP

PEP v0.27 alpha

17 May 11:36
Compare
Choose a tag to compare

This alpha made a huge progress to implement some graphic elements either for display and for saving as PDF. See screenshot below.

graphics_work

Since there are so many changelogs between last alpha and this alpha, we emit the changelog here

PEP v0.26 alpha

09 Apr 13:53
Compare
Choose a tag to compare

This alpha handled /CropBox in PDF page, evaled CMap (/ToUnicode) and fixed some bugs.

Changelog:

  • Fixed #34
  • GPage: logPageContent also log resource dictionary
  • GTextEditor: Fixed exiting text editor is laggy. 1). Remove the dealloc() method entirely, which make text blocks in text parser. 2). Update current text block in text parser to make things right by using textBlockIndex
  • GTextEditor: Modify comments
  • GTextEditor: Fixed crash while only one line in text editor
  • GTextEditor: Fixed text mess up while there is CropBox in page
  • GTextEditor: Add comments
  • GPage: Fixed glyph frame not correct after appling CropBox
  • GPage: Add cropBox property
  • GPage: Remove unused code and add NOTE
  • GPage: Modify comments
  • GPage: Clip context to hidden content outside of CropBox in page
  • GPage: Shift context CTM by using origin of CropBox to get correct position of content in page if there is CropBox in it
  • GPage: Apply CropBox in calculatePageMediaBox if there is a /CropBox key in page
  • GPage: Add test code for clip area, and also comment it
  • GObjects: If no filter for stream object found, just return stream data in getDecodedStreamContent method
  • GGlyph: Fixed updateGlyphWidth not use converted font key to access widths array in font infos. And fixed #30
  • GPage: Remove code which are not needed in buildCachedFonts
  • GLexer: Fixed getArray bug for array like [([13)1(\0502)], and also fixed #29
  • Update README.md
  • GCMap: eval CMap streams
  • Add CMaps-raft.pdf.txt
  • GObjects: Add comments
  • GCMap: remove initThings method
  • GCMap: add prototype eval method
  • GCMap: import header file
  • Introduce GCMap class
  • GObjects: Add comments
  • GObjectsTests: Remove duplicated lines of code
  • GObjects: Add utf16BEString method to GHexStringsObject
  • GObjects: Addd utf16BEString to GHexStringsObject
  • GObjects: Add integerValue method to GHexStringsObject
  • GObjects: Add rawString method to GHexStringsObject
  • GDocument: Remove forceDrawAllPage property

PEP v0.25 alpha

29 Mar 08:30
Compare
Choose a tag to compare

This alpha improves the scrolling performance a lot, now PEP is very smooth and responsive. We are stepping forward to build a light weight and elegant PDF editor.

  • GDocument: Fixed second page is blank while scrolling at startup
  • GPage: add comments
  • GPage: Fixed prewarm render nearby pages crash while live scrolling
  • GPage: Add comments
  • GPage, GInterpreter: Add prewarm methods
  • GPage: add comments
  • GPage: remove comments
  • GPage: remove logging function
  • GPage: remove comments
  • GPage: fontTagToFontKey now use cache dictionary in page to improve performance
  • GInterpreter: Fixed font key is wrong for getting font encoding since we modified the font key format
  • Font key now is like "TT1~32-0" to fix error while getting reference string from font key
  • Save to PDF works fine with new PDF font key:"TT1-32-0"
  • GPage: fontTagToFontKey: now use "TT1-32-0" alike
  • GPage: use font key "32-0" for cached fonts and addedFonts
  • GPage: add fontTagToFontKey: method
  • GTextEditor: remove comments
  • GCompiler: Fixed #24

PEP v0.24 alpha

14 Mar 08:27
Compare
Choose a tag to compare

PEP v0.24 alpha

We mainly focused on the redesign of the text editor for correctness and easily understand and readable in source code for later development.

Changelog:

  • GCompiler: add comments
  • GCompiler: Build page content with calculation of glyph delta
  • Remove unused code and files
  • GMisc: update separateWords() widthTolerance
  • GTextEditor: Plus 1px to getEditorWidth to prevent error after word wrapping
  • GMisc: make separateWords() more acurrate for two columns words
  • GTextEditor: Rebuild text block without using TJTexts before deactive text editor
  • GTextEditor: don't do word wrapping while initialize
  • GWord: Remove comments
  • GTextEditor: Fixed adding character and thenb removing character cause the text editor frame changed
  • GTextEditor: Fixed text position wrong if insertion point is not at the end of text block
  • GTextEditor: Correctly update text matrix of glyphs with glyphs distance in leftAlignLines:
  • GTextEditor: Implement leftAlignLines:
  • GTextEditor: Set startTextMatrix for lines in wordWrapToLines
  • GTextParser: update comment
  • GTextParser: add comments
  • GTextEditor: Don't care about word distance at the beggining of new line in wordWrapToLines
  • GTextEditor: Implement wordWrapToLines
  • GGlyph: Remove textMatrixForRendering property
  • GTextParser: add and update comments
  • GWord: Add comment
  • GPage: add test code for testing word distance
  • GTextParser: set wordDistance for words in makeLines
  • GWord: Modify comment
  • GWord: Modify comment
  • GWord: Add wordDistance property
  • GTextParser: Refin isGlyphBreakWord:
  • GTextParser: more acurrate algorithm for isGlyphBreakWord
  • Update README.md
  • Update README.md
  • Update README.md
  • GTextEditor: ready for next reimplementation of words wrapping for text editor
  • GInterpreter: update glyph width explictly
  • GTextEditor: Better methods to set textMatrixForRendering in warpGlyph
  • GTextEditor: Do word wrapping also update textMatrixForRendering
  • GGlyph: add textMatrixForRendering property
  • GInterpreter: Fixed text rendering issue in #23
  • GTextParser: add comments
  • GTextEditor: Do not use GTJTexts to make readOrderGlyphs, so that fixes crash wh
  • ile activing text editor
  • GTextParser: Add makeReadOrderGlyphsWithTJTexts to speedup makeTextBlock in mous
  • eMoved: for highlighting text block
  • GMisc: Add quicksortGTJTexts()
  • GMisc: Add compareTJTexts()
  • GInterpreter: Create TJText and add it to tjTexts in text parser while evel Tj,
  • TJ commands
  • GTextParser: add tjTexts
  • Introduce GTJText class
  • GDocument: Only call page’s mouseMoved: if mouse position is in page
  • GConstants: Add kLinesPostionThresold
  • GTextParser: compare two lines left postion by a threshold
  • GTextParser: Add makeReadOrderLines, fixed #22
  • Add screenshot
  • GTextParser: Improve isGlyphBreakWord: and fixed #21

PEP v0.23 alpha release

26 Feb 12:08
Compare
Choose a tag to compare

PEP v0.23 alpha.

Changelog:

  • Update README.md
  • GMisc: add printNSString()
  • GObjects: Fixed #20
  • GPage: add pageNumber method
  • GFontEncoding: rename variables
  • GFontEncoding: Remove logging function
  • Use GFontEncoding in GInterpreter
  • Add GFontEncoding class
  • PEPWindow: resize GDocument while resizing window
  • GPage: Fixed #18
  • GPage: Fixed crash in #17
  • GInterpreter: Handle font encoding is NULL, and fixed #16
  • GDocument: add buildCachedFonts
  • PEP: Handle all glyph widths related functions correctly
  • GGlyph: Implement updateGlyphWidth
  • GTextEditor: Set CGGlyph in insertChar:font:fontTag:
  • GFontInfo: Use NSInteger instead of NSUInteger to handle index < 0 case
  • GPage: Fixed GFontInfo firstChar not setting correctly, and finally fixed #15
  • GFontInfo: Add missing width property
  • GInterpreter: If width from CGGlyph is zero, we need to lookup it in fontInfos dictionary in GDocument
  • GDocument: add buildFontInfos
  • GFontInfoTests: add test case for GFontInfo
  • GFontInfo: Add getCharWidth:
  • GFontInfo: Add fontTag
  • Introduce GFontInfo class
  • GInterpreter: remove unused code
  • GInterpreter: remove unused code
  • GInterpreter: draw string by using CTFontDrawGlyphs
  • GInterpreter: Return correct glyph advance in drawString:font:context:
  • GInterpreter: Draw text by using CTFontDrawGlyphs instead of CTLineRef
  • GInterpreter: Set text state encoding in Tf eval
  • GEncodingsTests: Modify test case
  • GPage: Implement buildFontEncodings
  • GEncodingsTests: Add test cases to GEncodings.h
  • Introduce GEncodings.h

PEP v0.22 alpha release

27 Jan 08:19
Compare
Choose a tag to compare

PEP v0.22 alpha.

Changelog:

  • GPage: handle resources is a dictionary other than an indirect object in addNewAddedFontsForUpdating
  • GLexer: Fixed kNameObjectToken wrong algorithm in nextToken, and fixed #12
  • GPage: Handle case: where Contents is a kArrayObject in [GPage addPageStream], and fixed #11
  • GPage: update resource property after changing it in addNewAddedFontsForUpdating
  • GCompiler: add Tw operator into compilation
  • GCompiler: add Tc operatoer into compilation, and fixed #13

PEP v0.21 alpha release

24 Jan 06:55
Compare
Choose a tag to compare

PEP v0.21 alpha.

Changelog:

  • GTextParser: handle last glyph is a white space correctly without crash, and fixed #6
  • GDocument: only handle mouse event for visible pages
  • GDocument: redraw whole visible pages only visible pages are changed while scrolling
  • GLexer: Fixed crash in #9
  • GPage: dont print page content at startup
  • GInterpreter: eval TD operator and fixed wrong math for all text positioning operators
  • GInterpreter: eval Tc operator
  • GInterpreter: eval Tw operator and fixed #10

PEP v0.20 alpha release

22 Jan 02:31
Compare
Choose a tag to compare

Changelog:

  • Some bugs fixed based on the GitHub issues

PEP v0.19 alpha release

16 Jan 10:17
Compare
Choose a tag to compare

PEP is still in alpha, so you may encounter frequent bugs, such as text rendering issues, crashes, lag, etc.

Instead of implementing all PDF features one by one according to the PDF specification. I prefer to take a simple try-and-error approach. This approach works as follows:

  • You simply try opening some PDFs and see if PEP works for them.
  • Report back with your PDF and a simple comments
  • I will try to pick up your problems and fix them.
  • Then new versions of PEP will be released.

I recommend that you only open simple PDF files for now, so that PEP can handle them properly. And the most important thing, if you feel good to share your PDF file while you think PEP has bugs to deal with, just click the "Report Bug" button below (you need a Github account), it will direct you to the issue tracker website, there you can upload your PDF and write some comments. Thank you for helping me to improve the project.

Good luck and have fun.

-aaron

PEP v0.18 alpha release

21 Dec 06:10
Compare
Choose a tag to compare

What's in this alpha:

  • Can edit text with custom fonts and save the sample as PDF