hello
Can I import one PDF file at the end of the other using wxPdfDocument?
Thnk you
wxPdfDocument joining 2 PDF files. Is it possible?
Re: wxPdfDocument joining 2 PDF files. Is it possible?
No. From conversation in this issue:
wxPdfDocument is a component for generating PDF documents. It is not a component for parsing, displaying or printing PDF documents.
Re: wxPdfDocument joining 2 PDF files. Is it possible?
This is not completely true.
The mentioned issue is related to printing and previewing a PDF file. This is indeed not possible to do with wxPdfDocument.
However, wxPdfDocument allows to extract complete pages from existing PDF files and to insert them into new PDF documents. One of the samples coming with wxPdfDocument shows how to do it (see external templates).
Regards,
Ulrich
Re: wxPdfDocument joining 2 PDF files. Is it possible?
Oh, great, I didn't know about that.
@cutecode ,sorry for inaccuracy, I should've taken a look on samples more carefully
Re: wxPdfDocument joining 2 PDF files. Is it possible?
hello, I looked at templates.cpp file before posting.
There are only 2 example functions templates1() and templates2()
and both functions only open PDF file, add new page and then draw some image/text on new page.
Could you, please, give some hint?
There are only 2 example functions templates1() and templates2()
and both functions only open PDF file, add new page and then draw some image/text on new page.
Could you, please, give some hint?
Re: wxPdfDocument joining 2 PDF files. Is it possible?
Function templates2() extracts a page from an existing PDF file and places it on a page of the new PDF document.
Method SetSourceFile selects the existing PDF file from which pages will be extracted later on. You can extract pages from more than one PDF file, but only one such PDF file is the current one. Method SetSourceFile returns the number of pages the associated PDF file has.
Method ImportPage extracts a page from the current PDF source and returns the number of the template created from the imported page.
Method GetTemplateBBox allows to determine the bounding box the imported page. This information can then be used to place the template on a new page using method UseTemplate.
Whether these methods are suited to fulfill the task you have in mind, depends on the actual demands of your application. The template mechanism of wxPdfDocument works well for small to medium numbers of imported pages, but it is certainly not the best option for mass import of hundredths of pages.
If you only want to take several existing PDF files and use certain pages from each of them, combining them in a new order, there exist dedicated tools which are better suited for this kind of job.
Re: wxPdfDocument joining 2 PDF files. Is it possible?
thank you, I skoped to join 2 PDF files
Code: Select all
bool join_pdfs(LPCTSTR lpsz1, LPCTSTR lpszOut)
{
int tpl;
wxPdfDocument pdf1;
pdf1.SetCreationDate(wxDateTime(1, wxDateTime::Jan, 2017));
pdf1.SetCompression(true);
int pages1 = pdf1.SetSourceFile(lpszOut);
for (int i = 1; i <= pages1; i++)
{
double width = 0, height = 0;
tpl = pdf1.ImportPage(i, wxPDF_PAGEBOX_MEDIABOX);
pdf1.GetTemplateSize(tpl, width, height);
if (height > width)
pdf1.AddPage(wxPORTRAIT, width, height);
else
pdf1.AddPage(wxLANDSCAPE, height, width);
pdf1.UseTemplate(tpl, 0, 0);
}
pdf1.Close();
int pages2 = pdf1.SetSourceFile(lpsz1);
for (int i = 1; i <= pages2; i++)
{
double width = 0, height = 0;
tpl = pdf1.ImportPage(i, wxPDF_PAGEBOX_MEDIABOX);
pdf1.GetTemplateSize(tpl, width, height);
if (height > width)
pdf1.AddPage(wxPORTRAIT, width, height);
else
pdf1.AddPage(wxLANDSCAPE, height, width);
pdf1.UseTemplate(tpl, 0, 0);
}
pdf1.SaveAsFile(lpszOut);
return true;
}