Можно ли использовать Apache FOP для создания PDF-файлов, которые могут препятствовать масштабированию и изменению ориентации PDF-клиентов? - PullRequest
1 голос
/ 13 февраля 2012

Я использую Apache FOP 1.0 для создания некоторых PDF-файлов для клиентов для одного из наших клиентов. распечатка PDF читается сканером позже. К сожалению, сканер не может обрабатывать масштабированные распечатки, поэтому возник вопрос, возможно ли предотвратить масштабирование pdf в pdf-клиенте, чтобы распечатка выполнялась в заранее определенном размере. Я знаю о возможности pdf-шифрования, которое вообще можно было бы использовать для предотвращения печати, но мне нужно несколько другое. Итак, мои вопросы:

  • есть ли способ заставить pdf-клиент распечатать pdf в заданном размере без масштабирования?
  • Можно ли принудительно настроить ориентацию бумаги?
  • это вообще возможно, это можно сделать с помощью Apache FOP?

На самом деле я не думаю, что это возможно, но любая помощь будет принята с благодарностью.

С наилучшими пожеланиями

Тайлер

Ответы [ 2 ]

0 голосов
/ 10 октября 2014

Если вы используете FOP из командной строки, вы можете посмотреть на fop -out list, который представляет список сгенерированных FOP типов mime.См. Также FAQ по FOP для форматов вывода и org.apache.fop.apps.MimeConstants для получения списка форматов вывода, которые можно создавать программно.

Для краткостив этом случае поможет изменение размера, генерирование растрового вывода (например, PNG или TIFF).Например, из командной строки:

fop -xml data.xml -xsl transform.xslt -out "image/tiff" output.tiff

сгенерирует файл TIFF.Используйте "image/png" для PNG-файла и т. Д.

Программно, например:

FopFactory fopFactory = FopFactory.newInstance();
FOUserAgent userAgent = fopFactory.newFOUserAgent();

TransformerFactory factory = org.apache.xalan.processor.TransformerFactoryImpl.newInstance();
Transformer transformer;

OutputStream out = new BufferedOutputStream(pdfOut[0].setBinaryStream(1L));

try {
  Fop fop = fopFactory.newFop(MimeConstants.MIME_PNG /* or MIME_TIFF */, userAgent, out);
  transformer = factory.newTransformer(new StreamSource(xsltIn.getCharacterStream()));
  Source src = new StreamSource(xmlIn.getCharacterStream());
  Result res = new SAXResult(fop.getDefaultHandler());
  transformer.transform(src, res);
} catch ...
0 голосов
/ 14 февраля 2012

Вы не можете контролировать способ, которым приложение для просмотра печатает или отображает PDF. Лучшее, что вы можете сделать, это прикрепить словарь ViewerPreferences (раздел 12.2 ISO 32000: 2008), но это всего лишь подсказка для зрителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...