Страница 1 из 2
Генерация pdf на ubuntu 14.04 server
Добавлено: 31 окт 2014, 10:04
muzuro
Здравствуйте, при генерации отчёта на серверной убунте(без графических пакетов) некорректно отображаються шрифты любого элемента(см вложение).
Есть предположение что для корректно генерации нужны какието дополнительные пакеты(пробовали на десктопной - там вроде генерились). Подскажите в этом ли причина, и какие пакеты нужно поставить, чтоб отображалось корректно?
Re: Генерация pdf на ubuntu 14.04 server
Добавлено: 31 окт 2014, 15:40
HighAley
Здравствуйте.
В PDF задаётся ширина каждого символа, которая возвращается системой на основе данных из файлы шрифта.
Похоже, что проблема в отсутствии необходимых шрифтов с кириллицей.
Экспортируйте отчёт в PDF с включенной опцией Embedded Fonts и пришлите его нами для анализа.
Спасибо.
Re: Генерация pdf на ubuntu 14.04 server
Добавлено: 24 дек 2014, 17:46
lexun
muzuro писал(а):Здравствуйте, при генерации отчёта на серверной убунте(без графических пакетов) некорректно отображаються шрифты любого элемента(см вложение).
Есть предположение что для корректно генерации нужны какието дополнительные пакеты(пробовали на десктопной - там вроде генерились). Подскажите в этом ли причина, и какие пакеты нужно поставить, чтоб отображалось корректно?
Прошу прощения за офтоп, у меня задача в общем схожая с вашей - генерация отчетов на стороне сервера. Мы выбрали изначально продукт Stimulsoft Reports.Fx for PHP, и уже разработали шаблоны документов, но эта версия идет только с клиентским генератором и теперь приходится разбираться как сделать на Java. К сожалению опыта разработки на Java совсем нет, и постоянно возникают трудности связанные с этим.
Вопрос собственно в следующем - не могли бы вы поделится пилотным проектом который бы показал как и что подключать чтобы реализовать генерацию отчета по заданному шаблону mrt c возвратом pdf(например) документа.
Заранее благодарен.
Re: Генерация pdf на ubuntu 14.04 server
Добавлено: 26 дек 2014, 15:54
Aleksey
Здравствуйте,
Пожалуйста, посмотрите следующие разделы в нашей документации:
http://www.stimulsoft.com/ru/documentat ... eports.htm
http://www.stimulsoft.com/ru/documentat ... t_code.htm
Дайте знать если возникнут вопросы.
Спасибо.
Re: Генерация pdf на ubuntu 14.04 server
Добавлено: 31 дек 2014, 17:16
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
Добавлено: 05 янв 2015, 10:25
Vadim
Здравствуйте.
Вам нужно в отчете создать переменную (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
Добавлено: 05 янв 2015, 12:27
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
Добавлено: 05 янв 2015, 13:40
Vadim
Здравствуйте.
Вы можете использовать следующий пример кода:
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
Добавлено: 05 янв 2015, 14:33
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
Re: Генерация pdf на ubuntu 14.04 server
Добавлено: 05 янв 2015, 15:00
Vadim
Здравствуйте.
Пришлите пожалуйста нам отчет для анализа.
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