Генерация pdf на ubuntu 14.04 server
Генерация pdf на ubuntu 14.04 server
Здравствуйте, при генерации отчёта на серверной убунте(без графических пакетов) некорректно отображаються шрифты любого элемента(см вложение).
Есть предположение что для корректно генерации нужны какието дополнительные пакеты(пробовали на десктопной - там вроде генерились). Подскажите в этом ли причина, и какие пакеты нужно поставить, чтоб отображалось корректно?
Есть предположение что для корректно генерации нужны какието дополнительные пакеты(пробовали на десктопной - там вроде генерились). Подскажите в этом ли причина, и какие пакеты нужно поставить, чтоб отображалось корректно?
- Вложения
-
- incorrect.png (11.74 КБ) 7827 просмотров
Re: Генерация pdf на ubuntu 14.04 server
Здравствуйте.
В PDF задаётся ширина каждого символа, которая возвращается системой на основе данных из файлы шрифта.
Похоже, что проблема в отсутствии необходимых шрифтов с кириллицей.
Экспортируйте отчёт в PDF с включенной опцией Embedded Fonts и пришлите его нами для анализа.
Спасибо.
В PDF задаётся ширина каждого символа, которая возвращается системой на основе данных из файлы шрифта.
Похоже, что проблема в отсутствии необходимых шрифтов с кириллицей.
Экспортируйте отчёт в PDF с включенной опцией Embedded Fonts и пришлите его нами для анализа.
Спасибо.
Re: Генерация pdf на ubuntu 14.04 server
Прошу прощения за офтоп, у меня задача в общем схожая с вашей - генерация отчетов на стороне сервера. Мы выбрали изначально продукт Stimulsoft Reports.Fx for PHP, и уже разработали шаблоны документов, но эта версия идет только с клиентским генератором и теперь приходится разбираться как сделать на Java. К сожалению опыта разработки на Java совсем нет, и постоянно возникают трудности связанные с этим.muzuro писал(а):Здравствуйте, при генерации отчёта на серверной убунте(без графических пакетов) некорректно отображаються шрифты любого элемента(см вложение).
Есть предположение что для корректно генерации нужны какието дополнительные пакеты(пробовали на десктопной - там вроде генерились). Подскажите в этом ли причина, и какие пакеты нужно поставить, чтоб отображалось корректно?
Вопрос собственно в следующем - не могли бы вы поделится пилотным проектом который бы показал как и что подключать чтобы реализовать генерацию отчета по заданному шаблону mrt c возвратом pdf(например) документа.
Заранее благодарен.
Re: Генерация pdf на ubuntu 14.04 server
Здравствуйте,
Пожалуйста, посмотрите следующие разделы в нашей документации:
http://www.stimulsoft.com/ru/documentat ... eports.htm
http://www.stimulsoft.com/ru/documentat ... t_code.htm
Дайте знать если возникнут вопросы.
Спасибо.
Пожалуйста, посмотрите следующие разделы в нашей документации:
http://www.stimulsoft.com/ru/documentat ... eports.htm
http://www.stimulsoft.com/ru/documentat ... t_code.htm
Дайте знать если возникнут вопросы.
Спасибо.
Re: Генерация pdf на ubuntu 14.04 server
Пример сгенерированного на PHP отчета:
http://reports.storencash.com/index.php ... E3NTM5In0=
тут есть параметр spzSID=1
который используется в DataSources:
WHERE msus.spz_sid = '{spzSID}'
AND msus.ost > 0
GROUP BY
msus.id
ORDER BY snon.art
) as tmp</SqlCommand>
</List>
</DataSources>
Как мне добавить этот параметр в Java чтобы конвертер построил отчет так же как на php?
Пытался разными способами передать - никак не получается
Заранее благодарен.
http://reports.storencash.com/index.php ... E3NTM5In0=
тут есть параметр spzSID=1
который используется в DataSources:
WHERE msus.spz_sid = '{spzSID}'
AND msus.ost > 0
GROUP BY
msus.id
ORDER BY snon.art
) as tmp</SqlCommand>
</List>
</DataSources>
Как мне добавить этот параметр в Java чтобы конвертер построил отчет так же как на php?
Код: Выделить всё
renderReport.getDictionary().getDatabases().add(new StiMySqlDatabase("dbConnect", "dbConnect", "host=" + host + ";port=3306;database=" + domain + ";user=" + username + ";password=" + password + ";"));
StiVariablesCollection cv = new StiVariablesCollection();
cv.add("spzSID"); //добавляет в раздел Variables только значения value spzSID но не параметр
cv.add("spzSID1");
cv.add("spzSID2");
renderReport.getDictionary().getVariables().addAll(cv);
Заранее благодарен.
- Вложения
-
- testFile2.mrt
- (44.1 КБ) 532 скачивания
Re: Генерация pdf на ubuntu 14.04 server
Здравствуйте.
Вам нужно в отчете создать переменную (Variable) spzSID
Использовать её, как у вас уже готово, в sql-запросе ...WHERE msus.spz_sid = '{spzSID}'....
Пример использования переменных на JSP странице:
<%
Map<String, String> variableMap = new HashMap<String, String>();
variableMap.put("spzSID", request.getParameter("spzSID"));
request.setAttribute("map",variableMap);
%>
<stiviewerfx:iframe report="c:\0\params.mrt" variableMap="map"
width="100%" height="100%" align="top" scrolling="no" />
Вам нужно в отчете создать переменную (Variable) spzSID
Использовать её, как у вас уже готово, в sql-запросе ...WHERE msus.spz_sid = '{spzSID}'....
Пример использования переменных на JSP странице:
<%
Map<String, String> variableMap = new HashMap<String, String>();
variableMap.put("spzSID", request.getParameter("spzSID"));
request.setAttribute("map",variableMap);
%>
<stiviewerfx:iframe report="c:\0\params.mrt" variableMap="map"
width="100%" height="100%" align="top" scrolling="no" />
lexun писал(а):Пример сгенерированного на PHP отчета:
http://reports.storencash.com/index.php ... E3NTM5In0=
тут есть параметр spzSID=1
который используется в DataSources:
WHERE msus.spz_sid = '{spzSID}'
AND msus.ost > 0
GROUP BY
msus.id
ORDER BY snon.art
) as tmp</SqlCommand>
</List>
</DataSources>
Как мне добавить этот параметр в Java чтобы конвертер построил отчет так же как на php?Пытался разными способами передать - никак не получаетсяКод: Выделить всё
renderReport.getDictionary().getDatabases().add(new StiMySqlDatabase("dbConnect", "dbConnect", "host=" + host + ";port=3306;database=" + domain + ";user=" + username + ";password=" + password + ";")); StiVariablesCollection cv = new StiVariablesCollection(); cv.add("spzSID"); //добавляет в раздел Variables только значения value spzSID но не параметр cv.add("spzSID1"); cv.add("spzSID2"); renderReport.getDictionary().getVariables().addAll(cv);
Заранее благодарен.
Re: Генерация pdf на ubuntu 14.04 server
У меня есть готовый mrt - который генерируется на php, в него передается get параметр spzSID
так вот вопрос в том что у меня теперь отчет на Java строится на сервере а не на клиенте и мне нужно как-то передать этот параметр в шаблон, как это сделать на Java?
так вот вопрос в том что у меня теперь отчет на Java строится на сервере а не на клиенте и мне нужно как-то передать этот параметр в шаблон, как это сделать на Java?
Код: Выделить всё
//Сервлет генерирующий на сервере по указанному шаблону PDF документ
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
/**
* некий код
*/
StiReport renderReport = StiSerializeManager.deserializeReport(bis);
if (!mParams.isEmpty()) {
for (Map.Entry<String, String> entry : mParams.entrySet()) {
//Что-то нужно сделать чтобы передать в отчет переменные со значениями????
//renderReport.setVariable(entry.getKey(), entry.getValue());
}
}
renderReport.Render(false);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
StiPdfExportSettings settingsPdf = new StiPdfExportSettings();
response.setContentType("application/pdf; charset=cp1251");
StiExportManager.exportPdf(renderReport, settingsPdf, bos);
byte[] binaryData = bos.toByteArray();
response.addHeader("Content-Length", String.valueOf(binaryData.length));
StiIOUtil.writeInputStream(response.getOutputStream(), new ByteArrayInputStream(binaryData));
}
Re: Генерация pdf на ubuntu 14.04 server
Здравствуйте.
Вы можете использовать следующий пример кода:
report.getDictionary().getVariables().get("Variable1").setValue("3");
report.getVariables().put("Variable1", "3");
Вы можете использовать следующий пример кода:
report.getDictionary().getVariables().get("Variable1").setValue("3");
report.getVariables().put("Variable1", "3");
lexun писал(а):У меня есть готовый mrt - который генерируется на php, в него передается get параметр spzSID
так вот вопрос в том что у меня теперь отчет на Java строится на сервере а не на клиенте и мне нужно как-то передать этот параметр в шаблон, как это сделать на Java?Код: Выделить всё
//Сервлет генерирующий на сервере по указанному шаблону PDF документ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { /** * некий код */ StiReport renderReport = StiSerializeManager.deserializeReport(bis); if (!mParams.isEmpty()) { for (Map.Entry<String, String> entry : mParams.entrySet()) { //Что-то нужно сделать чтобы передать в отчет переменные со значениями???? //renderReport.setVariable(entry.getKey(), entry.getValue()); } } renderReport.Render(false); ByteArrayOutputStream bos = new ByteArrayOutputStream(); StiPdfExportSettings settingsPdf = new StiPdfExportSettings(); response.setContentType("application/pdf; charset=cp1251"); StiExportManager.exportPdf(renderReport, settingsPdf, bos); byte[] binaryData = bos.toByteArray(); response.addHeader("Content-Length", String.valueOf(binaryData.length)); StiIOUtil.writeInputStream(response.getOutputStream(), new ByteArrayInputStream(binaryData)); }
Re: Генерация pdf на ubuntu 14.04 server
Это рабочий отчет на PHP:
http://reports.storencash.com/index.php ... E3NTM5In0=
Это тот же отчет c попыткой формирования на Java (на сервере):
http://ec2-54-194-133-188.eu-west-1.com ... =&spzSID=1
Вот точно такой же отчет только без параметров:
http://ec2-54-194-133-188.eu-west-1.com ... =&spzSID=1
Такой же отчет без параметров но экспортированный в HTML:
http://ec2-54-194-133-188.eu-west-1.com ... =&spzSID=1
Тут видна еще проблема с кодировкой, но это следующая задача.
Ошибка формирования отчета с параметром:
http://reports.storencash.com/index.php ... E3NTM5In0=
Это тот же отчет c попыткой формирования на Java (на сервере):
http://ec2-54-194-133-188.eu-west-1.com ... =&spzSID=1
Вот точно такой же отчет только без параметров:
http://ec2-54-194-133-188.eu-west-1.com ... =&spzSID=1
Такой же отчет без параметров но экспортированный в HTML:
http://ec2-54-194-133-188.eu-west-1.com ... =&spzSID=1
Тут видна еще проблема с кодировкой, но это следующая задача.
Ошибка формирования отчета с параметром:
Код: Выделить всё
java.lang.RuntimeException: com.stimulsoft.base.exception.StiException: StiJDBCDatabase [connectionString=host=localhost;port=3306;database=***;user=***;password=***;, promptUserNameAndPassword=false, url=jdbc:mysql://localhost:3306/***, user=***, password=***, driver=com.mysql.jdbc.Driver, other={}]
at com.stimulsoft.report.dictionary.StiDictionary.connect(StiDictionary.java:1218)
at com.stimulsoft.report.engine.engineV2.StiRenderProviderV2.ConnectToData(StiRenderProviderV2.java:387)
at com.stimulsoft.report.engine.engineV2.StiRenderProviderV2.Render(StiRenderProviderV2.java:124)
at com.stimulsoft.report.engine.engineV2.builders.StiReportV2Builder.RenderSingleReport(StiReportV2Builder.java:64)
at com.stimulsoft.report.StiReport.RenderReport(StiReport.java:1939)
at com.stimulsoft.report.StiReport.Render(StiReport.java:1840)
at com.stimulsoft.report.StiReport.Render(StiReport.java:1775)
at com.stimulsoft.report.StiReport.Render(StiReport.java:1765)
at my.servlet.ApplicationInitializer.doGet(ApplicationInitializer.java:167)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: com.stimulsoft.base.exception.StiException: StiJDBCDatabase [connectionString=host=localhost;port=3306;database=***;user=***;password=***;, promptUserNameAndPassword=false, url=jdbc:mysql://localhost:3306/***, user=***, password=***, driver=com.mysql.jdbc.Driver, other={}]
at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.connect(StiJDBCDatabase.java:245)
at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.connect(StiJDBCDatabase.java:229)
at com.stimulsoft.report.dictionary.dataSources.StiDataStoreSource.connect(StiDataStoreSource.java:92)
at com.stimulsoft.report.dictionary.dataSources.StiDataSourcesCollection.connect(StiDataSourcesCollection.java:82)
at com.stimulsoft.report.dictionary.StiDictionary.connect(StiDictionary.java:1216)
... 22 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Parser error: The name '{0}' does not exist in the current context, spzSID, , ,
at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.fillTable(StiJDBCDatabase.java:260)
at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.connect(StiJDBCDatabase.java:242)
... 26 more
Caused by: java.lang.RuntimeException: Parser error: The name '{0}' does not exist in the current context, spzSID, , ,
at com.stimulsoft.report.engine.parser.StiParser.ThrowError(StiParser.java:824)
at com.stimulsoft.report.engine.parser.StiParser.ThrowError(StiParser.java:808)
at com.stimulsoft.report.engine.parser.StiParser.postProcessTokensList(StiParser.java:1121)
at com.stimulsoft.report.engine.parser.StiParser.MakeTokensList(StiParser.java:1148)
at com.stimulsoft.report.engine.parser.StiParser.ParseToAsm(StiParser.java:2144)
at com.stimulsoft.report.engine.parser.StiParser.ParseTextValue(StiParser.java:2097)
at com.stimulsoft.report.engine.parser.StiParser.ParseTextValue(StiParser.java:2032)
at com.stimulsoft.report.engine.parser.StiParser.ParseTextValue(StiParser.java:2021)
at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.getPreparedStatement(StiJDBCDatabase.java:296)
at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.fillTable(StiJDBCDatabase.java:256)
... 27 more
Re: Генерация pdf на ubuntu 14.04 server
Здравствуйте.
Пришлите пожалуйста нам отчет для анализа.
Пришлите пожалуйста нам отчет для анализа.
lexun писал(а):Это рабочий отчет на PHP:
http://reports.storencash.com/index.php ... E3NTM5In0=
Это тот же отчет c попыткой формирования на Java (на сервере):
http://ec2-54-194-133-188.eu-west-1.com ... =&spzSID=1
Вот точно такой же отчет только без параметров:
http://ec2-54-194-133-188.eu-west-1.com ... =&spzSID=1
Такой же отчет без параметров но экспортированный в HTML:
http://ec2-54-194-133-188.eu-west-1.com ... =&spzSID=1
Тут видна еще проблема с кодировкой, но это следующая задача.
Ошибка формирования отчета с параметром:Код: Выделить всё
java.lang.RuntimeException: com.stimulsoft.base.exception.StiException: StiJDBCDatabase [connectionString=host=localhost;port=3306;database=***;user=***;password=***;, promptUserNameAndPassword=false, url=jdbc:mysql://localhost:3306/***, user=***, password=***, driver=com.mysql.jdbc.Driver, other={}] at com.stimulsoft.report.dictionary.StiDictionary.connect(StiDictionary.java:1218) at com.stimulsoft.report.engine.engineV2.StiRenderProviderV2.ConnectToData(StiRenderProviderV2.java:387) at com.stimulsoft.report.engine.engineV2.StiRenderProviderV2.Render(StiRenderProviderV2.java:124) at com.stimulsoft.report.engine.engineV2.builders.StiReportV2Builder.RenderSingleReport(StiReportV2Builder.java:64) at com.stimulsoft.report.StiReport.RenderReport(StiReport.java:1939) at com.stimulsoft.report.StiReport.Render(StiReport.java:1840) at com.stimulsoft.report.StiReport.Render(StiReport.java:1775) at com.stimulsoft.report.StiReport.Render(StiReport.java:1765) at my.servlet.ApplicationInitializer.doGet(ApplicationInitializer.java:167) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source) Caused by: com.stimulsoft.base.exception.StiException: StiJDBCDatabase [connectionString=host=localhost;port=3306;database=***;user=***;password=***;, promptUserNameAndPassword=false, url=jdbc:mysql://localhost:3306/***, user=***, password=***, driver=com.mysql.jdbc.Driver, other={}] at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.connect(StiJDBCDatabase.java:245) at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.connect(StiJDBCDatabase.java:229) at com.stimulsoft.report.dictionary.dataSources.StiDataStoreSource.connect(StiDataStoreSource.java:92) at com.stimulsoft.report.dictionary.dataSources.StiDataSourcesCollection.connect(StiDataSourcesCollection.java:82) at com.stimulsoft.report.dictionary.StiDictionary.connect(StiDictionary.java:1216) ... 22 more Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Parser error: The name '{0}' does not exist in the current context, spzSID, , , at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.fillTable(StiJDBCDatabase.java:260) at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.connect(StiJDBCDatabase.java:242) ... 26 more Caused by: java.lang.RuntimeException: Parser error: The name '{0}' does not exist in the current context, spzSID, , , at com.stimulsoft.report.engine.parser.StiParser.ThrowError(StiParser.java:824) at com.stimulsoft.report.engine.parser.StiParser.ThrowError(StiParser.java:808) at com.stimulsoft.report.engine.parser.StiParser.postProcessTokensList(StiParser.java:1121) at com.stimulsoft.report.engine.parser.StiParser.MakeTokensList(StiParser.java:1148) at com.stimulsoft.report.engine.parser.StiParser.ParseToAsm(StiParser.java:2144) at com.stimulsoft.report.engine.parser.StiParser.ParseTextValue(StiParser.java:2097) at com.stimulsoft.report.engine.parser.StiParser.ParseTextValue(StiParser.java:2032) at com.stimulsoft.report.engine.parser.StiParser.ParseTextValue(StiParser.java:2021) at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.getPreparedStatement(StiJDBCDatabase.java:296) at com.stimulsoft.report.dictionary.databases.StiJDBCDatabase.fillTable(StiJDBCDatabase.java:256) ... 27 more