Files

232 lines
34 KiB
Plaintext
Raw Permalink Normal View History

Episode: 2771
Title: HPR2771: Embedding hidden text in Djvu files
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr2771/hpr2771.mp3
Transcribed: 2025-10-19 16:39:40
---
This is HPR Episode 2,771 entitled, embedding given text in DKVU files.
It is posted by Klaatu and is about 41 minutes long and can rim a clean flag.
The summary is part 2 of Klaatu DKVU miniseries.
This episode of HPR is brought to you by an honesthost.com.
Get 15% discount on all shared hosting with the offer code HPR15.
That's HPR15.
Better web hosting that's honest and fair at An Honesthost.com.
Hey everybody, you're listening to DKVU Radio.
This is Klaatu and this is an episode about Deja Vu.
Remember way back in episode 2767 I was talking about Deja Vu.
And Deja Vu, if you don't remember, is a paperless document format.
It is a way to put images into sort of a bundle together.
So you have pages of a document that are individual images.
And it has storage for metadata and things like that.
So you could apply a bookmark list like an outline to your Deja Vu file.
And I also mentioned in that episode that there was a way to embed text into a Deja Vu.
But I'd never had the occasion to do that.
And so I wasn't going to cover it.
But that if I ever had the occasion to do it, I would certainly let you know.
Guess what?
I had the occasion to do that.
And so I'm letting you know how to do it.
And there's another in the previous episode 2767.
I talked about manually building one of these things.
That at Deja Vu file using as you'll recall CJB2 and C44 to encode your images into Deja Vu files into individual Deja Vu files.
And then DJVM to take a group of one or more Deja Vu files and bundle it into a multi-page document.
You may recall that I kind of mentioned at the end of that episode that it was all a very manual process.
And it might, I think I mentioned this.
I meant to mention if I didn't at the end of that episode that it was a manual process that the way I'd done it and that there are certain conveniences on your operating system or your set of applications of choice.
That probably don't favor Deja Vu and instead favor more popular paperless document formats like, well, the portable document format called PDF.
So it's a little bit of a, it can be difficult to get really sort of entrenched into Deja Vu because everything sort of defaulting to PDF.
And I have something to say about that and a tool to help you navigate around that.
So first we're going to talk about the manual method of applying text to a Deja Vu file.
This process is not difficult.
It is simply very, very manual.
That said, it's kind of an assumption that I'm, that I'm making here that in order, if you're making a document filled with images and want to embed text into it, the process of embedding, of getting that text at all is going to be sort of manual.
In other words, in order to get text out of an image, you have to transcribe it or run it through an OCR program or something like that and then you have to process it after the OCR.
So this is building something from the ground up.
There still is not an option that I'm aware of where you could say go into Libre office, type a document, full of text and then say, okay, I want to save this as a Deja Vu document and just do an export to Deja Vu.
But there's a huge argument, I think, against wanting to do that at all.
I don't believe that would be necessarily the correct use case of a Deja Vu format.
If you're saving a document where the central object of that document is of a text, then I don't think there is a reason to use Deja Vu.
In other words, why would you render a bitmap image of the text and then embed the text behind the image?
That's not the intended use case I don't think.
Of Deja Vu, better for your purposes would probably be EPUB or if you're printing, then obviously post script or PDF, something like that would make a lot of sense for you.
Otherwise, maybe plain text, who knows, or just maybe just its native format, which is ODT.
So here's how to do what we are doing.
So if you've got a, maybe a historical document or something, maybe calligraphy or something, something quite beautiful that you've done, but you also want there to be embedded text associated with that image, then you need two things.
You need one, the Deja Vu files, the images that are going to be the front facing presentation, and then you need a text, the text representation of the data contained in that file.
So you need the text, the transcript, whatever you want to call it.
And here's where it starts to get complicated.
So embedding text in an image, generally, or quite probably, you want to associate specific words with specific text words,
specific strings, with the image of the word in the image.
So in other words, if you have a very beautiful thing that you've written, and you've scanned it in, and it contains the words, hello world.
That's your Deja Vu file, right?
You've scanned it in, you've converted it to Deja Vu as detailed in the previous episode, 2767, and now you've got this image file that says hello world on it.
And you want to embed hidden text in the Deja Vu terminology, hidden text, such that if someone selects the region of hello, then they get the word hello in their clipboard, or if they select the region of world, and then they get world in their clipboard, or if they select a region containing both, then they get the string hello world in their clipboard.
So they can click in their little clipboard viewer manager and see the actual text behind the Deja Vu image as it were.
In order for that to happen, you're talking about bit mapping, right? You need to calculate where exactly the word hello, for instance, is within your image.
In other words, you need the bounding box of the word. You need to know when in the GUI, when someone is selecting has encompassed a certain group of pixels, what they're actually trying to do is grab the ASCII text, hello world, or both.
Now you can get that granular with Deja Vu files, you can define regions per word, that is a lot of work, and you can cheat by defining lines instead, and I find that to be a lot more tolerable in terms of how much time and effort I'm spending on any one thing.
So I'm going to go over how to define the lines, the area of lines, rather than per word, although essentially it's the same thing.
Now the most reasonable way that I can think to do this, and you don't have to do it this way, but I find that this is the most realistic way.
Unless you're defining literally one word, or maybe one line, but honestly even then I feel like I'd probably just do it the way that I'm going to show you.
You can do it all in one command, but the way that I do it is I define a script file, or a Deja Vu said what it would be a script file, not a complex file, and you can start with just in any old text file.
Now you can also, if you have on hand a Deja Vu with embedded text, then you can extract the contents of that file, and then sort of use that as a baseline, or sort of a template.
But honestly I've done that now, so I'll put this in the show notes, and you can just use that if you want.
Start out, I think it's just a good practice to begin with three preliminary commands, which is select, and then semicolon, and then remove-ant, and then remove-txt.
And what those do is one selects the document, the next one removes annotations, remove-ant is removing annotations, and then remove-txt removes any existing hidden text from that file.
I think that's probably just a good practice to make sure that you're not muddling up your Deja Vu file, and then there's a set of stanzas that you are going to repeat for each line, or rather for each page, rather.
So the first part of the stanza is that you have to select a page that you were talking about.
Syntax for that is, for instance, select page 004.Deja Vu, and by page, I mean like whatever your pages are called inside the Deja Vu file, so maybe p004.Deja Vu.
Now, unless you're doing this at the exact moment of creation of the document, you may not know all of the names of the pages that you need to manipulate.
That's okay, you can get a list of all Deja Vu documents within a document within a bundle.
With Deja Vu said, so it's DJ, V, U, S, E, D, all one string space, dash E to execute a command, and then single-quote select semicolon LS, close single-quote, and then the name of the Deja Vu file.
So I'm doing Deja Vu said, dash E, quote select, semicolon LS, close semicolon, test.deja Vu, and I get a 68-page document, or a 68-item list in my terminal.
Listing each page number. Now, they're all named quite logically p001.Deja Vu, p002.Deja Vu, and so on, that won't necessarily be the case for you. Maybe you didn't name them that way. Maybe you bundled them in a different order than sort of their natural order.
That's okay, just keep that in mind. Keep in mind that your script that you're building to embed your text requires the name of the page rather than just the page number.
Okay, so going back to our little file here. So we have a select, and then quote p004.Deja Vu, close quote, so that's selecting what we know to be page 4, and then the command set dash TXT.
After that command comes the data that you want to use with your command. So this is sort of a Lispy kind of syntax, and it is open parenthesis page or bracket, rounded bracket, if you call it that. It's a parenthesis to me.
So open parenthesis and then the word page because you are defining a page here, and then the x minimum and the y minimum value, and then the x maximum and the y maximum value. What does that mean? Don't worry I'm going to tell you, it means that you're probably going to have 0 and 0 at the beginning. That's going to be your first two numbers because your least, the least value you will ever have in x is 0.
So that's the bottom left of your bounding box for the page. You were defining the area of a page. So that's 0 and 0, meaning you're now at the bottom left. Now quite probably that is very different than what you are used to. Certainly me, if I think about all graphic applications I've ever used, I'm pretty sure I feel like the origin point is the top left, and then you sort of descend down the page from there.
So your x value is to the right, your y value is down as it increases. That's kind of what I'm used to. Maybe I'm lying to myself and I think that that's what I'm used to when actually I'm used to other things as well, but that's kind of in my head. That's how it works.
Now sometimes you will find an application that does the origin point at dead center, but I feel like normally it goes top left.
Dejavu, or at least Dejavu said, it says that the bottom left is your origin point. So you have defined 0 and 0 as your minimum values. That is as far to the bottom and to the left as Dejavu said can go and still be on the page.
And then we're going to set values for the maximum values. And I'm going to use something simple and fairly small just so that we can, so we can talk about numbers and not really have to think too much about them.
So I'm going to pretend like my document is 1000 pixels wide and 1000 pixels tall. We'll just go with that. So for our x, our x maximum, we're going to put 1000 and then for my y maximum, I'm going to put 1000.
So once again, Dejavu said can go 0, 0 to the left and down and still be on the page. And then it can go 1000 pixels over and 1000 pixels up and still be on what we consider a page.
Okay, so we don't close the parentheses. Don't do that because we're still on the page, right? So next line will open a new parentheses and we'll do, we'll do this by line.
Now you can do this by word, but it's just too, that's too much data for me to, to bother with. I figure if someone wants a word out of a line, then they can just grab the whole line and edit it down themselves. That's my theory on this.
So we'll open a parentheses and type in the word line. Now again, you can, you can actually define several different kinds of data, data types. There are words. There are characters. You can get down to the character level.
You can do it by line. You can, I think, do it by paragraph, by region, just kind of like, you know, if you want that whole, if you, if you want the text on this page, you're going to, if you select within this hot spot, you're going to get the whole region by my definition. That's fine. You can do that. Not a problem.
And that's handy because you can also define, I'm not going to go over it in this episode. I don't think, but you can define hyperlinks this way so that you can link back and forth between pages within deja vu.
Okay. So the thing that we need here is once again, we need X minimum, Y minimum, X maximum, Y maximum.
And the way that I've been doing this is I open up a page in a little program called MT paint. MT paint is a really small application. That's kind of why I'm using it for this. It is a really, really basic. Well, I wouldn't say really basic, but it's, it's pretty basic. It's, it's really, it kind of excels, I would say, at pixel art.
And that's just kind of what it does. So I've been using it to look at the files, especially since they are kind of weird bitmap version or bitmap formats like PBM and PNM.
I'm, oh, I'm opening those up in MT paint. I throw a grid over it. And the grid is, is easily adjustable in MT paint.
And then I just use the grid to count up from the bottom of the page and then over. And, and I use those as my coordinates. And I'm doing this pretty, pretty, pretty roughly, really.
I don't, I don't get down to, you know, I work in values of a hundred. And, and I just, I go with it. I just, I don't care.
I don't care. Now, you might have to get a little bit lower than a hundred if you're doing like a text, a page filled filled with text, light lines and lines of text. And you want to get down to the line level.
If you're just doing paragraphs, though, blocks of a hundred should be fine. So if you do happen to be using MT paint, that is MT paint.sourgeforge.net.
It, it is Mark Tyler is, is a guy who wrote this thing for based on GTK plus toolkit version one and two runs on PC's due to its efficient design. It can run on older PC hardware down to 200 megahertz CPU and 16 megabytes of free RAM.
So yeah, it's a, it's a pretty small little application, pretty easy to build, pretty quick to build, doesn't have any real, real major requirements. It's, it's, it's pretty nice. So that's MT paint.sourgeforge.net. You should check it out.
So if you haven't been using that, then you can open your, your bit, bit map in MT paint and then go up to view down to configure grid, give your grid, whatever kind of color you think will help you see it best. That's quite handy feature right there.
And then set the tile width to 100 and the tile height to 100, click OK. And then you are looking at a grid overlaid on your document. Now remember to start from the bottom. That's the most, that's the thing that I, especially initially I kept forgetting to do.
So, so if I, if I just count up to the word hello, then I can do, OK, so that's 102, 3, 4, 5, 6, 7, 8. So that is, that's the 800 block is where I am.
And I'm just going to actually use the selection tool within MT paint to kind of mark exactly where, where I need to be. So that's, that's the, the whole phrase hello world. And I'm just doing it again by line. So that's 102, 3, 4, 5, 6 actually.
So that's 600 is the, the barest minimum 600 by that, and that's the Y value and then 100 in. So I need to set my document to 100 minimum is X, X minimum is 100. And then Y minimum is 600, because that's where we're starting.
So what you kind of have to think in terms of bottom bottom left corners of quadrants, except for your X maximum and Y maximum, which again, I've just kind of drawn this box so that I can keep track where I am, but that's fine. So that's 123456789 is my X maximum 900.
And then, yeah, that's my X. Okay. So then 1234567800 is the Y maximum. So I've got 100, 600, 900, 800. It's really, really bad array. If you ask me, it's really difficult to kind of wrap your head around the logic of that mixing the X and the Y like that.
It's just for me, that's difficult, but maybe for you, it'll come naturally. And then we can close our parentheses. Oh, no, sorry. Then we open quote. Hello world is the text that we want the user to to get back if they select that region. Right. So hello world. And then close parentheses, close parentheses.
Okay. That's that that closes the line and it closes the page. And then we do a single dot on its own line to sort of bring that stands to a close. I think I haven't been able to find an exact definition of of the syntax, but every example that I have found.
That's kind of how it works. So then you open if you if you have more text to do, then you're another page rather to do, then you can open the next, the next document or the next, yeah, the next DJ, the deja vu file or the next deja vu.
Yeah, file within the bundle, right. So select space quote p zero zero zero five dot deja vu close quote. Next line set text again and then open parentheses page zero zero. And then it's the same page size because I've kept consistent.
So one thousand and one thousand. And then you would go back, you know, you would load that page into empty paint. You would find a line that you want to set as selectable essentially.
And let's let's assume that it starts at I don't know why would it start anywhere else really, but let's let's pretend and that is one of the good things like if if you're doing text, it does start to get a little bit predictable, you know, you kind of get this sense for where the text is going to actually start.
And so the numbers, the numbers get easier to calculate after a while. And I feel pretty confident that the that the 100 block for my X minimum is fine, but let's pretend like the text starts a little bit lower on this page. So one, two, three, four.
We'll say 400 for the Y minimum. So it's the bottom of the the cell that it that it intersects with. And then we'll do the same or rather we'll do one, two, three, four, five, six, hundred for the Y.
So that's the second number. And then we'll do the same number for the X maximum. So it's 100, 400, 900, 600. And that moves us down a little bit down the page.
And we'll pretend like that said hacker, happy radio.
And that's it. I don't think we even need the the final dot for that one.
Okay, so now we have a little we have this my file that D said DSED is the extension that they seem to use for deja vu said.
And we can apply that to our file by doing by issuing the command deja vu said that's DJ VUSED space dash F for file.
So this is the file from which it is going to run a script. So we'll just do a dot slash my file D said that's what we just created.
And then the dash S to save. And then test dot deja vu set or test dot deja vu is the test file that I've been using.
And it looks like it works. Now if you get feedback from that saying that there's a syntax error or something like that. Open up your script, check your parentheses, check your quotation marks and and try again.
Nine times out of ten. It's your your parentheses or your quotation marks using an editor of that kind of
manages or at least tracks parentheses for you helps a lot.
And that's the workflow. That is how you can set you map out from the bottom left. You map out the locations of either each word or each character, reach line, reach paragraph, reach general region.
You want to set as a hit box and then and then you set the text that sort of quote unquote appears in that hit box.
And remember that the hit box it's not you know the text that you're stuffing inside of a hit box does not does not relate to the size of the hit box necessarily.
You can have you can have a region that is that is that it's a bounding box for for three words and put six words in there if you want.
I don't know why you would want to but but you could you know it doesn't have to fit the text it just it just needs to be the spot that you want when people select that spot they get back some string of text.
Okay so we've done that we've done that manually now not not a whole lot of fun admittedly there is another way.
And this other way is with a tool called deja vu digital and this this doesn't just apply to hidden text this actually applies to quite a lot of you know around deja vu.
So as I said a couple of times now there are just aren't any tools built with deja vu as as an anticipatable target.
They don't think that you're going to export to deja vu they're not going to save as deja vu it just doesn't exist that workflow is not popular enough to justify people programming into their applications.
So that is not going to be found probably really anywhere I mean maybe you'll find it somewhere but don't don't count on it.
So certainly we all know that if you go up to almost any print menu at least on a Linux machine that you can then go to print and you can print the page or the document or the you know whatever you're looking at out as a PDF.
And it does a pretty darn good job of encapsulating everything that you want within a documents inside of that document it just that's part of what it does right it it grabs the text and it places it into a PDF and a lot of times it brings the text in as I guess hidden text within that file.
So or maybe you're not even creating the PDF maybe you are inheriting a PDF with the text embedded into it because someone's already done the manual labor to make everything appear there.
Now there is a tool called deja vu digital deja vu digital is meant to convert a PDF to deja vu part and parcel so it takes the bookmarks or the outline it takes the hidden text and it takes the images and just makes it into a deja vu file.
Does it work 100% all of the time no not all the time sometimes your deja vu is is grossly larger than the PDF file size wise or maybe it dropped some hidden text it couldn't keep track of where the text was supposed to be in the file and so it dropped it.
So it's not a perfect solution but it is something if you're trying to use deja vu more frequently it is something that you might be able to use to convert something that is easy to get out of an application.
For you by printing to PDF convert that to deja vu quickly easily without really thinking about it and it comes with deja vu Libre the tool chain for deja vu work but it is not out of the box functional that seems odd right well it is odd and it's a little bit annoying but it's down to licensing the ghost script plugin released by AT&T
to manipulate the deja vu file format is licensed under the CPL the CPL has demands that go against the demands of the GPL which ghost script is licensed under so the deja vu people the deja vu Libre people cannot release a build of ghost script deja vu because if they were to do that they would be unable to fulfill the CPL requirements they can't do both
their default licenses the GPL so they're releasing as much as they have under the GPL with a link to where you can go get the G.S. deja vu plugin the ghost script plugin in other words you have to you have to compile this yourself it's not a difficult compile I've done it on two systems it was very simple they have a very very good build script that helps you through the process so it really is not a bad if you know
in terms of getting this done this is probably the best the best possible scenario to be honest it's it's quite nicely done okay so let's talk about how to do that in I don't know six easy steps so zero first you have to prepare your system for development right you you have to get your computer ready to compile code if if your computer did not come with software building tools pre installed you need those on your on your system
if you're using slackware you've already got it if you're using fedora you can do something like pseudo df group install at c dash development that should bring in all the gcc stuff that you need I think on a boom to you can do a pseudo apt get install or maybe just apt now apt install build dash essential that should do it so those are big downloads like gigabyte to gigabyte type downloads that that'll
put a lot of stuff on your computer and it's all all the compilers and code building stuff that you need so that's step zero next step step one you have to download go script deja vu that is GS DJ DJ VU so it's the driver for go script to be able to talk to deja vu you can get that from source forge dot net slash project slash deja vu slash files slash
slash GS D all capitals lowercase J capital V lowercase U slash currently 1.10 is the one well this is the one that you'll you'll look for so that's that's where you can get GS deja vu
keep in mind when you're on that page you're you're downloading GS deja vu not deja vu Libre presumably you already have deja vu Libre so you need GS deja vu I'm saying this because on the page the big bright green buttons sort of near the top
just gives you deja vu Libre so you need to go down to the file section on the page and look for the the specific the GS GS deja vu download which is in a folder like in a sub directory in this case again as of this recording it's 1.10 it doesn't change often so it'll probably be that for quite a while
so once you've downloaded that you move on to step 2 and step 2 is to unarchive the file that you've just downloaded you can do that that's easy tar xvf or if you prefer the long options tar dash dash extract dash dash file GS deja vu dash 1.10 dot tar dot GZ and then go ahead and CD into that directory so CD GS deja vu dash 1.10
hey third step is to create a directory called build all capital letters that is sort of hard coded into the expectations of the build script so don't don't get creative don't get lazy I sometimes just create like if I'm doing C++ stuff I just create a directory called B or BLD because the vowels are too much trouble to no don't do that build all capital letters and then again CD into build
next step what are we on for now you need to download the additional source packages that you're going to need in order to actually compile this thing because it needs to compile against other libraries the absolute
this is all written out in the read me so you can get like links and stuff from the read me but you absolutely have to download ghost script you need that because it's going to compile against ghost script and once that in the same folder in the build folder all the other ones are optional specifically you need JPEG source you need lib png you need open JPEG and Z lib Z lib
if you don't download those into the build folder then the build script will look on your system to see if you have versions of that of that code on your system I happened to have versions of all of those things on my slackware system so I did not bother downloading them and it compiled fine
if you're not sure if you're nervous about it whatever download those get the exact versions that the read me file specifies download those into the build directory and then you'll be ready to go
okay so the next step I think we're on step five now right run this build script it is called build dash GS deja vu it is an excellent script it is a little bit interactive you'll have to answer some questions
I think it warns you that you're doing something that that cannot be redistributed you know this is the kind of thing that you're doing in the privacy of your own home no one will ask any questions as long as you keep it in your own home don't don't go redistributing this file because
it does not want you to do that the licenses you cannot comply with both licenses so you will not you are not able to redistribute this okay
once you've you've understood all that you can kind of go through the script and it'll it'll confirm a couple of things and then it'll build it doesn't take long and it really is a very smart little script it seems to do a lot of work on its own so just kind of sit back and let it go
now when it finishes you're ready for the sixth step or whatever we're on and yeah I think six steps right that's what I said no seven step I don't know
whatever step we're on now you this is it this is the last one and that's to install it you can install it anywhere in your path
if you don't know what your path is you can do an echo dollar sign path and pretty much find out
the place where I usually put it usually being the twice that the two times that I've done it but the place that I think it makes sense to be put is slash us
r slash local and I say that because slash us r slash local is kind of an area meant for you know to exist outside of your
package manager I mean it's not necessarily because some package managers actually do install the user local so it's kind of a
little bit of a fuzzy gray area and I don't think it's actually defined anywhere super you know really strictly
but I at least I the way I manage my user local is that I do tend to keep like the unofficial stuff in there.
You could also put it in the opt you could put it in your home folder somewhere you know just whatever you think is a valid
logical place for it to go as long as it's in your path pretty much works here's how I do it anyway sudo cp-r
build inst gs day day javu it is a directory that has just gotten built inside of the inst directory meaning the install directory
and then copy that to slash us r slash local slash for instance lib 64 lib if you're on 32 bit maybe lib if you're on a
system that doesn't use the 64 suffix I don't know and then you can see the end of slash user slash local slash bin
and do a pseudo ln dash s dot dot slash lib 64 gs day javu slash gs day javu space gs day javu
so you're linking a thing called gs day javu within user local bin so that's the executable to an actual thing
over in dot dot slash lib 64 or rather if I give absolute paths slash user slash local slash lib 64 slash gs
dj view slash gs dj dj view and then you're ready now you're ready to go if you execute the command day javu digital
against the pdf it will convert that pdf into a day javu file there are a couple of different options
that you'll want to keep track of or be aware of anyway there is a dash dash lines option
meaning that if you if you do the dash dash line it will it will pull out lines of text from from your pdf
and transfer them into into your day javu file so again that that extracts text from the post script code
and incorporates it into your day javu file
now if you do dash dash words that extracts text from the post script code and incorporate the information into your day javu file
recording the location of each and every word you may need to do that you may want to do that
you might have to play around a little bit depending on how the pdf was built and some of the idiosyncrasity is of the format
sometimes you'll lose a line if you just say hey just give me the lines don't worry about every word
so you'll have to play it by ear again I haven't I haven't done it all that often yet anyway myself
but it's something for you to look at and play around with and if you're if you do it and you find that maybe
that this word has gotten sort of lost in the mix or this line is missing or this whole paragraph is missing
then then do the dash dash words so the full command just to be clear is day javu digital let's say dash dash words
and then food dot pdf food dot day javu it's pretty verbose it will spit out a bunch of output into your terminal
let you know what it's doing and in the end you'll find a food dot day javu file with ideally hidden text in it
that you can select and copy and paste out of your day javu file rather logically so that if you're selecting a word in a file
you know you're selecting a graphical word you actually get the text of that word in your clipboard
so it makes it pretty easy is it weird at all you might wonder to use pdf as a way to get away from pdf
I think that's a valid question but I don't think it's necessarily the correct question all of the time
because sometimes you're you're you're only using pdf because that is what your applications are giving you
so if you have created a pdf and then you are finding yourself converting that pdf two day javu
it may seem silly until you realize that the applications that you have are giving you a pdf
like that's the that's the output that it provides you with so that's a valid reason to be using pdf as a stepping stone away from pdf
just because that's the only game in town right now that's what you get
but it's and it's worth it's worth noting I guess that sometimes pdf is is the format that you actually do want
day javu is not I don't think a a drop in replacement for pdf it does serve a different function
it it fills a different need and it would not make sense necessarily to convert everything to day javu
I mean just as much frankly as it doesn't really make sense to convert everything to pdf
it doesn't make sense to convert everything to day javu there are there are places for cbz
there are places for e pubs there are places for day javu and there's even a place for pdf
and it's called the print shop and it's also called when other people that you are dealing with in real life
to have nothing else installed except anything that reads pdf which is practically every application out there
and that's it I think that's everything I've got on day javu I hope it was helpful and informative
good luck if you're using day javu have a good time with it if you find out about any cool tools that I've not mentioned
please let me know I'm curious talking next time
you've been listening to hecka public radio at hecka public radio dot org
we are a community podcast network that releases shows every weekday Monday through Friday
today's show like all our shows was contributed by an hbr listener like yourself
if you ever thought of recording a podcast then click on our contributing to find out how easy it really is
hecka public radio was founded by the digital dog pound and the infonomicon computer club
and it's part of the binary revolution at bnreft.com
if you have comments on today's show please email the host directly leave a comment on the website or record a follow-up episode yourself
unless otherwise stated today's show is released on the creative comments, attribution, share a light, 3.0 license
you