svn commit: r1897193 - in /xmlgraphics/fop/trunk/fop-core/src: main/java/org/apache/fop/pdf/PDFFactory.java test/java/org/apache/fop/pdf/PDFLinkTestCase.java
[email protected] Wed, 19 Jan 2022 09:53:53 -0000
| Newsgroups | gmane.text.xml.fop.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: ssteiner
Date: Wed Jan 19 09:53:53 2022
New Revision: 1897193
URL: http://svn.apache.org/viewvc?rev=1897193&view=rev
Log:
FOP-2839: Links to pdf files with no scheme should open in pdf viewer
Modified:
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/pdf/PDFLinkTestCase.java
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java?rev=1897193&r1=1897192&r2=1897193&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java Wed Jan 19 09:53:53 2022
@@ -589,6 +589,9 @@ public class PDFFactory {
if (filename == null) {
filename = uri.getSchemeSpecificPart();
}
+ if (scheme == null && filename.toLowerCase().endsWith(".pdf")) {
+ scheme = "file";
+ }
if (scheme == null) {
return new PDFUri(uri.toASCIIString());
} else if (scheme.equalsIgnoreCase("embedded-file")) {
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/pdf/PDFLinkTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/pdf/PDFLinkTestCase.java?rev=1897193&r1=1897192&r2=1897193&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/pdf/PDFLinkTestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/pdf/PDFLinkTestCase.java Wed Jan 19 09:53:53 2022
@@ -123,12 +123,12 @@ public class PDFLinkTestCase {
{"/foo/bar 2.pdf", quote("<< /Type /Filespec /F (/foo/bar 2.pdf)")},
// PDF, Relative paths
- {"foobar.pdf", quote("<< /URI (foobar.pdf)")}, //34
- {"foo bar.pdf", quote("<< /URI (foo%20bar.pdf)")},
- {"./foobar.pdf", quote("<< /URI (./foobar.pdf)")},
- {"./foo bar.pdf", quote("<< /URI (./foo%20bar.pdf)")},
- {"../foobar.pdf", quote("<< /URI (../foobar.pdf)")},
- {"../foo bar.pdf", quote("<< /URI (../foo%20bar.pdf)")},
+ {"foobar.pdf", quote("<< /Type /Filespec /F (foobar.pdf)")}, //34
+ {"foo bar.pdf", quote("<< /Type /Filespec /F (foo bar.pdf)")},
+ {"./foobar.pdf", quote("<< /Type /Filespec /F (./foobar.pdf)")},
+ {"./foo bar.pdf", quote("<< /Type /Filespec /F (./foo bar.pdf)")},
+ {"../foobar.pdf", quote("<< /Type /Filespec /F (../foobar.pdf)")},
+ {"../foo bar.pdf", quote("<< /Type /Filespec /F (../foo bar.pdf)")},
// PDF, Windows network paths
{"\\\\foo\\bar.pdf", quote("<< /Type /Filespec /F (\\\\\\\\foo\\\\bar.pdf)")}, //40
@@ -165,12 +165,18 @@ public class PDFLinkTestCase {
+ quote("/D [ 2 /XYZ null null null ]")},
// PDF with fragments, Relative paths
- {"foobar.pdf#dest=aa", quote("<< /URI (foobar.pdf#dest=aa)")}, //55
- {"foo bar.pdf#page=2", quote("<< /URI (foo%20bar.pdf#page=2)")},
- {"./foobar.pdf#dest=aa", quote("<< /URI (./foobar.pdf#dest=aa)")},
- {"./foo bar.pdf#page=2", quote("<< /URI (./foo%20bar.pdf#page=2)")},
- {"../foobar.pdf#dest=aa", quote("<< /URI (../foobar.pdf#dest=aa)")},
- {"../foo bar.pdf#page=2", quote("<< /URI (../foo%20bar.pdf#page=2)")},
+ {"foobar.pdf#dest=aa", quote("<< /Type /Filespec /F (foobar.pdf)") + ".*" + quote("/S /GoToR") + ".*"
+ + quote("/D (aa)")}, //55
+ {"foo bar.pdf#page=2", quote("<< /Type /Filespec /F (foo bar.pdf)") + ".*" + quote("/S /GoToR") + ".*"
+ + quote("/D [ 2 /XYZ null null null ]")},
+ {"./foobar.pdf#dest=aa", quote("<< /Type /Filespec /F (./foobar.pdf)") + ".*" + quote("/S /GoToR")
+ + ".*" + quote("/D (aa)")},
+ {"./foo bar.pdf#page=2", quote("<< /Type /Filespec /F (./foo bar.pdf)") + ".*" + quote("/S /GoToR") + ".*"
+ + quote("/D [ 2 /XYZ null null null ]")},
+ {"../foobar.pdf#dest=aa", quote("<< /Type /Filespec /F (../foobar.pdf)") + ".*" + quote("/S /GoToR")
+ + ".*" + quote("/D (aa)")},
+ {"../foo bar.pdf#page=2", quote("<< /Type /Filespec /F (../foo bar.pdf)") + ".*" + quote("/S /GoToR") + ".*"
+ + quote("/D [ 2 /XYZ null null null ]")},
// PDF with fragments, Windows network paths
{"\\\\foo\\bar.pdf#dest=aa", quote("<< /Type /Filespec /F (\\\\\\\\foo\\\\bar.pdf)") + ".*"
@@ -393,7 +399,7 @@ public class PDFLinkTestCase {
{"file:examples.html", quote("<< /Type /Filespec /F (examples.html)")},
// parenthesis
- {"simple_report_(version2.pdf", quote("<< /URI (simple_report_\\(version2.pdf)")}
+ {"simple_report_(version2.pdf", quote("<< /Type /Filespec /F (simple_report_\\(version2.pdf)")}
});
}
@@ -415,6 +421,6 @@ public class PDFLinkTestCase {
Pattern r = Pattern.compile(expected);
Matcher m = r.matcher(outString);
- Assert.assertTrue(m.find());
+ Assert.assertTrue(target + " " + outString, m.find());
}
}