Subject: bug#73530: [PATCH] Add imenu index function for Djvu files in doc-view

From: Visuwesh <[email-masked]>
Date: Thu, 03 Oct 2024 16:40:29 +0530

[வியாழன் அக்டோபர் 03, 2024] Tassilo Horn wrote:

> Tassilo Horn <[email-masked]> writes:
>
> Hi again,
>
>>> The PDF generated by LaTeX can have a wildly different outline than
>>> matched by doc-view's regexp:
>>>
>>>     % mutool show test.pdf outline
>>>     |	"Text"	#nameddest=section.1
>>>     |	"Annotations"	#nameddest=section.2
>>>
>>> Compare it with:
>>>
>>>     % mutool show atkins_physical_chemistry.pdf outline
>>>     |	"Cover"	#page=1&view=Fit
>>>     |	"PREFACE"	#page=7&view=Fit
>>>     |	"USING THE BOOK"	#page=8&view=Fit
>>
>> Ok, I see.  All my LaTeX PDFs have #nameddest=section.x values instead
>> of #page=X values, so that's the reason they don't work.  It would be
>> good if we could mention that it won't work because there are no page
>> references in the outline in the error message.
>
> Would you mind doing that in a new version of the patch?
>
> And I wonder if it mutool could spit out page references in addition to
> the nameddest references.  Do you know if there's a technical limitation
> or if it's just not implemented?

Unfortunately, I have no idea.  I actually don't use doc-view for PDF
files, only for docx and DjVu.

> Sadly, their communication platform seems to be Discord where I didn't
> want to register an account to ask.  They seem to use the ghostscript
> bugzilla, so one could create a ticket there...  If nobody else here in
> the discussion already has an account there, I wouldn't mind creating
> ony myself and asking.

If I cannot find anything in the man page, I can ask in their Discord.
I do have an account lying around, I can at least put it to good use.

Can this be done in another patch later on?  I am not sure if I will get
the time soon to follow up on this part of the problem.  It would be
cleaner if we open another bug report to track this too.

>>>> For DjVu, my sample size is 1, and that's a presentation, so at least
>>>> here I'm not sure if there should be an index available...
>>>
>>> I will send the link to the DjVu file that I wrote the feature for
>>> off-list.  I will send a link to a PDF file too.
>>
>> Thanks, will try with those two files.
>
> I did so now and it is blazingly fast for those 80+mb PDF/DjVu files
> even on my almost 10 years old laptop, so I'd say your simpler approach
> is the right choice.
>
>>> On this note, should we use doc-view-pdfdraw-program in place of
>>> mutool in doc-view--pdf-outline?
>>
>> Yes, but only if the older names pdfdraw and mudraw already had the
>> "show <file> outline" feature.
>
> I revert the "but only if" part.  If mupdf is old and comes with, e.g.,
> the pdfdraw executable, chances are almost zero that mutool is
> installed, too.  And if it is, then we should prefer it anywhere.  So I
> think the way to go is to (executable-find "mutool") in
> doc-view-pdfdraw-program first so that it takes precedence and use
> doc-view-pdfdraw-program in doc-view--pdf-outline.

OK, I will post a patch if you're okay with opening another bug report
for the nameddest PDF thingy.

>>>> Well, I actually have no strong opinion here.  Technically, I like
>>>> your approach better because of its simplicity.  I would like to test
>>>> with some larger documents to see how long index building takes,
>>>> though.
>>>
>>> I tried the function with a large PDF file:
>>
>> Will try with the large two you've linked later.
>
> As said above, it's more than fast enough, so let's take your approach.

Great, thank you for taking the time to test the patch.