Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
I am excited to let people know PEP just released the first alpha version.

Although this is a prototype version, it is still important for PEP, because we now have a rough PDF text editor, and
it's able to save as new PDF.

Check out the download page at the official site: https://macpep.org/
 
  • Like
Reactions: MrUNIMOG
And Today, the third alpha released. We are moving forward.

This alpha focus on the text editor with this functions:
  • Adding text
  • Deleting text
  • Auto word wrap (a.k.a line breaks)
Check it out here.
 
This time, I release a v0.13 alpha as a demo to edit a sample pdf. Although the performance is slow, I am working on speeding up the editing process. But if you still like some demo, it's here.

https://macpep.org/download

BTW, the alpha was code signed, you can now run it instantly on macOS.
 
*Catalina required.
Yep, Actually it does not require Catalina, because I did not want to test other macOS, so just build for Catalina, it's easy to make PEP running on previous macOS. Since I will update this app frequently, so It just makes me easy to just build for Catalina.
 
OK…what feedback do you want? I'm in Mojave. PEP runs and opens the sample document but I can't open a different document or create a new document.
yeah, that's right, currently you can only edit the sample PDF and save it. Any feedbacks is welcome thought.
 
Just release alpha v01.6 which include a tab view, toolbar view, and a Text, Image tool.

https://macpep.org/download


Screen Shot 2020-11-16 at 6.46.06 PM.png
 
Sounds interesting...

Is it possible to have multi-core support for rendering the PDF?
Is it possible to have an improved/larger RAM cache (at least compared to Preview)?

My biggest beefs with PDF are:
1) Taking ages to render complex pages (and only using one core/thread to do so!).
2) Having to re-render previously rendered areas of a document when scrolling around (instead of holding them in RAM!)

PDFs seem like a perfect thing to render in multicore! Is it possible? And the abysmal RAM cache of Preview is inexcusable...
 
Sounds interesting...

Is it possible to have multi-core support for rendering the PDF?
Is it possible to have an improved/larger RAM cache (at least compared to Preview)?

My biggest beefs with PDF are:
1) Taking ages to render complex pages (and only using one core/thread to do so!).
2) Having to re-render previously rendered areas of a document when scrolling around (instead of holding them in RAM!)

PDFs seem like a perfect thing to render in multicore! Is it possible? And the abysmal RAM cache of Preview is inexcusable...

Hi, fun questions.

1). I did not test complex pages by now, but the rendering is done by using macOS's core graphic, and that's to say almost all actions are done by the GPU. Strictly speaking, some CPU calculation are done before GPU rendering, but if
you did not edit the PDF page, all the CPU calculation result are cached in RAM, so I assume that the rendering speed are fast enough for large/complex PDF pages.

2). PEP will not always re-render previous pages, we just render the pages which are dirty, while scrolling. By dirty, I mean the pages which are in visible rectangle of the window view, so the scrolling will be fast enough too.

BTW, PEP is aimed to be fast, lightweight, we won't be another Acrobat, which is fat, slow. :)
 
  • Like
Reactions: Spectrum
I would be happy to try it... once it allows me to open/save my own PDFs.
You would be able to open/save your own PDFs soon, I am testing this feature, but it would be bugy because we need your feedback for this feature.

Just watch this thread or follow my Twitter, I will post new updates for this feature soon.
 
Last edited:
PEP v0.21 alpha.

We have been fixed a lot of bugs, and made PEP more stable.

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
Download: https://macpep.org/download

Join Our Discord to chat with the community.
 
PEP v0.22 alpha.

This is a regular alpha update with some bug fixes.

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


Download: https://macpep.org/download

Join Our Discord to chat with the community.
 
PEP v0.23 alpha.

This is a regular alpha update with some bug fixes.

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


Download: https://macpep.org/download

Join Our Discord to chat with the community.
 
  • Like
Reactions: MrUNIMOG
PEP v0.24 release (Text Editor Redesign)

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

Download: https://macpep.org/download
Join Our Discord to chat with the community.
 
PEP v0.25 alpha released (Improve live scrolling performance a lot )

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
Download: https://macpep.org/download

Join Our Discord to chat with the community.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.