From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id 0HprJrOZr19zIwAA0tVLHw (envelope-from ) for ; Sat, 14 Nov 2020 08:47:47 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id 0AtXIrOZr19yGwAA1q6Kng (envelope-from ) for ; Sat, 14 Nov 2020 08:47:47 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 3885D9403A9 for ; Sat, 14 Nov 2020 08:47:47 +0000 (UTC) Received: from localhost ([::1]:39920 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kdrDl-0001IN-Ry for larch@yhetil.org; Sat, 14 Nov 2020 03:47:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38224) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdrDP-0001I0-KX for emacs-orgmode@gnu.org; Sat, 14 Nov 2020 03:47:23 -0500 Received: from static.214.254.202.116.clients.your-server.de ([116.202.254.214]:35404 helo=ciao.gmane.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kdrDO-0003tP-1C for emacs-orgmode@gnu.org; Sat, 14 Nov 2020 03:47:23 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1kdrDJ-000AT2-CL for emacs-orgmode@gnu.org; Sat, 14 Nov 2020 09:47:17 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-orgmode@gnu.org From: Georges Ko Subject: Link to open PDF at a specific page Date: Sat, 14 Nov 2020 16:46:24 +0800 Organization: gko.net Message-ID: Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (windows-nt) Hamster/2.0.0.1 Cancel-Lock: sha1:bpPaU3+nH78yZ6RV43pJPgAA6hY= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geo-emacs-orgmode@m.gmane-mx.org; helo=ciao.gmane.io X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/14 03:47:19 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Scanner: ns3122888.ip-94-23-21.eu Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Spam-Score: -0.51 X-TUID: M7Mi/5Al0gNU Hi, I'd like to open a PDF file to a specific page from a link, using the default PDF viewer in Windows (same as w32-shell-execute "open"), which opens a browser. With a browser, I can open it with this HTML link: Page 4 This link as an Org mode link doesn't work: file:///c:/a/b/c/file.pdf#page=4 as "#page=4" is interpreted as part of the filename by w32-shell-execute. If I modify org-file-apps for PDF to: ("\\.pdf::\\([0-9]+\\)\\'" . "browser file:///%s#page=%1") and if the Org link is: file:///c:/a/b/c/file.pdf::4 it doesn't work because the argument passed to browser is: file:///"c:/a/b/c/file.pdf"#page=4 A quick workaround is to modify org-open-file by removing shell-quote-argument, from: (shell-quote-argument (convert-standard-filename file)) to (convert-standard-filename file) to get the following string, which correctly opens page 4. "file:///c:/a/b/c/file.pdf#page=4" If I export the file as HTML, it is output as: ... so I modified org-html-link from: (concat raw-path "#" (org-publish-resolve-external-link option path t)) to (concat raw-path "#" (let ((r (org-publish-resolve-external-link option path t))) (or (and (string= r "MissingReference") (string-match "\\.pdf\\'" path) (string-match "[0-9]+" option) (format "page=%s" option)) r))) which generates the wanted HTML link: ... Is there any way less quick & dirty to achieve this? Thanks!