aboutsummaryrefslogtreecommitdiffstats
path: root/fop-core/src/main/java
diff options
context:
space:
mode:
authorSimon Steiner <ssteiner@apache.org>2024-09-18 13:16:21 +0100
committerSimon Steiner <ssteiner@apache.org>2024-09-18 13:16:21 +0100
commit7fcf3ca57185dac5fbf30874a64e5a047340d402 (patch)
tree56ae0056cacaee7689175b5eb4b634327b1d1051 /fop-core/src/main/java
parentdeb2c2cbc18790ed8ad17303f841a178441e1a6a (diff)
downloadxmlgraphics-fop-7fcf3ca57185dac5fbf30874a64e5a047340d402.tar.gz
xmlgraphics-fop-7fcf3ca57185dac5fbf30874a64e5a047340d402.zip
FOP-3207: Add warning when different pdf languages are used
Diffstat (limited to 'fop-core/src/main/java')
-rw-r--r--fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java4
-rw-r--r--fop-core/src/main/java/org/apache/fop/pdf/PDFRoot.java6
-rw-r--r--fop-core/src/main/java/org/apache/fop/render/pdf/PDFEventProducer.java10
3 files changed, 20 insertions, 0 deletions
diff --git a/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java b/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
index 40370f705..12a6c3e09 100644
--- a/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
+++ b/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
@@ -1707,4 +1707,8 @@ public class PDFFactory {
public void setEventBroadcaster(EventBroadcaster eventBroadcaster) {
this.eventBroadcaster = eventBroadcaster;
}
+
+ public EventBroadcaster getEventBroadcaster() {
+ return eventBroadcaster;
+ }
}
diff --git a/fop-core/src/main/java/org/apache/fop/pdf/PDFRoot.java b/fop-core/src/main/java/org/apache/fop/pdf/PDFRoot.java
index b230ad879..7b6038467 100644
--- a/fop-core/src/main/java/org/apache/fop/pdf/PDFRoot.java
+++ b/fop-core/src/main/java/org/apache/fop/pdf/PDFRoot.java
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.util.Locale;
+import org.apache.fop.render.pdf.PDFEventProducer;
import org.apache.fop.util.LanguageTags;
/**
@@ -287,6 +288,11 @@ public class PDFRoot extends PDFDictionary {
}
private void setLanguage(String lang) {
+ Object oldLang = get("Lang");
+ if (oldLang != null && !"x-unknown".equals(oldLang) && !lang.equals(oldLang)) {
+ PDFEventProducer eventProducer = PDFEventProducer.Provider.get(document.getFactory().getEventBroadcaster());
+ eventProducer.languageChanged(this, oldLang, lang);
+ }
put("Lang", lang);
}
diff --git a/fop-core/src/main/java/org/apache/fop/render/pdf/PDFEventProducer.java b/fop-core/src/main/java/org/apache/fop/render/pdf/PDFEventProducer.java
index 24d0eb0cf..b78b472c5 100644
--- a/fop-core/src/main/java/org/apache/fop/render/pdf/PDFEventProducer.java
+++ b/fop-core/src/main/java/org/apache/fop/render/pdf/PDFEventProducer.java
@@ -90,4 +90,14 @@ public interface PDFEventProducer extends EventProducer {
* @event.severity ERROR
*/
void unpairedSurrogate(Object source);
+
+ /**
+ * The language was changed between pages
+ *
+ * @param source the event source
+ * @param oldLang current language
+ * @param newLang new language
+ * @event.severity WARN
+ */
+ void languageChanged(Object source, Object oldLang, String newLang);
}