Avatar billede mercutio Nybegynder
16. september 2004 - 13:39 Der er 19 kommentarer og
1 løsning

to byte[] med pdf i skal samles til en byte[] hvordan?

Hejsa.
Jeg har ved hjælp af Jasper fået dannet to pdf filer, jeg har dem i byte arrays begge to og jeg skal have dem samlet i et byte[] så jeg kan få dem skrevet ud til browseren med response.write.
Hvordan gør jeg det?
Avatar billede arne_v Ekspert
16. september 2004 - 13:44 #1
Umiddelbart vil jeg tro at du new'er et byte array med den kombinerede størrelse
og så bruger System.arraycopy til at flytte dataene fra de to små til den ene store.
Avatar billede mercutio Nybegynder
16. september 2004 - 14:09 #2
Hmm det lyder jo næsten for simpelt =) men jeg prøver.
Avatar billede mercutio Nybegynder
16. september 2004 - 14:46 #3
Det lader til jeg kun får det aller første pdf document at se...
Avatar billede mercutio Nybegynder
16. september 2004 - 14:52 #4
Jeps det er somom browseren tror at pdffilen slutter når den har modtaget den første del af byte arrayet som indeholder den første pdf.
Avatar billede arne_v Ekspert
16. september 2004 - 15:20 #5
Åh.

Ja - du kan næppe konkatanere 2 kompletet PDF dokumenter på den måde.

Det skal gøre spå PDF niveau og ikk epå byte niveau.
Avatar billede mercutio Nybegynder
16. september 2004 - 15:22 #6
Ok. Hvis du kan give mig et eksempel så ville jeg da blive temlig glad.
Avatar billede mercutio Nybegynder
16. september 2004 - 16:06 #7
Bare et lille eksempel =) eller et sted hvor jeg kan læse om hvordan man gør?
Avatar billede arne_v Ekspert
16. september 2004 - 16:07 #8
Jeg er bange for at at man er nødt til at parse PDF'en og splejse det logiske
indhold sammen og så konvertere til streng/bytes igen.
Avatar billede mercutio Nybegynder
16. september 2004 - 16:11 #9
Det lyder besværligt...
Avatar billede mercutio Nybegynder
16. september 2004 - 16:24 #10
Det lyder meget langhåret. Jeg har et eksempel hvor jeg kan samle filerne på disken som jeg kan bruge. Men jeg har bare ikke nogen grund til at gemme filerne på disken ud over at de skal merges så det er jeg selvfølgelig helst fri for men det afhænger lidt af hvor langhåret det bliver det her med at parse pdf filer...
Avatar billede arne_v Ekspert
16. september 2004 - 16:34 #11
Hvordan ville du merge dem hvis de var på disk ?
Avatar billede mercutio Nybegynder
16. september 2004 - 16:44 #12
private com.lowagie.text.Document document = null;
private PdfWriter writer = null;
private PdfContentByte cb = null;


private void addToPDFDocument(byte[] bytes, String outFile)
{
  try {
  int f = 0;
  // Dan reader til PDF datastrømmen
  PdfReader reader = new PdfReader(bytes);

  // resolve antal sider
  int n = reader.getNumberOfPages();
  Rectangle psize = reader.getPageSize(1);


  if (document == null) {
  // step 1: Opret samledokument
  document = new com.lowagie.text.Document(reader.getPageSizeWithRotation(1));
  // step 2: Opret writer der skriver til samledokument
  writer = PdfWriter.getInstance(document, new FileOutputStream(outFile));
  // step 3: Åben dokument så vi kan skrive
  document.open();
  // step 4: Klargør til direct content
  cb = writer.getDirectContent();
}
  // step 4: we add content
  PdfImportedPage page;
  for (int i = 0; i < n;) {
                document.newPage();
                ++i;
                page = writer.getImportedPage(reader, i);
                cb.addTemplate(page, 0, 0);
            }
       
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Avatar billede arne_v Ekspert
16. september 2004 - 16:51 #13
Det gør jo stort set det jeg snakker om !

Prøv og erstat

writer = PdfWriter.getInstance(document, new FileOutputStream(outFile));

med

ByteArrayOutputStream baos = new ByteArrayOutputStream();
writer = PdfWriter.getInstance(document, baos);

og hent med ba.getBytes()

[utestet !]
Avatar billede mercutio Nybegynder
16. september 2004 - 17:07 #14
baos.toByteArray() returnerer 0 bytes. Den ser ud til at være tom...
Avatar billede mercutio Nybegynder
16. september 2004 - 23:09 #15
glem det. Jeg glemte document.close()
Nu virker det med ovenstående rettelser =)
Avatar billede mercutio Nybegynder
16. september 2004 - 23:09 #16
Vil du lige lave et svar så du kan få points.
Avatar billede arne_v Ekspert
16. september 2004 - 23:14 #17
svar
Avatar billede mercutio Nybegynder
16. september 2004 - 23:17 #18
er du fuldtidsansat af eksperten?
Avatar billede arne_v Ekspert
17. september 2004 - 07:12 #19
No.

Men jeg bruger en del tid her.
Avatar billede mercutio Nybegynder
17. september 2004 - 10:44 #20
En god måde at holde sig skarp på =) du er ihvertfald en stor hjælp til mit arbejde.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester