Добавление внешнего содержимого PDF, созданного из SVG с использованием Apache Batik, в Source PDF с использованием Itext с верхним и нижним колонтитулами - PullRequest
0 голосов
/ 03 июня 2019

У меня есть следующие требования.

  • Конвертирование SVG в PDF с использованием Apache batik
  • Подготовка исходного PDF-документа с помощью верхнего и нижнего колонтитула с использованием IText 7
  • Возьмите преобразованный PDF-файл и вставьте его в содержимоеиз исходного PDF

Я видел, что IText поддерживает преобразование SVG в изображение, но вывод неправильный.Вывод с батика кажется идеальным.

Ниже мой код.Может ли кто-нибудь предложить правильный подход?Я не могу этого добиться

SVG в PDF с использованием батика

FileInputStream inputStream = new FileInputStream(new File(Paths.get("Input").toAbsolutePath()+"/test.svg"));
               byte[] bytes = IOUtils.toByteArray(inputStream);
               FileOutputStream pdfOutputStream = new FileOutputStream(new File(Paths.get("Output").toAbsolutePath()+"/convertedSvg.pdf"));
               Transcoder transcoder = new PDFTranscoder();
               TranscoderInput transcoderInput = new TranscoderInput(new ByteArrayInputStream(bytes));
               TranscoderOutput transcoderOutput = new TranscoderOutput(pdfOutputStream);
               int dpi = 300;
               transcoder.addTranscodingHint(PDFTranscoder.KEY_WIDTH, new Float(dpi * 29.7));
               transcoder.addTranscodingHint(PDFTranscoder.KEY_HEIGHT, new Float(dpi * 42.0));
               transcoder.addTranscodingHint(PDFTranscoder.KEY_PIXEL_UNIT_TO_MILLIMETER,(25.4f / 72f));
               transcoder.transcode(transcoderInput, transcoderOutput);

iText Code

PdfWriter writer = new PdfWriter(new FileOutputStream(new File(Paths.get("Output").toAbsolutePath()+"/final.pdf")));
PdfDocument pdfDoc = new PdfDocument(writer);    
pdfDoc.setDefaultPageSize(PageSize.A3.rotate());
NormalPageHeader headerHandler = new NormalPageHeader(Paths.get("images").toAbsolutePath() + "\\logo.png", pdfFontMap);
pdfDoc.addEventHandler(PdfDocumentEvent.START_PAGE, headerHandler);
PageEndEvent pageEndEvent = new PageEndEvent(Paths.get("images").toAbsolutePath() + "\\FooterLineExternal.png" ,pdfFontMap);
pdfDoc.addEventHandler(PdfDocumentEvent.END_PAGE, pageEndEvent);
Document doc = new Document(pdfDoc);
doc.getPageEffectiveArea(PageSize.A3.rotate());
Table imageTable = new Table(1);
imageTable.setBorder(Border.NO_BORDER);
imageTable.setWidth(UnitValue.createPercentValue(100));
Cell cell = new Cell();
Paragraph paragraph = new Paragraph("Horizontal Trajectory");
paragraph.setVerticalAlignment(VerticalAlignment.TOP);
cell.add(paragraph);
cell.setBorder(Border.NO_BORDER);
cell.setPaddingTop(50);
imageTable.addCell(cell);
doc.add(imageTable);
doc.close();
...