Skip to content

Instantly share code, notes, and snippets.

@kjk
Created December 11, 2019 05:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kjk/23710422979e7a7235db96254afd0681 to your computer and use it in GitHub Desktop.
Save kjk/23710422979e7a7235db96254afd0681 to your computer and use it in GitHub Desktop.
sumatra SaveFileAsPDF (made with https://codeeval.dev)
bool ImageEngineImpl::SaveFileAsPDF(const char* pdfFileName, bool includeUserAnnots) {
UNUSED(includeUserAnnots);
bool ok = true;
PdfCreator* c = new PdfCreator();
if (FileName()) {
OwnedData data(file::ReadFile(FileName()));
ok = data.data && c->AddImagePage(data.data, data.size, GetFileDPI());
} else {
auto [data, size] = GetDataFromStream(fileStream, nullptr);
ok = data && c->AddImagePage(data, size, GetFileDPI());
free(data);
}
for (int i = 2; i <= PageCount() && ok; i++) {
ImagePage* page = GetPage(i);
ok = page && c->AddImagePage(page->bmp, GetFileDPI());
DropPage(page);
}
if (ok) {
c->CopyProperties(this);
ok = c->SaveToFile(pdfFileName);
}
delete c;
return ok;
}
bool ImageDirEngineImpl::SaveFileAsPDF(const char* pdfFileName, bool includeUserAnnots) {
UNUSED(includeUserAnnots);
bool ok = true;
PdfCreator* c = new PdfCreator();
for (int i = 1; i <= PageCount() && ok; i++) {
OwnedData data(file::ReadFile(pageFileNames.at(i - 1)));
ok = data.data && c->AddImagePage(data.data, data.size, GetFileDPI());
}
ok = ok && c->SaveToFile(pdfFileName);
delete c;
return ok;
}
bool CbxEngineImpl::SaveFileAsPDF(const char* pdfFileName, bool includeUserAnnots) {
UNUSED(includeUserAnnots);
bool ok = true;
PdfCreator* c = new PdfCreator();
for (int i = 1; i <= PageCount() && ok; i++) {
OwnedData data(GetImageData(i));
ok = data.data && c->AddImagePage(data.data, data.size, GetFileDPI());
}
if (ok) {
c->CopyProperties(this);
ok = c->SaveToFile(pdfFileName);
}
delete c;
return ok;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment