Skip to content

Commit

Permalink
Merge pull request #220 from metanorma/update
Browse files Browse the repository at this point in the history
updated for #214
  • Loading branch information
Intelligent2013 authored Jul 2, 2023
2 parents e51c71a + 106da5b commit ecfe55a
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 16 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ SHELL ?= /bin/bash
endif

#JAR_VERSION := $(shell mvn -q -Dexec.executable="echo" -Dexec.args='$${project.version}' --non-recursive exec:exec -DforceStdout)
JAR_VERSION := 1.76
JAR_VERSION := 1.77
JAR_FILE := mn2pdf-$(JAR_VERSION).jar

all: target/$(JAR_FILE)
Expand Down
6 changes: 3 additions & 3 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ Update version in `pom.xml`, e.g.:
----
<groupId>org.metanorma.fop</groupId>
<artifactId>mn2pdf</artifactId>
<version>1.76</version>
<version>1.77</version>
<name>Metanorma XML to PDF converter</name>
----

Expand All @@ -111,8 +111,8 @@ Tag the same version in Git:

[source,xml]
----
git tag v1.76
git push origin v1.76
git tag v1.77
git push origin v1.77
----

Then the corresponding GitHub release will be automatically created at:
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.metanorma.fop</groupId>
<artifactId>mn2pdf</artifactId>
<version>1.76</version>
<version>1.77</version>
<name>Metanorma XML to PDF converter</name>
<packaging>jar</packaging>
<url>https://www.metanorma.org</url>
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/org/metanorma/fop/PDFGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -826,7 +826,10 @@ private String addHiddenMath(String sourceXML) {
InputSource inputSource = new InputSource( new StringReader(sourceXML));
saxParser.parse(inputSource, fopIFHiddenMathHandler);
sourceXML = null;
StringBuilder result = fopIFHiddenMathHandler.getResultedXML();
//StringBuilder result = fopIFHiddenMathHandler.getResultedXML();
String result = fopIFHiddenMathHandler.getResultedXML();
//System.out.println("result string length: " + result.length());
//System.out.println("result string capacity: " + result.capacity());
fopIFHiddenMathHandler = null;
Profiler.printProcessingTime(methodName, startMethodTime);
Profiler.removeMethodCall();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ public class FOPIFHiddenMathHandler extends DefaultHandler {

private final Character SIGN_GREATER = '>';

private StringBuilder sbResult = new StringBuilder();
//private StringBuilder sbResult = new StringBuilder();
private List<String> listResult = new ArrayList<>();

private String rootXMLNS = "";

Expand All @@ -57,7 +58,8 @@ public class FOPIFHiddenMathHandler extends DefaultHandler {

@Override
public void startDocument() {
sbResult.append(XMLHEADER);
//sbResult.append(XMLHEADER);
listResult.add(XMLHEADER);
}

@Override
Expand Down Expand Up @@ -113,7 +115,8 @@ private void copyStartElement(String qName, Attributes attr) {
if (isViewportProcessing) {
sbViewport.append(sbTmp.toString());
} else {
sbResult.append(sbTmp.toString());
//sbResult.append(sbTmp.toString());
listResult.add(sbTmp.toString());
}
}

Expand Down Expand Up @@ -176,22 +179,26 @@ public void endElement(String uri, String localName, String qName) throws SAXExc
transformer.transform(sourceXML, sr);
String xmlResult = resultWriter.toString();

sbResult.append(xmlResult);
//sbResult.append(xmlResult);
listResult.add(xmlResult);
} catch (Exception ex) {
logger.severe(ex.toString());
sbResult.append(strViewport);
//sbResult.append(strViewport);
listResult.add(strViewport);
}

} else {
sbResult.append(strViewport);
//sbResult.append(strViewport);
listResult.add(strViewport);
}
sbViewport.setLength(0);
}
} else {
if (qName.equals("page-sequence")) {
mapInstreamForeignObjects.clear();
}
copyEndElement(qName, sbResult);
//copyEndElement(qName, sbResult);
copyEndElement(qName, listResult);
}
previousElement = qName;
}
Expand All @@ -206,6 +213,20 @@ private void copyEndElement(String qName, StringBuilder sb) {
}
stackChar.pop();
}
private void copyEndElement(String qName, List<String> list) {
if (!stackChar.isEmpty() && stackChar.peek().compareTo(SIGN_GREATER) == 0) {
//sb.append("/>");
list.add("/>");
} else {
//sb.append("</");
//sb.append(qName);
//sb.append(">");
list.add("</");
list.add(qName);
list.add(">");
}
stackChar.pop();
}

@Override
public void characters(char character[], int start, int length) throws SAXException {
Expand All @@ -217,8 +238,10 @@ public void characters(char character[], int start, int length) throws SAXExcept
updateStackChar(sbViewport);
sbViewport.append(str);
} else {
updateStackChar(sbResult);
sbResult.append(str);
//updateStackChar(sbResult);
updateStackChar(listResult);
//sbResult.append(str);
listResult.add(str);
}
}
}
Expand All @@ -230,9 +253,32 @@ private void updateStackChar(StringBuilder sb) {
}
}

public StringBuilder getResultedXML() {
private void updateStackChar(List<String> list) {
if (!stackChar.isEmpty() && stackChar.peek().compareTo(SIGN_GREATER) == 0) {
list.add(stackChar.pop().toString());
stackChar.push(Character.MIN_VALUE);
}
}

/*public StringBuilder getResultedXML() {
//return sbResult.toString(); // /~https://github.com/metanorma/mn2pdf/issues/214#issuecomment-1599200350
return sbResult;
}*/

public String getResultedXML() {
if (listResult.size() == 0) {
return "";
}
int size = 0;
for (String item: listResult) {
size += item.length();
}
StringBuilder sbResult = new StringBuilder(size);
for (String item: listResult) {
sbResult.append(item);
}
listResult.clear();
return sbResult.toString();
}

}

0 comments on commit ecfe55a

Please sign in to comment.